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などの仮想化ソフトウェアから起動することができます。