答案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 标头可能会保留下来并混淆启发式,例如file
或parted
...