2007年4月9日月曜日

フロッピードライブなしでのGRUBブートフロッピーの作成

stage1, stage2を生書きするやり方しか見つからなかったのでファイルシステム上に作成する方法をソースを解析しながら試してみた。

● フロッピーディスクイメージの作成

Debianの場合はまず、DOSツールをインストールする。

# apt-get install dosfstools
ddコマンドでイメージファイルを作成する。
# dd if=/dev/zero of=floppy.img bs=1k count=1440
作成したイメージファイルをFATでフォーマットする。
# mkdosfs floppy.img
floppy.imgをループバックデバイスとして適当なディレクトリィにマウントする。
# mount -t vfat floppy.img mnt/fd -o loop

● GRUB設定ファイルの作成

マウントディレクトリィを通じてイメージファイルへFATとしてアクセスできるようになったので、必要なファイルをコピーする。
# cd mnt/fd/boot/grub
# cp /usr/lib/grub/i386-pc/stage1 .
# cp /usr/lib/grub/i386-pc/stage2 .
#cp /boot/grub/device.map .
stage1,stage2は/boot/grubにあるものではなく、/usr/lib/grub/i386-pcより持ってくる。
Debianの場合は、/boot/grubにdevice.mapがあるが、ない場合は以下のようにして作成する。
# grub --device-map=device.map

grub> quit
grubを--device-mapオプションを指定して立ち上げ、すぐに終了する。
これでカレントディレクトリィに、device.mapが作成される。
続いてgrubが自動作成したdevice.mapを修正する。
(fd0) /home/floppy.img
(hd0) /dev/hda
fd0のデバイスファイル名としてフロッピーイメージファイルを記述する

● GRUBインストール

device.mapを指定してgrubを起動して、fd0へインストールする。

# grub --device-map=device.map

grub> root (fd0)
grub> setup (fd0)
これで、floppy.imgにgrubがインストールできた。
menu.lstをおけばメニューも出せるはず。

■ 参考資料

GNU GRUB Manual(英語)

0 件のコメント: