我正在尝试了解 MBR 和 GPT 到底是什么,到目前为止,我了解到它们是“表格”。因此,为了进一步了解,我想查看这些表格,看看它们是什么样子的。
我已经尝试了每个谷歌搜索词,但每个结果都告诉你如何检查分区类型是 MBR 还是 GPT。这不是我问的。我问的是如何才能看到那些表格,如“表格”,有行和列,就像打印路由表或 MAC 表一样。
有没有办法查看或打印 MBR 表和 GPT 表?如何在 Linux 和 Windows 中执行此操作?
答案1
Linux 分区工具fdisk
和gdisk
将向您显示大部分内容。前者是通用工具,后者仅适用于 GPT(它可以加载 MBR,但在显示之前会自动转换为 GPT)。
例如,使用 GPT:
# fdisk -l /dev/sda
[some output trimmed]
Disklabel type: gpt
Disk identifier: E02CF915-B9D0-C445-9A99-3C374F468FBE
Device Start End Sectors Size Type
/dev/sda1 2048 6143 4096 2M BIOS boot
/dev/sda2 6144 1050623 1044480 510M Linux filesystem
/dev/sda3 1050624 3907028991 3905978368 1.8T Linux filesystem
每行代表一个分区,即一个分区表条目。这些不是满的GPT 的列,但它们是任何类型的分区表中的重要列 – 分区开始和结尾,以及类型分区。(忽略“设备”,它是由 fdisk 组成的。)
(还请注意,GPT 在其“表”开始之前有一个小标题,其中包含磁盘标识符GUID 加上一些其他参数。执行此操作gdisk -l
将显示其他标头参数,例如“最多可容纳 128 个条目”、“结束于扇区 63”或“第一个可用扇区为 2048”。)
对于 MBR,就是这样 - 开始/结束/类型几乎就是它所包含的全部内容。(大多数工具会将四个“主要”行和可变数量的“逻辑”行合并到一个列表中。)GPT 有更多字段;进入 fdisk 的“专家”模式将显示更完整的 GPT 输出:
# fdisk /dev/sda
Command: x
Expert command: p
[some output trimmed]
Disklabel type: gpt
Disk identifier: E02CF915-B9D0-C445-9A99-3C374F468FBE
First usable LBA: 2048
Last usable LBA: 3907029134
Alternative LBA: 3907029167
Partition entries starting LBA: 2
Allocated partition entries: 128
Partition entries ending LBA: 33
Device Start End Sectors Type-UUID UUID Name Attrs
/dev/sda1 2048 6143 4096 21686148-6449-6E6F-744E-656564454649 66361CDC-3217-3D42-B767-C5FAFC905BCF Grub
/dev/sda2 6144 1050623 1044480 0FC63DAF-8483-4772-8E79-3D69D8477DE4 2977A744-A2C9-6049-AD98-6183B8725B4A Boot
/dev/sda3 1050624 3907028991 3905978368 0FC63DAF-8483-4772-8E79-3D69D8477DE4 AE341E89-2AA2-DC41-8BD4-BD5FC7527861 Arch
这将添加分区的唯一 GUID(在 Linux 中也称为“PARTUUID”,不要与文件系统的 UUID 混淆),以及原始 Type-GUID(在前面的示例中已转换为文本名称)、分区的可选名称(也称为 PARTLABEL)及其 64 位属性标志(我的系统不使用任何标志,但 Windows 磁盘会有一些)。这就是 GPT 的全部内容。
由于所有 GPT 磁盘也具有“保护性” MBR,因此M
可以使用专家模式命令来访问:
# fdisk /dev/sda
Command: x
Expert command: M
Expert command: p
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Id Type Start-C/H/S End-C/H/S Attrs
/dev/sda1 1 3907029167 3907029167 ee GPT 0/0/2 1023/255/63
注意:我特别不推荐“parted”或 GParted,因为它有一个相当厚的抽象层——它所谓的“标志”通常根本不对应于实际的标志;例如,esp
parted 中的标志实际上代表一个特定的类型值,并且该标志的缺失代表另一种特定类型。
从较低层次来看,MBR 是一个数据结构大多存储在磁盘的第 0 个扇区 (LBA) 中 - 512 字节的 LBA 包含 440 字节的启动代码和 72 字节,代表四个“主分区”槽。(但是,“逻辑”分区条目分散在各处。)同样,GPT 存储在 LBA 1-63 左右,其中标头位于 LBA 1 中,行从 LBA 2 开始。
因此,读取表的能力不仅限于 fdisk/gdisk – 任何可以访问/dev/sda
或\\.\Device\Harddisk1
可以工作的工具都可以。
例如,许多十六进制编辑器支持打开原始磁盘,其中一些内置了对解析特定结构的支持。以下是 GPT 的“行”在 HxD 中的样子,在我的 SSD 的第 2 扇区中有四个分区条目(未显示第 1 扇区中的标头):
HxD 是一个相当简单的编辑器,它只显示原始字节,但一些更高级的十六进制编辑器(例如 010 编辑器)可以应用“模板”来标记常见数据格式的各个字段,包括 MBR 和通常的 GPT。
答案2
我使用 DMDE 检查 GPT 等磁盘结构。您可以以 RAW HEX 格式查看或使用模板进行解释。您可以使用 DMDE 的免费版本进行查看和编辑。www.dmde.com。
答案3
parted
可以通过其
打印命令。
您可以使用print
命令查看标题和分区信息。使用print free
还将包括未分配的可用空间。
输出如下:
(parted) print
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sda: 2684MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1000MB 999MB primary boot, lba
2 1000MB 2300MB 1299MB primary ext2 lba
3 2300MB 2500MB 200MB primary linux-swap(v1) lba
(parted) print free
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sda: 2684MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
16.4kB 1049kB 1032kB Free Space
1 1049kB 1000MB 999MB primary boot, lba
2 1000MB 2300MB 1299MB primary ext2 lba
3 2300MB 2500MB 200MB primary linux-swap(v1) lba
2500MB 2684MB 185MB Free Space