Maのエッセイへ

本当はFreeBSDでなくてもよかったんだけど……。


 MS-DOSはそれほどでもなかったんだけど、windowsは嫌い。windows使うくらいなら最初からMac使う方がいい。Macったって今のMacは嫌い。Macは1種類しかなくて、何本かのコードをつないで電気を入れるだけで使えたのがいいのであって、いろいろ種類があったりコードを何本もつないだり、つながなくてもいいかわりに図体がやたらでかかったり、いろいろ設定しなきゃならないのであれば、別にMacでなくてもいい。AppleIIcはいいけど動かないから修理に出さないといけない。Tronは1Bのころのかな漢字変換が馬鹿で使い物にならなかったし、B-right/VになってVJE採用したってんで試してみたけど、カスタマイズできないから(あたしはスペースバーで変換したいんだよ。あの小さい変換キーで変換したくないんだよ。)使い勝手は悪いまま。結局楽しかったのはApple DOSとminixとNews-OSだったね。NEWS-OSは出てきたけど、あれはNEWS-1250が好きだったからって要因の方が大きい。UNIXだってけっして好きではないのよ。特に最近のUNIXはインストールは簡単かもしれないけど、やたらたんすの肥やしが多くて結局図体がでかくて好きになれない。(あとでわかるけど……なんでemacs動かすのにXのライブラリが必要なんだ?)

 プログラムを書きたいんだよ。あたしは。別に窓はいらないから。emacsをコマンドラインで動かしてな〜にが悪いんだ〜?

 で、この欲求を満たすためには、今は大きく分けて2つの方法論があるわけさ。
 1つはwindowsにそういうプログラミング環境を載せてしまうやり方。私は最初これでやっているし、一番パワフルな機械には今もその環境が残っています。具体的に何をのせればいいかといえば、例えばcygwinをのせてしまえば、今では「このUNIX特有の機能を使った部分はどうしてもwindowsでは再現できない」っていくつかの部分をのぞけば全てのUNIXのプログラムが動いてしまいます。今は商売にならないんで入手が困難だと思うけどアスキーから出ていたBSD on Windowsもねらいは一緒。専用のwindowを作っちゃったあたりはいわゆるdos窓で作業するcygwinよりもすごいかもしれません。またGNU Software for MS-Windows and MS-DOSは、専用のdllを用意したcygwin式ではなく、直裁にいろんなコマンドをwindows用に移植しています。この違いはどこに出るかというとcygwinだとbashなどのシェルを動かした上でないとそのほかのコマンドが実行できないんだけど、GNU式だとMS-DOSプロンプトからいきなり動いてしまう。command.comでおっけーってことなんだね、どっちがいいかってえのはあると思うけど、両方インストールして違いを楽しめばいいやん。当然UNIXを再現しようってことでなくても可。MIT-Scheme、Active Perl、ruby、JDKみたいな無料の処理系をインストールしてもいいし、Borland C++、Delphiのような有料の処理系をインストールしてもいい。特にC++やDelphiは、exe形式の実行ファイルを作成してくれるから、ほかのwindows機でもその実行ファイルだけ持っていけばいいというメリットもあったわけさ。(cygwinとかGNU SoftwareでもCで書いてコンパイルすれば実は同じなんだけどね。ただ油断しているとcygwinの場合、うっかりdllを必要とするプログラムを書いちゃうと、使えないことになっちゃう。)emacsもwindows用がございます。
 だけどね……。例えばCのプログラムならlintかけてからmakeで作りたいわけさ。emacsでM-x shellでシェルを呼び出してさ。専用エディタってえか統合開発環境とやらでマウスで一発というのではなく……。それにwindowsでのプログラムの場合いわゆるdos窓を使わないとなると、window1つ開くにもwindowsAPI関数をおさえなきゃならないんだけど……。これがまた私には難解。どうにも見通しが立たないのねん。
 というのでもう1つのやり方。freeなUNIXをインストールしてしまうやり方に行こうというのが今回の試み。おそらく他のサイトの方法論と違うところは「X-window」を動かすつもりが毛頭ないってところとカーネルの再構築をしないって点。コマンドラインでコマンドをたたきこんで動くプログラムを作れればいいと割り切っちゃっているから、emacsとそういう言語処理系が入って、できれば日本語の入力と表示ができればいいという方針。あとはいらないのさ。ゆえにLINUXかBSDかってえのもどっちでもよかったわけで、なんとなくBSDに親近感を持ったから今回はBSDというだけのこと……。

 それではさっそく行ってみようか。


 当然のことながら機械がないとはじまりません。というので機械を調達します。
 ここで多いのは普段windowsを使っている機械にFreeBSDもインストールしようってことなんですが……。そういうのに挑戦される方は書籍とか別のサイトを参照していただいて……。
 あたしは3万円程度出して中古のノート機を1台買っちゃう策をお勧めしたりする。(かたよっているなあ……。)1台しかなくてそれをそれなりに使っている状態で、もしインストールに失敗したらどうするつもり?……まあ模範解答としては「バックアップをとっておく」で、それはそれで正解なんだけど……。バックアップの手間、時間をお金に換算したら……。別個1台用意してしまうというのはありなしで言ったらありだと思うなあ……。
 というので、ここでは中古ノート機を1台用意してしまうという前提で進みます。そしてwindowsと同居なんて考えないで、硬派にFreeBSDだけ入れよう……という形で進むけど、実際の私の機械にはwindowsが同居していることはみんなには内緒だ……。
 ……実はFreeBSDしか入れてない状況でかな漢字変換をSKKに頼っていたら……。どうもSKKに慣れなくて、書いた文章もしっくりこないので、慣れるまでの間、文章を書くためだけにwindows入れてメモ帳にvjeで書いているのでありました。


 次に何がなんでもFreeBSDのファイルを調達しなければなりません。で、一番お手軽なのはCD-ROMを入手することでしょう。(他にもやり方はありますが、それは省略。)
 で、そのCD-ROMを入手するにもいろいろやり方はありまして、FreeBSDの解説書の多くに付録としてついてきますし、UNIX系の雑誌にも付録としてついてくることがあります。またレーザーファイブ株式会社では4.5だと12枚のCDをつけて本体定価9800円で販売しております。今回私はこの市販の12枚セットを買いましたが、別にこれである必然性はないでしょう。というのはFreeBSD本体のインストールに使われるのは12枚のうちの1枚だけで、残り11枚は、後で追加することができるパッケージ群だからです。もしかしたら言語処理系のいくつかは、雑誌付録だとか解説書付録にはついてないかもしれませんが、それは別途調達することが可能です。……実はそういう付録のものでインストールを試みたんだけど、コンソールベースで漢字が使えなかったりemacsが使えなかったりしたので、それに嫌気がさして12枚セットを買ったのでした……。結果としては大正解。
 というのでFreeBSDのファイルを調達しましょう。


 次はインストール用フロッピーディスクの作成……。でもいまやほとんどの人はその必要がないかもしれません。昔はCDからブートすることができなかったので起動用、インストール用のフロッピーディスクを作ることが当たり前だったのですが……。いまやCDから起動することができまして……。そういう機械を使っている方はこの項を飛ばしてください。
 さて、そうでない方。新品のフロッピーディスクを2枚用意してください。そしてwindowsの動いている機械でFreeBSDの1枚目のCDから所定のプログラムを動かすというもの。仮にCDの入っているドライブをD:、フロッピーディスクの入っているドライブをA:としたら、windowsのコマンドプロンプトを出して、
