diff options
Diffstat (limited to 'contrib/syslinux-4.02/doc/gpt.txt')
-rw-r--r-- | contrib/syslinux-4.02/doc/gpt.txt | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/doc/gpt.txt b/contrib/syslinux-4.02/doc/gpt.txt new file mode 100644 index 0000000..0909932 --- /dev/null +++ b/contrib/syslinux-4.02/doc/gpt.txt @@ -0,0 +1,69 @@ + GPT boot protocol + +There are two ways to boot a GPT-formatted disk on a BIOS system. +Hybrid booting, and the new GPT-only booting protocol originally +proposed by the author, and later adopted by the T13 committee in +slightly modified form. + + + *** Hybrid booting *** + +Hybrid booting uses a standard MBR, and has bootable ("active") +partitions present, as partitions, in the GPT PMBR sector. This means +the PMBR, instead of containing only one "protective" partition (type +EE), may contain up to three partitions: a protective partition (EE) +*before* the active partition, the active partition, and a protective +partition (EE) *after* the active partition. The active partition is +limited to the first 2^32 sectors (2 TB) of the disk. + +All partitions, including the active partition, should have GPT +partition entries. Thus, changing which partition is active does NOT +change the GPT partition table. + +This is the only known way to boot Microsoft operating systems from a +GPT disk with BIOS firmware. + + + *** New protocol *** + +This defines the T13-approved protocol for GPT partitions with BIOS +firmware. It maintains backwards compatibility to the extent +possible. It is implemented by the file mbr/gptmbr.bin. + +The (P)MBR format is the normal PMBR specified in the UEFI +documentation, with the first 440 bytes used for the boot code. The +partition to be booted is marked by setting bit 2 in the GPT Partition +Entry Attributes field (offset 48); this bit is reserved by the UEFI +Forum for "Legacy BIOS Bootable". + + + -> The handover protocol + +The PMBR boot code loads the first sector of the bootable partition, +and passes in DL=<disk number>, ES:DI=<pointer to $PnP>, sets EAX to +0x54504721 ("!GPT") and points DS:SI to a structure of the following +form: + + Offset Size Contents + --------------------------------------------------------- + 0 1 0x80 (this is a bootable partition) + 1 3 CHS of partition (using INT 13h geometry) + 4 1 0xED (partition type: synthetic) + 5 3 CHS of partition end + 8 4 Partition start LBA + 12 4 Partition end LBA + 16 4 Length of the GPT entry + 20 varies GPT partition entry + +The CHS information is optional; gptmbr.bin currently does *NOT* +calculate them, and just leaves them as zero. + +Bytes 0-15 matches the standard MBR handover (DS:SI points to the +partition entry), except that the information is provided +synthetically. The MBR-compatible fields are directly usable if they +are < 2 TB, otherwise these fields should contain 0xFFFFFFFF and the +OS will need to understand the GPT partition entry which follows the +MBR one. The "!GPT" magic number in EAX and the 0xED partition type +also informs the OS that the GPT partition information is present. + +Syslinux 4.00 and later fully implements this protocol. |