■ 最初の起動。
起動する前にMacOS側で最低限の設定をしておかなくてはならない。
これらはパラメータRAMをクリアすると失われるものもあるので、そう行った場合は再度設定し直さなくてはならないだろう。
それからBooterを起ち上げる。
Booterで設定するのは起動するkernelのあるSCSIIDを指定するだけ。少し前のBooterではいろいろ設定項目があったようだが、今ではモニタ解像度から、標準時刻からの時差、機種IDやメモリ容量まで勝手に設定してくれている。もしも外付けディスクからの起動でなければ何も設定しなくてもいいはずだ。私の場合はID2に設定。Boot Nowを選択するとディフォルトのままですんなり起動した。
■ UNIXって?
真っ白の画面に飾りっ気の無い黒い文字が流れ出る。「おおっ!こ、これがUNIXなのかぁ~!」感動するのは後回し。どうやって操作するのかわからないまま、トラックパッドをまさぐるが、ポインタもキャレットはどこにもないから意味はない。文字列の一番最後の部分に黒く一文字文空白がある。どうやらここがカーソル(入力位置)のようだ。ここからOSに対し、適切なコマンドを指定することでUNIXは動作するらしい。(遠いむかしに授業でBASIC言語というのをやらされた記憶がよみがえる…)このプロンプトを操作するのがシェル。テキストエディタみたいに思ったがちょっと違う。コマンドを入力し、その結果を表示する対話式の入出力ソフトだ。現在位置の確認からファイル構造の表示、アプリケーションの起動から、システムのコントロールまですべてこのシェルを通して行うのだ。たった一行のコマンドですべての操作を行えるのは合理的だが、シンプルなだけに覚えることは多そうだ。コマンドは一字一句、大文字小文字すら正しくないと「そんなコマンド知らねぇ!」と即答される。コマンド自体も五万とあるのですべて把握はできないかも。
基本的に欧米人が考えただけあってこのてのソフトウエアは英語風にしかも命令形で入力することになっている。(だからcommand「命令」というのだ。)平序文なら「主語+動詞+目的語~」(だっけ…)のような語順になるが、命令形なので「動詞+目的語~」という語順で入力する。たとえば「ファイルAをhomeディレクトリにコピーする」だったら「cp A /home/A」という風に入力するのだ。命令を打ち込んだらリターンキー(エンターキー)を叩く。これが引き金となって命令が実行される。
コマンドの説明はともかく、NetBSDはやはり68LC040上ではまともには動かなかった。公式ホームページ上で説明のあるように「Segmentation fault」というエラーがコマンドを入力する度に発生する。しかし、そんなことは承知の上だ、無視して初期設定を始める。
1)まず、シングルユーザモードで起動している状態から、マルチユーザで起動できるようにする。と書いてある。
# cd /etc
と入力し、ディレクトリをetcに変更。
# vi rc.conf
と入力するとviエディタが起動してrc.confというファイルが編集できる。とは書いてあるが、ファイルシステムがリードオンリー(書き込み不可)だからできない、とくる。そっか、まずファイルを読み書き可能な状態にしなくてはいけない。(エディタの使い方は→ここ)
# mount -a
これですべてのファイルシステムが読み書き可能となる。(ということは、うっかり消去。ということもあるので注意。)
気をとりなおして、再びvi rc.confとやってrc_conf=NOとなっているところを
rc_conf=YES
と修正して保存する。これでシェルを抜けるとマルチユーザモードとなる。
このviと言うのはNetBSDに標準でついているエディタだ。日本語は扱えないが、ソースなどのテキストをコンソール上で編集することができる。この使い方も一癖あるので、少し勉強が必要なのだ。
2)キー配列がASCIIのままでは使いにくいので、これもJIS配列で起動するように設定する。
# cd /etc
とやってetcディレクトリに移動。
# vi wscons.conf
でファイルを開き、
encoding jp
という一行を加えて、保存終了。それから、
# vi rc.conf
をもう一度開き、
wscons=YES
の一行を書き加えて保存、終了。これで再起動後にキー配列がJISになる。
3)扱うネットワークプロトコルを選択。最初に起動した状態ではネットワークの作業が何もできない設定になっているので、
# cd /etc
とやって、
# vi inetd.conf
と開く。ここには現在扱える(はず…)のプロトコルが一覧になっているが、とりあえず、ftpとtelnetと書いてある行の頭の「#」を消して有効にする。これで再起動後に他の端末からネットワーク経由でNetBSDが操作できる。サーバらしくなってきた。
ついでに起動と同時に自動的にIPを取得できるようにdhclientの設定もしておく。
# cd /etc
とやって、
# vi rc.conf
を編集。
dhclient = YES
と、
defaultroute = "192.168.0.1"(ブロードバンドルータのルータアドレス)
の2行を書き加えて保存、終了。これで再起動すると自動的にIPが取得できる。ついでに
# vi /etc/resolv.conf
というファイルをつくって、
nameserver 192.128.0.1(プロバイダのドメインネームサーバアドレス)
と、一行書き加えて保存、終了。これでドメイン名でのネット接続ができるようになる。
4)ネットワーク接続した他の端末から操作するためにユーザ登録をする。外部端末からrootでログインすることはできないので、
# useradd ×××
(ユーザ名)
で適当なユーザをつくる。これはsushiというユーティリティを使うほうが簡単だが、説明が面倒なので省略。
# passwd ×××
とやると、
Old password:
と、一般ユーザでログインした場合は聞かれるはずだが、rootでログインしている場合は出ないので、続く一行に、
New password:×××
Retype new password:×××
とやるとパスワードが登録できる。これで外部からNetBSDが操作できるようになった。ちなみに登録したユーザにはそれぞれ個別に「ホームディレクトリ」というのを作らなければならない。たとえばtelnetなどで他の端末から接続した場合にユーザが最初に置かれるディレクトリがこのホームディレクトリになる。他のディレクトリへの移動は可能だが、自由にファイルが読み書きできるのはこのホームディレクトリ上だけとなるわけだ。ふつうは複数ユーザが存在することを前提としているらしく、/home/×××(ユーザ名)というディレクトリを作るのがナラワシのようだ。もし、登録したユーザ名のホームディレクトリが無ければ、
# mkdir /home/×××
(ユーザ名)
と、やって作っておく。もちろんアクセス権にも配慮しなくてはならない。
■■■スーパーユーザ
外部からネットワーク経由でサーバに接続できるようにはできた。これで普通はネットワークで接続された別の端末からNetBSDを載せたマシン(ホストというらしい)を操作することになる。しかし、今登録した通常のユーザでは外部からシステムの設定などか変更できない。そのためsuという便利なコマンドがある。一般ユーザでログインしながら、suと打ち込んで、ルートパスワード(まだ設定していないが…)を入力すると、すべての操作が行えるスーパーユーザとなれる。全ユーザが利用できるソフトウエアのインストールを行うためには必ずスーパーユーザになって行うそうだ。スーパーユーザはルートとほぼ同じ操作ができるので便利な反面、パスワードの管理が甘ければ見知らぬユーザに自由にシステムを書き換えられる危険もあるということだ。(おーこわ…)
ま、家庭内ネットワークならそんな心配もいらないだろう。とりあえず上記の設定でftpやdhclientなどは動作して、他機種からネットワーク経由でログインし、FTPでファイルの読み書きはできるまでにはできた。
ついでにルートパスワードもこのあたりで設定しておいた方がいいかもしれない。rootでログインしているホストのコンソール上で、
# passwd
とやる。
New password:×××
Retype new password:×××
と、適当なパスワードを叩き込む。(当然のことだが、くれぐれも忘れないように!)これで、ネットワーク上の別の端末からtelnet経由でホストを操作する場合、一般ユーザでログインした後、suコマンドと、rootパスワードを入力すれば、スーパーユーザとしてホスト上のすべての操作が行える。
忘れていたが、NetBSDの再起動、システム終了コマンドは以下の通りだ。いずれもrootまたはスーパーユーザ権限で行う。
# shutdown -r now
# reboot
ここまでは再起動、以下はシステム終了。
# shutdown -h now
# halt
再起動でもシステム終了でもMacOSは再起動してしまう。もしマシンを完全に終了させたい場合は、一旦MacOSを起ち上げて「システム終了」するか、再起動した瞬間にCommand + Opt + Ctrl + Power で強制終了するしかない。
また、シングルユーザモードから、マルチユーザモードへの移行はCtrl + Dとやるか、
# exit
とやって、シェルを抜ける。逆に、マルチユーザモードからシングルユーザモードへの移行は、
# shutdown now
でいつでも切り替えられる。しかし、すでに読み書き可能状態でマウントしたファイルシステムはそのままだ。