d:\tools\rawrite.exe d:\floppies\kern_ja.flp
を、
終わったら2枚目に入れ換えて
d:\tools\rawrite.exe d:\floppies\mfsroot_ja.flp
を実行しますと2枚のインストール用フロッピーディスクが完成。
間違えないように1枚目には「FreeBSDインストールディスク1枚目(カーネル)」2枚目には「FreeBSDインストールディスク2枚目(root)」とでも書いておきましょう。


 さてインストールディスクができたところで、1枚目を入れてリセットしましょう。(CDブートが可能ならCDの1枚目を入れてリセットね。)そうするとインストールプログラムが動き始めます。画面に英語で2枚目を入れろっぽい表示が出たら入れ換えて……。
 あとは基本的に選択していくだけで終わってしまうのだ……。選択肢が多いってことを除けばwindowsのインストールとあまり変わらないかもしれない……。

 というので具体的な選択肢を選んでいきましょう。
(注意)
 この選択はきわめて個人的でしかも偏っています。
 でも偏っていることがわかるなら、このサイトを読む必要はないわな(笑)
 あとで振り返ってみて「なるほど偏っているな」と理解してくださいませ。
(2003年6月15日の追加)
 sj3を使えるようにしました。
 だけどスペース変換ができない……。(泣)

Kernel Configuration Menu
Skip kernel configuration and continue with installationを選ぶ
FreeBSD sysinstall - Localization Menu
Japaneseを選んでその後日本語にしておいた方が楽だと思うど。

当然その他の言語の方が得意な人はそれを選ぶとよろし。
以下は日本語ということで
インストールにPCカードデバイスを使用していますか
noを選択。CD-ROMからインストールしているはずだもん。これ読みながらってことは。
/stand/sysinstall メインメニュー
standard 標準インストールを選択。
ハードディスク選択メニュー
全部をFreeBSDに使うので「A」を選択したあと「Q」で終了。

