“parted”如何知道 GPT 分区的文件系统类型?

“parted”如何知道 GPT 分区的文件系统类型?

parted实用程序以某种方式检测我的 GPT 磁盘分区上的文件系统:

GPT磁盘

我猜它不会根据分区类型代码(在gdisk输出中看到)执行此操作,因为对于分区 1、5、6、7,这些代码是 27(Hidden NTFS Win),例如对于 /dev/sda2 是 ef(EFI),但是在parted输出中明显列出了不同的文件系统。

答案1

它查看分区上的数据,类似于file -s /dev/partition。如果你strace这样做,你应该会看到这样的东西:

lseek(3, 1048576, SEEK_SET) = 1048576
read(3, "\353<\220mkfs.fat\0\2\10..., 512) = 512

定位1048576(1 MiB 或 2048 个扇区)位于分区表外部(它是第一个分区的开始),并且它从那里读取,因此它不仅查看分区表本身,还查看其他内容。

它还查看/proc/mounts,因此它也可以从那里收集信息。我没有看到它在做什么blkid

显示的文件系统信息parted并不是非常准确,上面的示例显示为 FAT 文件系统,但它实际上被用作 MD-RAID / LUKS / LVM。 MD-RAID 的元数据从一开始就是 4k,因此前 4k 中的旧 FAT 标头可能会保留下来并混淆启发式,例如fileparted...

相关内容