我有一个随身碟 ( /dev/sdd
)。我运行fdisk -l
并显示了驱动器及其分区。
之后我做了:
dd if=/dev/zero of=/dev/sdd bs=512 count=1
我删除了 MBR(即分区表),现在fdisk -l
仅显示有关磁盘 ( /dev/sdd
) 的信息,而不显示有关分区 ( /dev/sddx
、/dev/sddy
、...) 的信息
然而,当我将U盘插入计算机时,系统(带有XFCE的Archlinux)可以读取U盘中的所有数据。
我的问题是:
如果有关分区的所有信息(例如分区的起始和结束位置)丢失,系统如何读取所有数据?
答案1
也许你直接格式化了,没有使用分区?覆盖前 512 个字节不会损坏每个文件系统,有些文件系统会故意保留第一个扇区。
您应该检查mount
实际用于安装的设备以及专门用于安装它的设置。如果 ArchLinux 对偏移量做了一些魔法,你就能在那里看到它。
或者它可能使用GPT
分区,在这种情况下,即使您覆盖驱动器的开头,也可能会检测到它们,因为GPT
末尾也有备份。
答案2
正如你所说,你擦除了MBR,但你并没有擦除数据本身。如果您在 MBR 之后开始读取,您将访问第一个分区及其数据,这很可能就是 Archlinux 正在做的事情。尝试使用 bs 为 2048 的相同命令,然后尝试再次读取内容。无论如何,为了以安全的方式擦除数据,您应该使用shred
,可能还有其他工具可以完成这项工作,但这是一个很好的工具。
答案3
如果该随身碟是用 GPT 分区的,则擦除第一个扇区只会删除 MBR 和保护的DOS 风格的分区表适用于非 GPT 识别设备。这些只会引发保护性 DOS 风格分区表的错误,并在数据清零时报告未分区的设备。
然而,Linux 能够识别 GPT,并且如果发现 GPT,则会忽略受保护的 DOS 样式分区表。这就是为什么你的 Linux 机器仍然可以看到原始分区。