他のOSとの共存をはかる場合には、ここで適切な作業をする必要があります。
BootMgr FreeBSD ブートマネージャをインストール
ブートマネージャーはインストールしなくてよいのでした。

他のOSとの共存をはかる場合には、ここでも適切な作業が必要。
FreeBSDディスクラベルエディタ
完全おまかせ〜で「A」「Q」の順
配布ファイルを選択してください
ここが偏りの極限のところでして、

「minimal」を選び、
その後でcustomで自分で選択するというのを選び
Xfree86のbasicでbin クライアントアプリケーションと共有ライブラリーだけ追加します。
なんでこの作業が必要かというと、Xを使わない場合でもemacsがなぜかXのライブラリーの一部を要求するんですよ。なんでしかたないので加えておく……。
(余談)
昔NEWS-1250にNemacsインストールした時はX関係を消したあとだったのに動いていました……。
インストールメディアの選択
CD/DVDを選択
「本当にインストールしますか」
もちろん!

 おめでとうメッセージが出たら最終設定です。
 これまた偏ってみる……。
イーサネット、あるいは SLIP/PPP ネットワークの設定を行いますか?
NO
このマシンをネットワークゲートウェイにしますか
NO
Inetdと単純なインターネットサービスの設定を行いますか
NO
このマシンをNFSサーバーとして設定しますか
NO
このマシンをNFSクライアントとして設定しますか
NO
デフォルトのシステムセキュリティ設定
Medium
システムコンソールの設定を行いますか
YES
システムコンソールキーマップ
Japanese 106
タイムゾーンの設定を今行いますか
Yes
このマシンのCMOSクロックをUTCに合わせた状態で使用しますか
YESを選んで時計自体はUTCに合わせておくこと(=日本時間−9時間)

清く正しきワークステーションは世界標準時なのだ。
タイムゾーン選択
アジア 日本の順
省略形
JTにしたいかもしれないけどJSTにしておく
LINUXバイナリ互換機能を有効にする
YES
マウスの設定……このシステムはUSBマウスが接続されていますか?
このノート機はUSBマウスではないのでNO

そうするとマウス設定画面にうつります。
マウスポートの選択でたいていはPS/2を選択
マウスプロトコルでそれっぽいのを選択
マウスデーモンのテスト有効化でテストできなくてもYESを選択
最後にX Exitで終了
ちなみにここはおざなりで可です。
なんたってマウスを使うつもりがない……。
Xサーバの設定を今すぐに行いますか?
NO Xは使わないので。
パッケージ選択
NO あとでまとめてやるから。
システムに最初のユーザーアカウントを追加しますか?
YES

ログインID……自分のアカウント名を適宜つける……きちんと覚えておくように
UID……そのままで可
グループ……そのままで可
パスワード……適当につけるけどきちんと覚えておくように……昔はなくてもよかったんだけどなあ……
フルネーム……適当に入れる。なくても可。&の後に半角空白1個がかっこいいかも
メンバグループ……wheel……これがないとsuで作業できないから必須
ホームディレクトリ……そのままで可
ログインシェル……shをcshに変えましょう
okで終了しさらにX Exitで終了
システム管理者のパスワード設定
OK 適当につけていいけどきちんと覚えておくように
残りの設定を行うために、一般設定メニューに移動しますか
NO
X Exit
X 導入終了
……これで再起動ね

 普段の運用は、さっき設定したユーザーアカウントで動かし、まずまっさきに kon で日本語を表示するようにする。その後 sj3serv と打ってsj3serverを動かし(自動化できればスマートだな。)、日本語を打ちたければ sj3 と打ち、必要に応じてsuと打ってパスワードを入力しrootになって、その必要がなくなった時点でexitで戻るってことでいいと思います。ちなみに電源を落とすときはやり方がわからないのでsuでrootになり、shutdown -h nowのあと、reboot可能になった旨の表示が出た時に電源を切っています。(スマートさに欠ける〜。)


 ソフトのインストールは私はもっぱらパッケージを使っています。……これはwindowsより格段に便利。
 基本定石は……

konを終わらせる
suでrootになる
必要なCD−ROMを入れる
/stand/sysinstall
言語を選ぶ
……まあ日本語だね
Configure インストール後の FreeBSD の設定を行う
パッケージ FreeBSD 用にパッケージ化されたソフトのインストール
1 CD/DVDを選択
必要なソフトを選択
インストール
しばらく待つ
X Exit このメニューを終了
導入終了を選ぶ
さて私のインストールしたパッケージは次のとおり
disk 1
japanese
ja-emcws-20.7_1
x11
XFree86-libraries-4.1.0_1
……konをsjis環境にした時にエラーが出るのとemacsを動かす時に /usr/X11R6/lib/X11/locale/locale.alias がないって叱られるのとの両方を防ぐためです。
……なんかエレガントな方法がありそうだよな〜。
  もしかしたらインストールの時のXのファイルのインストールがこれで不要なのかもしれないし……。
 (でもemacs -nwで起動してもダメだったし……。)
