A bootable CD, DVD or ISO image follows the El Torito Bootable CD-ROM Format Specification (Phoenix Technologies and IBM, version 1.0, 1995). It adds a boot record to the volume descriptors, which points to a boot catalogue: a list of boot images, each either a floppy or hard disk image for the firmware to emulate, or a program to load as it is (“no emulation”). All numbers are little-endian.
Boot record
A volume descriptor of type 0, usually at sector 17, straight after the primary descriptor.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
0x00 | 1 | uint8 | Boot record indicator | 0. |
0x01 | 5 | text | ISO 9660 identifier | CD001. |
0x06 | 1 | uint8 | Version | 1. |
0x07 | 32 | text | Boot system identifier | EL TORITO SPECIFICATION, padded with zeros. |
0x27 | 32 | – | Unused | Zeros. |
0x47 | 4 | uint32 | Boot catalogue pointer | The sector number of the first sector of the boot catalogue. |
0x4B | 1973 | – | Unused | Zeros. |
Boot catalogue
The catalogue is a list of 32-byte entries: a validation entry, an initial/default entry, then any number of sections, each a section header followed by its section entries (and their extensions).
0x00Validation entry header ID 1, platform, checksum,55 AA320x20Initial/default entry the image any BIOS boots320x40Section header then its section entries, repeated per section32 each
Validation entry
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
0x00 | 1 | uint8 | Header ID | 1. |
0x01 | 1 | uint8 | Platform ID | See platforms. |
0x02 | 2 | – | Reserved | 0. |
0x04 | 24 | text | ID string | The maker or developer of the disc. |
0x1C | 2 | uint16 | Checksum | Chosen so that the sum of all sixteen 16-bit words of the entry is 0. |
0x1E | 1 | uint8 | Key byte | 55. |
0x1F | 1 | uint8 | Key byte | AA. Both key bytes count in the checksum. |
Initial/default entry
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
0x00 | 1 | uint8 | Boot indicator | 88 bootable, 00 not bootable. |
0x01 | 1 | uint8 | Boot media type | Bits 0–3: see media types. Bits 4–7: 0. |
0x02 | 2 | uint16 | Load segment | The x86 segment to load the image at; 0 means the traditional 0x07C0. On flat-memory systems, the address divided by 16. |
0x04 | 1 | uint8 | System type | A copy of the partition type byte from the partition table inside a hard disk image. |
0x05 | 1 | – | Unused | 0. |
0x06 | 2 | uint16 | Sector count | How many 512-byte virtual sectors to load at the start. |
0x08 | 4 | uint32 | Load RBA | The 2,048-byte sector where the image starts. |
0x0C | 20 | – | Unused | 0. |
Section header
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
0x00 | 1 | uint8 | Header indicator | 90 more headers follow; 91 this is the last header. |
0x01 | 1 | uint8 | Platform ID | See platforms. |
0x02 | 2 | uint16 | Number of section entries | Entries that follow this header. |
0x04 | 28 | text | ID string | Identifies the section; a BIOS that recognises it may boot from it instead of the default entry. |
Section entry
Like the default entry, with selection criteria in the unused bytes.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
0x00 | 1 | uint8 | Boot indicator | 88 bootable, 00 not bootable. |
0x01 | 1 | bits | Boot media type | Bits 0–3 the media type; bit 4 reserved, 0; bit 5 a section entry extension follows; bit 6 the image contains an ATAPI driver; bit 7 the image contains SCSI drivers. |
0x02 | 2 | uint16 | Load segment | As in the default entry. |
0x04 | 1 | uint8 | System type | As in the default entry. |
0x05 | 1 | – | Unused | 0. |
0x06 | 2 | uint16 | Sector count | As in the default entry. |
0x08 | 4 | uint32 | Load RBA | As in the default entry. |
0x0C | 1 | uint8 | Selection criteria type | 0 none; 1 language and version information (IBM); 2–255 reserved. |
0x0D | 19 | bytes | Selection criteria | Vendor-specific. |
Section entry extension
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
0x00 | 1 | uint8 | Extension indicator | 44. |
0x01 | 1 | bits | Flags | Bit 5: another extension follows. Other bits unused. |
0x02 | 30 | bytes | Selection criteria | More vendor-specific criteria. |
Platforms and media types
| Platform ID | Platform |
|---|---|
00 | 80x86 (BIOS) |
01 | PowerPC |
02 | Mac |
EF | EFI (UEFI) – added by the UEFI specification, not in El Torito 1.0 |
| Media type | Image |
|---|---|
| 0 | No emulation: the image is loaded and run as it is |
| 1 | 1.2 MB floppy |
| 2 | 1.44 MB floppy |
| 3 | 2.88 MB floppy |
| 4 | Hard disk (becomes drive 80h) |
| 5–15 | Reserved |
In no-emulation mode the firmware loads sector count 512-byte sectors from the load RBA; the image can then read the disc in 2,048-byte sectors through the BIOS extended disk functions.