如何查看 MBR 表和 GPT 表本身(而不是如何检查分区类型是 MBR 还是 GPT)?

如何查看 MBR 表和 GPT 表本身(而不是如何检查分区类型是 MBR 还是 GPT)?

我正在尝试了解 MBR 和 GPT 到底是什么,到目前为止,我了解到它们是“表格”。因此,为了进一步了解,我想查看这些表格,看看它们是什么样子的。

我已经尝试了每个谷歌搜索词,但每个结果都告诉你如何检查分区类型是 MBR 还是 GPT。这不是我问的。我问的是如何才能看到那些表格,如“表格”,有行和列,就像打印路由表或 MAC 表一样。

有没有办法查看或打印 MBR 表和 GPT 表?如何在 Linux 和 Windows 中执行此操作?

答案1

Linux 分区工具fdiskgdisk将向您显示大部分内容。前者是通用工具,后者仅适用于 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,因为它有一个相当厚的抽象层——它所谓的“标志”通常根本不对应于实际的标志;例如,espparted 中的标志实际上代表一个特定的类型值,并且该标志的缺失代表另一种特定类型。


从较低层次来看,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 的屏幕截图,显示 GPT 分区磁盘上 LBA 2 的内容

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

相关内容