disk 2
emulators
ja-mtools-3.9.6
japanese
ja-kon2-16dot-0.3
ja-man1.1j_4
ja-man-doc-4.5
ja-msdofs-20001027
ja-nkf-1.92_1
ja-sj3-2.0.1.20_1
ja-skk-elisp-emacs20-10.62a
lang
ruby-1.6.6
shells
bash-1.14.7
disk 6
java
jdk-1.1.8
disk 9
lang
clisp-2.27
mit-scheme-7.6.0
perl-5.6.1_1
slisp-1.2
sxm-1.1
たぶん専門の人が見れば目をむくようなことをやっているんだろうけど、まあこれでも動いているんだから勘弁してたもれということで……ごめんなさい。

さてこれだけじゃ動かないソフトもあるのでいろいろいじって動かしましょう。
1 emacs
 実は上のようにインストールするとemacsはcanna、wnn、sj3対応のemcwsと対応してないemacsの両方がインストールされます。で、非対応emacsはskkを選択すると自動的にインストールされちゃうところ、emcwsでskkも使えるので、emcwsだけ使うことにします。
  /usr/local/bin に移動してそこにある emacs を emacs.old に、emcws を emacs に変えます。
 具体的には、
 cd /usr/local/bin
 mv emacs emacs.old
 cp emcws emacs
 これで emacs でemcwsが起動され、sj3も使えるはずだし(まだ試してない)skkも使える(こっちは確認した)。
2 .emacs
 emacsに詳しい人に聞くなり本を読むなりして調整しましょう。
 ちなみに私の調整は今のところ次のとおり。
(1) おれはemacsのバックアップファイルはいらないんだ〜!
 (setq make-backup-files nil)
  ……もっともこれやらない方がいいと思うよ。
    たくさん発生する~なファイルを定期的に削ればいいだけだもん。
(2) BackSpaceキーで1字削除したいんだ〜! 
 (define-key global-map "\C-h" 'backward-delete-char)
 (global-set-key "\C-h" 'backward-delete-char)
  ……BSでBackSpaceできないのは精神衛生上よくない……。
(3) 私はSjisが好きだ〜だってsony NEWSで育ったんだから〜!
 (set-default-coding-systems 'sjis)
 (set-terminal-coding-system 'sjis)
 (set-keyboard-coding-system 'sjis)
 (set-buffer-file-coding-system 'sjis)
(4) skkを使うぞ〜!
 (require 'skk-autoloads)
 (global-set-key "\C-x\C-j" 'skk-mode)
 (global-set-key "\C-xj" 'skk-auto-fill-mode)
 (global-set-key "\C-xt" 'skk-tutorial)
 (setq skk-large-jisyo "/usr/local/share/skk/SKK-JISYO.L")
 (skk-mode)
3 kon
 /usr/local/etc に移動して kon.cfg をエディタで開いてください。
 まず大画面にする方ですが冒頭の方に # Display definition というところがあるので、その中で
 Stealth: とありますから、その後に Normal と書き込んで「Stealth: Normal」とし、たぶんVGAの後にあるだろう Normal を消しちゃってください。
 次にsjisの表示ですがこれは最後の方に # Coding というところがあるので、その中で ja_JP.sjis: とあるので、その後に Coding と書き込んで「ja_JP.sjis: Coding」とし、たぶんja_JP.ujisの後にあるだろう Coding を消しちゃってください。
4 .cshrc
 エディターで開いて適当な場所に
 setenv LANG ja_JP.SJIS
 という行を書き足してください。
5 perl5.6
 perl5.005が標準で動いていますし、パッケージで5.6をインストールしただけでは、状況が変わりません。これは先に /usr/bin/perlが先に動くからで、これをひっかからないようにすればいいという……。そこで /usr/bin/perl を /usr/bin/perl.old に変えればおっけー。
 cd /usr/bin
 mv perl perl.old
6 java
 javaとかjavacのある /usr/local/jdk1.1.8/bin にパスを通してください。
 .cshrcをエディターで開いて set path = ではじまる行の適当なところ(/usr/local/bin の後なんてどう?)に /usr/local/jdk1.1.8/bin を加えてください。空白区切りだから前後にスペースを入れるのを忘れないように。

Maのエッセイへ