GRUBブートディスクイメージの作成

GRUBからカーネルを起動するISOファイルの作成

自作OS(自作カーネル)をCDやDVDで起動するために、ISOイメージファイルを作成します。


作業用ディレクトリを作成する。

GRUB関連ファイル格納用のディレクトリを作成します。


$ mkdir -p img/boot/grub

カーネルを格納する。

GRUBから起動する自作OS(自作カーネル)を格納します。


$ cp kernel.elf ./img/.

GRUB関連ファイルのコピー

関連ファイルを作業用ディレクトリに格納します。


$ cp -p /usr/lib/grub/i386-pc/*stage* img/boot/grub/.

(CDから起動する場合「stage2_eltorito」だけで問題ありません。容量に余裕があるならば、全てのファイルを格納しておきます。)


起動ファイル(grub.confやmemu.lst)を作成/設定します。


$ cat img/boot/grub/grub.conf 
default=0
timeout=3

title osname
root (hd96)
kernel /kernel.elf
boot

ISOファイルを作成する。

mkisofsコマンドで作業用ディレクトリをISOファイルにします。


$ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
-boot-load-size 4 -boot-info-table -o grub.iso img

関連するmkisofsオプションについて

-o image-name イメージを書き出すファイルを指定します。
-R UNIX などで利用ために必要な情報を付加するため、Rock Ridge プロトコルによる SUSP および RR レコードを生成する。
-b El_Torito_boot-image El Torito 規格準拠のブータブル CD のためのブートイメージのパス名とファイル名を指定する。 パス名は mkisofs に与えたソースパスを基準としたものであること。 このオプションは El Torito 規格準拠のブータブル CD を作成する場合は必須である。
-no-emul-boot El Torito ブータブル CD のブートイメージが非エミュレーションイメージであることを指定する。システムはそのイメージをディスクエミュレーション無しでロードし、実行する。
-boot-load-size ロードセクタ数 El Torito 非エミュレーションブートモードにおけるロードセクタ数 (仮想セクタ数=512バイト) を指定する。 デフォルトではブートファイル全てをロードする。 BIOS によってはこの数値が 4 の倍数でないと問題となる場合がある。

stage2_eltoritoについて

stage2_eltoritoファイルは、CDからブートする(される)機能を持ったstage2です。

grub.conf(menu.lst)やOS関連ファイルなどを探して読み込む機能などを有しています。

CDでブートするためにstage2_eltoritoを使用した場合には、stage1やstage1.5は不要となります。



以上で生成したgrub.isoはVirtualBoxなどの仮想化ソフトウェアから起動することができます。


関連ページ