Updated description of boot sector formats

This commit is contained in:
Thomas Schmitt 2014-04-09 08:31:34 +02:00
parent ed8066580a
commit ca2643b52b
1 changed files with 35 additions and 54 deletions

View File

@ -28,6 +28,7 @@ MIPS Volume Header, for MIPS Big Endian, e.g. SGI Indigo2.
DEC Boot Block, for MIPS Little Endian , e.g. DECstation.
SUN Disk Label and boot images, for SUN SPARC
GRUB2 SUN SPARC Core File Address
PowerPC Reference Platform (PReP), for IBM PowerPC
@ -548,7 +549,7 @@ Byte Range | Value | Meaning (little endian numbers, LBA unit is 512 byte)
16 - 19 | head_crc | CRC-32 of this header while head_crc is 0
20 - 23 | reserved | = 0
24 - 31 | curr_lba | Location of this header block = 1
32 - 39 | back_lba | Location of header backup block. See below.
32 - 39 | backup_lba | Location of header backup block. See below.
40 - 47 | first_lba | First usable LBA for partitions
48 - 55 | last_lba | Last usable LBA for partitions
56 - 71 | guid | Disk GUID, Random
@ -617,7 +618,7 @@ Byte Range | Value | Meaning (little endian numbers, LBA unit is 512 byte)
| | Is recomputed after the following changes.
24 - 31 | curr_lba | Location of this header block.
| | Shows own block address.
32 - 39 | back_lba | Location of header backup block.
32 - 39 | backup_lba | Location of header backup block.
| | Points to primary header block = 1
72 - 79 | part_start | Partition entries start.
| | Points to start of backup partition table.
@ -769,8 +770,8 @@ Byte Range | Value | Meaning
| | (Elf32_Phdr field p_filesz + 511) / 512;
| |
28 - 31 | seg_start | Segment file offset. Blocks 512 bytes.
| | ISO 9660 LBA of boot file * 4 plus offset
| | + offset which stems from ELF header of boot file:
| | ISO 9660 LBA of boot file * 4 plus offset which
| | stems from ELF header of boot file:
| | (Elf32_Phdr field p_offset + 511) / 512;
| |
32 - 431 | ========== | Boot Map Entries 2 to 51
@ -826,7 +827,7 @@ Sources:
The Disk Label is written to the first 512 bytes of the image. It can mark
8 partitions (slices ) of which the first contains the ISO image. The other
7 may contain boot images.
Words are composed big-endian style.
Words are composed big-endian style. Block size is 512.
Boot images are provided externally. mkisofs arranges them after the end of
the ISO image so that each starts at a cylinder boundary (320 kB).
@ -838,7 +839,6 @@ their predecessor in the partition table:
If mkisofs is called with -G image -B ... all boot partitions are
mapped to the partition that contains the ISO9660 filesystem."
Disk Label components:
Byte Range | Value | Meaning
@ -901,7 +901,7 @@ Byte Range | Value | Meaning
| |
444 - 447 | start_cyl | Start cylinder
| |
448 - 451 | num_blocks | Number of blocks in partition
448 - 451 | num_blocks | Number of 512-byte blocks in partition
| |
452 - 507 | ========== | Partition table entries #2 to #8
| ... | See above Partition table entry #1
@ -912,6 +912,30 @@ Byte Range | Value | Meaning
| |
---------- | ---------- | ----------------------------------------------------
------------------------------------------------------------------------------
GRUB2 SUN SPARC Core File Address
Sources:
Mail conversations with Vladimir Serbinenko.
GRUB2 lets libisofs write after the disk label block the address and size of a
data file in the ISO image. E.g. of /boot/grub/sparc64-ieee1275/core.img.
This is combined with a SUN Disk Label which exposes only the single partition
describing the overall ISO filesystem size.
Byte Range | Value | Meaning
------------ | ---------- | --------------------------------------------------
512 - 551 | opaque | Code and data provided by GRUB2
| |
552 - 559 | offset | Start byte number of the file. 64-bit big-endian.
| |
560 - 563 | size | Number of bytes in the file. 32-bit big-endian.
| |
564 - 32767 | opaque | Code and data provided by GRUB2
| |
------------ | ---------- | --------------------------------------------------
------------------------------------------------------------------------------
@ -984,7 +1008,7 @@ Byte Range | Value | Meaning
| | genisoimage option -hppa-ramdisk
20 - 23 | ramdsk_len | Byte count of the "HPPA ramdisk" file
| |
24 - 141 | cmdline | "Command line"
24 - 151 | cmdline | "Command line"
| | genisoimage option -hppa-cmdline
| |
232 - 235 | kern64_adr | Byte address of the "HPPA 64-bit kernel" file
@ -1018,10 +1042,6 @@ point to data files inside the ISO image.
Several fields of the firstblock shall be hardcoded to 0, on advise of
Helge Deller. Their description is shown in round brackets.
The partition table format is the same as with MBR.
>>> ??? what block range gets marked in which partition ?
>>> If this is only for CD/DVD/BD images, then no partitioning is needed.
All numbers are recorded big endian.
Except flags, all 4-byte integers are signed.
@ -1060,48 +1080,9 @@ Byte Range | Value | Meaning
| |
244 - 247 | ipl_len | Byte count of the bootloader file
| |
248 - 251 | ipl_entry | >>> Meaning unclear
| |
| |
446 - 461 | ========== | MBR/DOS Partition Table Entry for partition 1
| |
446 - 446 | status | Governs bootability:
| | 0x80 = bootable/active , 0x00 non-bootable/inactive
| |
447 - 449 | ========== | C/H/S address of partition start
447 - 447 | start_head | Heads part of start address.
448 - 448 | start_c_s | Bits 0 to 5 : Sectors part of start address.
| | Bits 6 to 7 : Bits 8 to 9 of cylinders part.
449 - 449 | start_cyl | Lower 8 bits of cylinders part of start address
| |
450 - 450 | part_type | Partition type indicates the purpose or kind of
| | filesystem in the partition.
| |
451 - 453 | ========== | C/H/S address of last absolute sector in partition
451 - 451 | end_head | Heads part of end address.
452 - 452 | end_c_s | Bits 0 to 5 : Sectors part of end address.
| Values: 1 to 63, not 0.
| | Bits 6 to 7 : Bits 8 to 9 of cylinders part.
453 - 453 | end_cyl | Lower 8 bits of cylinders part of end address
| |
454 - 457 | start_lba | LBA of first absolute sector in partiton.
| | Block size is 512. Counting starts at 0.
| |
458 - 461 | num_blocks | Number of sectors in partition.
| |
462 - 477 | ========== | Partition Table Entry for partition 2
| part_entr2 | 16 bytes. Format as with partition 1.
| | All 0 means that partition is unused/undefined.
| |
478 - 493 | ========== | Partition Table Entry for partition 3
| part_entr3 | 16 bytes. See above.
| |
494 - 509 | ========== | Partition Table Entry for partition 4
| part_entr4 | 16 bytes. See above.
| |
510 - 510 | 0x55 | MBR signature
511 - 511 | 0xaa | MBR signature
248 - 251 | 0 | (ipl_entry: offset to first command in bootloader)
| |
446 - 511 | 0 | (MBR partition table and signature)
| |
1024 -2047 | cmdline | Zero terminated command line of up to
| | 1023 characters
@ -1298,7 +1279,7 @@ Byte Range | Value | Meaning (little endian numbers, LBA unit is 512 byte)
---------- | ---------- | ----------------------------------------------------
12 - 15 | head_size | Header size = 0x5c = 92
24 - 31 | curr_lba | Location of this header block = 0x1
32 - 39 | back_lba | Location of header backup block = 0x144ffe = 1331198
32 - 39 | backup_lba | Location of header backup block = 0x144ffe = 1331198
| | This is 1 KiB before the end of MBR partition 1
| | (but should be 512 bytes).
| | (Potential isohybrid.c bug #1: