mkbootcd
Last update 07-Jun-97
mkbootcdとは?
SunやMac、古くはTownsとCDからブートする機種はいろいろあり、IBM-PCでもこの便利な機能を実現しようとEl Toritoという規格が作成され、現在、程度の差はあれ多くのマザーボード(IDE I/F)、SCSI I/Fでサポートされています。
しかし、作成するツールがないのと認知度が低いのとでほとんど活用されていません。mkbootcdはこのEl Toriro規格のBootable CDを作成するためのツールです。
El Torito規格はBIOSメーカー、Phoenixの資料ページから入手することが出来ます。一読しておくことをお勧めします。
ブータブルCDの作成手順
- 準備
当たり前ですがCD-Rを作れる環境と、ブートできる環境(テスト結果を参考にしてください)が必要です。
後ば取りあえずこのページにあるものだけで作成できます。
- ブートフロッピー/ディスクの作成
まず、ブートするフロッピーもしくはディスクを作ります。
CDになってしまうと書き込めません。交換もできません。書き込めなくても立ち上がり、交換出来なくても困らないよう注意する必要があります。
また、ドライブレターにも注意が必要です。
フロッピーのイメージを使ってブートするとそれがA:になり元のA:はB:になります。
ディスクのイメージでブートするとそれがC:になり元のC:はD:にと以下順番にずれていきます。
なお、ディスクイメージを焼きたがる人が多いようですが最初はフロッピーイメージの使用をお勧めします。書き込めないのですからいまあるブートするディスクのイメージを使ってもまず立ち上がりません。この辺りはフロッピーでも同じなんですがほとんどのものは書き込めなくても立ち上がりますし、Cドライブがあればそれで済む場合の方が多いからです。
特に出来合いの物、例えばインストールフロッピーや95の修復フロッピーを使う時は以上の注意を忘れないようにしてください。
ブートイメージを複数用意してブート時に選択することも出来きるのでいろいろ用意しておくというのも一つの手です。
注意:ディスクイメージは先頭のパーティション一つだけが有効です。
- ブートイメージの抽出
満足のいくブートフロッピーもしくはディスクが出来たらそれを丸ごとダンプしてイメージにします。
GtBtImxx.zipを適当なディレクトリに展開し、マニュアルに従ってイメージをファイル化します。
イメージを作成するユーティリティはこれ以外にもNorton DISKEDIT,WinImage,SAVEDSKFなどいろいろあります。あるいはPC Unix系のDDコマンドを使うのも良いでしょう。WinImageはシェアウェアですが1.44MBのイメージを2.88MBのイメージに変換、イメージ内のファイルの操作など便利な機能がありフロッピーで複雑なことをする場合にお勧めです。
- ISOイメージの作成
お好きなCD-Rライタソフトを使って添付のスペーサーファイル、bootcat.binと作成したブートイメージファイルを含むISOイメージを作ります。このbootcat.binはEL TORITO規格で必要なブートエントリを作成するための領域を確保するのに使うもので2048バイト以上の大きさが必要です。たくさんのエントリを作る場合は大きくしてください。(例えばcopy /b bootcat.bin*bootcat.bin bootcat2.binとすれば倍の大きさになります)
- El Torito構造の構築
配布アーカイブ、MkBtCDxx.zipを適当なディレクトリに展開します。Win32 Console VersionとDOS版の両方が入っていますので好きな方を使ってください。テストは主にNTで行っています。
- コマンドラインで指定する。
エントリが一つだけの場合など簡単なものはコマンドラインが便利です。
mkbootcd 作成したISOイメージ ブートカタログ用スペーサーファイル 作成したブートイメージ
とするとEl Torito構造を構築します。例えば、
作成したISOイメージ:Session0.ISO
ブートカタログ用スペーサーファイル:bootcat0.bin
作成したブートイメージ:MSDOS62V.IMG
なら
mkbootcd Session0.ISO bootcat0.bin MSDOS62V.IMG
です。
- コマンドファイルを使用する。
複雑な指定をする時のためにmkbootcdは対話的もしくはコマンドファイルを使用してEL TORITO構造を作る機能も持っています。
以下にコマンドファイルの例を示します。ここで';'の後はコメントとして扱われます。
; sample mkbootcd cmd file
; usage:
; mkbootcd - <session0.cmd
session0.iso ; ISO Image file name
bootcat.bin ; Boot catalog dummy file
;---- Boot entrys ----
dos62v.img ; Default/initial entryになります。
; 本来はセクション指定が必要なのですが無いので自動的にSection 1というセクションを作ります。
DC390U.img ; Section 1の最初のエントリになります。
aha2940.img ; Section 1の最初のエントリになります。
-sOS2 ; OS2という名前の2番目のセクションを作ります。
os2e21-i.img ; OS2セクションの1番目のエントリになります。
warp4-i.img ; OS2セクションの2番目のエントリになります。
- El Torito構造の確認
良く知っている人がなんでも作れるように構築時には致命的な物以外チェックをしていないので必ず作成後に
mkbootcd 作成したISOイメージ
と打って出来たイメージを確認してください。
ベリファイは厳格な物なのでエラーが発生したからと言って絶対にブートしない訳ではありません。一部のBIOSでは規格上、0の時、0x7c0になるはずのロードセグメントを本当に0と解釈するといった不備があり、合格したからと言って絶対にブートするとも言い切れません。またBootMediaImageのチェックは頼りきりに出来る程ではありません。結局はブートざせて見ないと判らないからです。
しかし、エラーを無くす努力をしてください。エラーのあるものが動作する確率はエラーが無いものの数十分の一だと思います。
- ISOイメージの書き込み
BootableになったISOイメージを好みのCD-Rライタで書き込み、bootすることを確認します。
今のところ、マルチセッションであっても最初のセッションだけが有効なBIOSが多いので最初のセッションとして書き込むことをお勧めします。
シンタックス
作成目的と検証目的で二つのシンタックスがあります。
- 検証するとき
mkbootcd [-M] isoimage
- 作成するとき
mkbootcd isoimage bootentryfile bootimage bootimage ...
bootentryfileとbootimageはあらかじめISOイメージ内に納めたファイルの名前です。同名のファイルがディレクトリにあってもなんの関係もないので注意してください。
オプション
これらのオプションは読み込んだ順番に処理されます。普通のプログラムのように最初に総て処理されるのではありません。
例えば-i88 file1 -i00 file2とするとfile1のエントリはブータブルに、file2のエントリは非ブータブルになります。
多くのオプションは上級者向けで普通は、-,-S,-M,-Dだけ知っていれば十分です。
options:
- Use stdin
-D[Q] Set CD-ROM Drive Letter is 'Q'
-M[nnnnnn] Set offset for multisession
-I[xx] Set bootIndicator
-T[x] Set bootMediaType, F means Auto
-F[x] Set bootMediaTypeFlags
-C[nn] Set bootSectorCount
-L[xxxx] Set bootLoadSegment
-P[nn] Set PlatformID
-S[string] Make Section entry with ID string