原作: Poul-Henning Kamp <phk@FreeBSD.ORG>. v1.1, April 26th.
訳: 中井 幸博 <nakai@mlab.t.u-tokyo.ac.jp>. September 6 1996.
FreeBSDのブートには基本的に3つの段階があります: カーネルの読み込み, ルートのファイルシステムの決定, そして ユーザ領域にあるものの初期化です. このことは下に述べる いくつかの興味深い可能性につながっています.
現在, カーネルの読み込みには基本的に下に挙げる3つの方法が あります: これらはカーネルが次に何をしたらいいのかという情報をカーネルに 与えます.
Biosboot は ``ブートブロック'' に相当するもので, 2つのファイル から構成されており, フロッピーディスクやハードディスクのブートを 開始する側の 8K バイトにインストールされています.
Biosboot は FreeBSD のファイルシステムからカーネルを 読み込むことができます.
Dosbootは DI. Christian Gusenbauerによって書かれましたが, 不幸にしてこの場合には, コードのある一部分が マイクロソフトの コンパイラ向けに書かれているため, FreeBSD 単体ではコンパイル することはできません.
Dosboot は MS-DOS のファイルから, またはディスクの FreeBSD ファイルシステムのパーティションから カーネルをブートします. これは MS-DOS システムのハイメモリ領域に潜んでいる メモリマネージャ等の さまざまな怪しい代物とメモリの取り合いをして, なんとかブートしています.
Netboot はサポートされているイーサネットカードを検出し, BOOTP や TFTP, NFS を使ってブートするカーネルを探そうとします.
カーネルが読み込まれ, ブートプログラムがカーネルに移行したら, カーネルは自身の初期化をし, どんなハードウェアが組み込まれいるか を決定し, それからルートファイルシステムを探さなくてはなりません.
現在サポートされているルートファイルシステムは 次の通りです :
UFS は, もっとも一般的なタイプのルートシステムです. フロッピーディスクやハードディスク上に存在します.
技術的に可能ですが, あまり有用ではありません. なぜならば, FAT ファイルシステムではリンクやデバイスノードなどの ``UNIX 主義'' を実現できないからです.
MFS はカーネル内部に組み込みになっている UFS ファイルシステムです. つまり MFS を機能させるのに ディスクやフロッピーディスクなどのハードウェアは 必要ではありません.
CD9660 は CD-ROM をルートファイルシステムに使用したものです.
これはルートシステムにファイルサーバを使用していて, 基本的に ディスクレスのマシンのためにあります.
ユーザ領域で動作させるようにするために, カーネルが初期化を終えると, カーネルは pid == 1のプロセスを生成し, ルートファイルシステム 上のプログラムを実行します. このプログラムは通常 /sbin/init です.
/sbin/init を別なプログラム置き換えてしまうことは可能ですが, そのプロセス には以下のような制約があります:
pid が 1 のプロセスには stdin/stdout/stderr は割り当てられていませんので, プログラムは自分でこれらをオープンしないとなりません. このプロセスが終了するとカーネルはパニックメッセージを表示して 停止します. また, このプロセスに対するシグナル処理は特殊です.
この例として, インストール用のフロッピーディスクにある /stand/sysinstallがあります.
カーネルを MFS でブートするのには次のような特別の /sbin/init を使います.
C: を /C: にマウントします.
C:/freebsd.fs を /dev/vn0 にアタッチします.
/dev/vn0 を /rootfs にマウントします.
シンボリックリンクを作ります. /rootfs/bin -> /bin /rootfs/etc -> /etc /rootfs/sbin -> /sbin (etc...)
これでハードディスクのパーティションを切り直さずに FreeBSD を 使うことができます.
NFS はサーバ:~you/FreeBSD を /nfs にマウントし, ルートディレクトリを /nfs に変更して, そこで /sbin/init を実行します.
これで FreeBSD をディスクレスで実行できますが, NFS サーバを コントロールできないままです...
これで X ターミナルが手に入りました. これは, これでハードウェア に費用を割いたりするよりはいい, と上司が主張した, Windows で 動作する遅くて何がおこなわれているのか 見ることができるような すすけた X Window エミュレータなんかよりよいものです.
/dev/rwd0 のコピーを取って, リモートにあるテープ ステーションやファイルサーバに書き込んでください.
これで一年前に取っておくべきだった バックアップをやっと 取ることができました.
これは特に面白いもので, 書き込み禁止のフロッピーディスクから ブートができて, ルートのファイルシステムに書き込むことができる というものです.