这个 GPT header 值的背后是什么?
What's behind this GPT header value?
此转储是 2GiB 硬盘(.vdi
,在 Virtual Box 上)上 dd if=/dev/sda bs=512 | hexdump -C
的输出,其中使用 cfdisk
写入了 GUID Partition Table
。这就是 LBA 1
(GPT header 逻辑块)的样子:
45 46 49 20 50 41 52 54 | EFI signature
00 00 01 00 | GPT version
5c 00 00 00 | GPT header size
f8 8f 25 0d | CRC32 (header)
00 00 00 00 | reserved
01 00 00 00 00 00 00 00 | current LBA (this is LBA 1)
ff ff 3f 00 00 00 00 00 | backup LBA (last LBA on disk)
00 08 00 00 00 00 00 00 | first LBA available for partitions
de ff 3f 00 00 00 00 00 | last LBA available for partitions
a1 4b 7c df ca 02 95 4c | disk's GUID [1/2]
98 16 bb f0 73 d3 c8 0c | disk's GUID [2/2]
02 00 00 00 00 00 00 00 | partition entries' first LBA
80 00 00 00 | total amount of partition entries
80 00 00 00 | size of a single partition entry
86 d2 54 ab | CRC32 (entries)
00 .. | zeroed out until next LBA
这 header 指出有 80h (128d) 个分区条目,每个条目长 128 位,因此条目从 LBA 2
开始并跨越 16KiB 或 32 个扇区(此磁盘中每个扇区 512B ), 意思是从 LBA 02h
到 LBA 21h
.
为什么 LBA 800h
报告为分区的第一个可用 LBA 而不是 LBA 22h
,分区条目之后的下一个?条目和实际分区不是连续存储在磁盘上吗?
嗯,看起来这是 cfdisk
特有的行为。我清除了 GPT,并使用 gdisk
和 parted
将其写回两次,这两者都将分区条目数组的起点放在了 LEA 22h
中,正如我所期望的那样。但是请注意,让实际分区在磁盘中进一步开始是完全可以接受的,因为 UEFI 2.6 标准只规定它们不会早于 LEA 22h
.
开始
此转储是 2GiB 硬盘(.vdi
,在 Virtual Box 上)上 dd if=/dev/sda bs=512 | hexdump -C
的输出,其中使用 cfdisk
写入了 GUID Partition Table
。这就是 LBA 1
(GPT header 逻辑块)的样子:
45 46 49 20 50 41 52 54 | EFI signature
00 00 01 00 | GPT version
5c 00 00 00 | GPT header size
f8 8f 25 0d | CRC32 (header)
00 00 00 00 | reserved
01 00 00 00 00 00 00 00 | current LBA (this is LBA 1)
ff ff 3f 00 00 00 00 00 | backup LBA (last LBA on disk)
00 08 00 00 00 00 00 00 | first LBA available for partitions
de ff 3f 00 00 00 00 00 | last LBA available for partitions
a1 4b 7c df ca 02 95 4c | disk's GUID [1/2]
98 16 bb f0 73 d3 c8 0c | disk's GUID [2/2]
02 00 00 00 00 00 00 00 | partition entries' first LBA
80 00 00 00 | total amount of partition entries
80 00 00 00 | size of a single partition entry
86 d2 54 ab | CRC32 (entries)
00 .. | zeroed out until next LBA
这 header 指出有 80h (128d) 个分区条目,每个条目长 128 位,因此条目从 LBA 2
开始并跨越 16KiB 或 32 个扇区(此磁盘中每个扇区 512B ), 意思是从 LBA 02h
到 LBA 21h
.
为什么 LBA 800h
报告为分区的第一个可用 LBA 而不是 LBA 22h
,分区条目之后的下一个?条目和实际分区不是连续存储在磁盘上吗?
嗯,看起来这是 cfdisk
特有的行为。我清除了 GPT,并使用 gdisk
和 parted
将其写回两次,这两者都将分区条目数组的起点放在了 LEA 22h
中,正如我所期望的那样。但是请注意,让实际分区在磁盘中进一步开始是完全可以接受的,因为 UEFI 2.6 标准只规定它们不会早于 LEA 22h
.