U 盘上的 MBR 和数据

U 盘上的 MBR 和数据

我有一个随身碟 ( /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 机器仍然可以看到原始分区。

相关内容