次の段階は、Grub を用いたブートフロッピーディスクの作成です。 Grub とは、GRand Unified Bootloader のことです。 これは BOOTP と TFTP が扱えるので、ネットワークからブートできます。
現在のディレクトリで、 grub.conf という名前で、以下のような内容のファイルを作ります。
default=0 timeout=1 title Clone bootp root (nd) kernel /vmlinuz rw root=/dev/ram ramdisk_size=4096 init=/bin/clone initrd /initrd.gz |
最後の 4 行は、ネットワークからブートするのに使う、 Grub のコマンドです。
bootp は、 DHCP サーバーから IP アドレスを取得するのに使います。
root (nd) は、 ネットワーク(TFTP サーバー)のルートを設定するのに使います。 tftpserver <tftp server> コマンドを使えば、このコマンドの前に、 別の TFTP サーバーを設定できます。
kernel は、 カーネルファイルとそのパラメータを指定します。
rw は、 ルートファイルシステムを書き込み可能にしてマウントするよう指定します。
root は、 (RAM メモリ内の)ルートファイルシステムをどこにマウントするのかを指定します。
ramdisk_size は、 RAM ディスクのサイズを指定します。 4096 (kバイト)がディフォルトの大きさですが、 もっと大きなイメージが必要なら、 それに応じてこのパラメータを変更して下さい。
init は、 (init と sh が無い場合に)、 ユーザーモードで動く最初のプログラム (この場合は clone スクリプト) を指定します。
initrd は、 ルートファイルシステムのイメージを保持しているファイルを指定します。
Grub をコンパイルする場合は、 最初にソースの tar ボールを the Grub web site からダウンロードし、展開します。 そして、作成したばかりのメニューファイルと、 ネットワークインタフェースカードの型を引数に指定して、 configure を実行します。 それからいつものとおり、make を実行します。
# tar xzf grub-0.92.tar.gz # cd grub-0.92 # ./configure --enable-preset-menu=../grub.conf --enable-3c90x # make |
繰り返しますが、 3c90x という型を見たら、 自分が使っているネットワークインタフェースカードの型に読み変えてください。 その際、最初に、Grub がその型をサポートしているかどうか調べて下さい。
一度 Grub をコンパイルしたら、 ブートフロッピーディスクのイメージは、 stage1/stage1 ファイルと stage2/stage2 ファイルを連結すればできます。 このフロッピーディスクを作成するには、 次のコマンドを実行して下さい。
# cat stage1/stage1 stage2/stage2 | dd of=/dev/fd0 |
これで、ブートフロッピーディスクができたはずです。