ブート出来た!!

ISO 9660 や EL TORITO の資料と首引きで、はりぼてイメージを追い掛けているうちに、
何となくだけれど、ブータブルCDのイメージが掴めてきた。
ブートイメージを自作するつもりでいたけれど、
どのようなイメージを作れば良いのか、具体的に分かってきたので、
ツールを使ってイメージを作っちゃえ!!って気になってきた。


と言うわけで、具体的なイメージ。
CD-ROMとしては、最低限の内容で、自作のブートイメージを使用してブートすれば良い。
よって、ISO LEVEL 1, RockRidgeもJolietも不要, ブートイメージは FD 1.44 フォーマット。
みたいな感じで、ボリュームラベルとかは適当に。

mkisofs -iso-level 1 -b boot_image -V "RASCAL TEST" -p "RASCAL" -o bootable.iso .


結果...
PVD(16), BRVD(17), VDST(18) の順で、今回、SVD は、生成されなかった模様。
恐らく、Jolietを使用していないから、不要になったんだろうな... と、勝手に解釈。
セクタ19は、相変わらず、謎セクタのままだけれど、mkisofsのメモ領域っぽい。
セクタテーブルがセクタ20と22に配置されていて、21と23は、未使用っぽい。
ルートディレクトリのエクステントは、セクタ24に配置されていて、
今回、ルートディレクトリのみの構成なので、唯一のディレクトリレコードとなる。
ルートディレクトリに配置された、FDIMAGE0.BINが、ブートイメージで、
エクステントは、セクタ26に配置されている。
BRVDから辿ってみると、ブートカタログがセクタ25に配置されている。
バリデーションエントリは、特に問題なく、エントリでは、
ブート可(0x88), ブートメディア FD 1.44M(0x02), ロードセグメント デフォルト, 読み込みセクタ数 1
となっている。
はりぼてイメージは、エミュレーション無しなので、この辺は、ちょっと違ってきている。
ちなみに、読み込みセクタ数は、512 Byte / Sector のようだ。
ブートイメージのエクステントは、セクタ26とあり、ディレクトリレコードと一致する。<当然だけどね。


さて、このイメージを使用して、まずは、Qemu でテスト。

qemu.exe -L . -m 128 -boot d -localtime -std-vga -cdrom bootable.iso

どん!!
おぉぉぉ!!
ブート出来た!!


そしたら、これを、焼いてみる!!
待つ事、数分... チーン!!
CDドライブに焼きたてのディスクをセットして電源ON!!
おおおぉぉぉ!!
ブート出来た!!


実機で動くと、また、格別ですね〜。
久々の感激!!
これで、ようやく、スタートラインに立てましたかね?笑