User talk:Bewing

From OSDev Wiki
Jump to: navigation, search

Contributed section removed

The following section is being removed from Partition Table as that page is a reference for an existing standard, not a place for proposals. (As an LBA newbie, I found myself confused by it.) As it was contributed by Bewing, it seems polite to paste it here on Bewing's usertalk page rather than remove it entirely.

"Unofficial" 48 bit LBA Proposed MBR Format

The two CHS fields are unused in all current drives, leaving only the two 32 bit LBA fields to "do all the work". But there never was any 32 bit LBA addressing mode -- the current "standard" LBA addressing mode is 48 bits. So it is reasonable to try to redefine the Partition Table to eliminate the unused CHS fields, and use the extra space to extend the two LBA fields to a full 48 bit size. This would eliminate the impending obsolescence of the entire MBR scheme.

It seems reasonable to try to preserve (as much as possible) the current Partition Table structure. Therefore, the following alternate structure for 48 bit LBA Partition Table entries is proposed:

Element (offset) Size Description
0 byte Bitflags field: 1 = not bootable, 0x81 = bootable (or "active")
1 byte Signature-1 (0x14)
2 uint16_t Partition Start LBA (high 16-bit of 48 bit value)
4 byte System ID
5 byte Signature-2 (0xeb)
6 uint16_t Partition Length (high 16-bit of 48 bit value)
8 uint32_t Partition Start LBA (low uint32_t)
12 uint32_t Partition Length (low uint32_t)

Note: The basic intent is to use bit #0 (value = 1) in the bitflags field as a "48 bit LBA" indicator, preserve the offsets and functions of the bitflags and System ID fields, and use the two available aligned 16-bit values to extend the LBA fields. When detecting a valid partition entry, a little extra verification turns out to be useful, so the "extra" bytes in the table entry should be loaded with signature values.

Personal tools
Namespaces
Variants
Actions
Navigation
About
Toolbox