El Torito
目次
El Toritoとは
El Toritoは、Phoenix TechnologiesとIBMによって策定されたCD-ROMのブートをサポートしているISO 9660?の拡張仕様です。
BRVD : Boot Record Volume Descriptor
先頭から17(0x11)セクタ目(0x800*0x11 = 0x8800)にBRVDという場所がある。
これは、必ず固定の場所(0x8800~0x9000)にある。
| Byte | 内容 |
|---|
| 0x8800 | ボリューム記述子タイプ:0 |
| 0x8801-0x8805 | 文字列"CD001" |
| 0x8806 | このディスクリプターのVersion 必ず1 |
| 0x8807-0x8826(32Byte) | 文字列"EL TORITO SPECIFICATION" のこりは0で埋める |
| 0x8827-0x8846 | 予約:0 |
| 0x8847-0x884a(4Byte) | Boot catalogのセクタ |
| 0x884b-0x8fff | 予約:0 |
Boot catalog
BRVDの0x8847-0x884aのBoot catalogのセクタで指定したセクタがBoot catalogとなる。
| ByteOffset | 内容 |
|---|
| 0x000 | ヘッダID:1 |
| 0x001 | 0:80x86, 1:PowerPC, 2:Mac |
| 0x002-0x003 | 予約:0 |
| 0x004-0x01b(24Byte) | CD-ROMの作成者 |
| 0x01c-0x01d | チェックサム |
| 0x01e | シグネチャ:0x55 |
| 0x01f | シグネチャ:0xaa |
| 0x020 | 0x88:Bootable, 0x00:Not Bootable |
| 0x021 | エミュレーション |
| 0x022-0x023 | 読み込み先セグメント。0のときはデフォルトの07c0が設定される。 ※当然だが、リアルモードでのセグメントとなる。 |
| 0x024 | ブートイメージ中のパーティションテーブルのバイト5と一致すること。? |
| 0x025 | 予約:0 |
| 0x026-0x027 | 読み込みセクタ数 |
| 0x028-0x02b(4Byte) | ブートセクタの読み込み元セクタ |
| 0x02c-0x7ff | 予約:0 |
チェックサム
0x000-0x01fをワード(16bit)単位で加算したときに0になるようにチェックサムを調整します。
バイト単位ではないので注意。
リトルエンディアンの場合、計算時に注意しましょう。
- 例
0x000:0x01, 0x001:0x00, 0x01e:0x55, 0x01f:0xaa
0x0001 + 0xaa55 = 0xaa56
0x10000 - 0xaa56 = 0x55aa
チェックサム = 0x55aa
0x01c:0xaa, 0x01d:0x55
エミュレーション
| 番号 | 内容 |
|---|
| 0x00 | エミュレートしない |
| 0x01 | 1.2MBフロッピーをエミュレート |
| 0x02 | 1.44MBフロッピーをエミュレート |
| 0x03 | 2.88MBフロッピーをエミュレート |
| 0x04 | HDDをエミュレート |
参考・関連
コメント