dd if=/dev/zero of=/dev/sda 会清除预先存在的分区表吗?

14 linux dd fdisk gpt

# dd if=/dev/zero of=/dev/sda清除预先存在的分区表吗?

或者是相反的,即

# fdisk /dev/sda g (对于 GPT)

消除由/dev/zero?

ilk*_*chu 22

dd if=/dev/zero of=/dev/sda清除预先存在的分区表吗?

是的,分区表位于驱动器的第一部分,因此覆盖它会破坏它。dd如果让它运行,这将覆盖整个驱动器(因此需要相当长的时间)。

类似的东西dd bs=512 count=50 if=/dev/zero of=/dev/sda足以覆盖前 50 个扇区,包括 MBR 分区表和主 GPT。尽管至少根据 Wikipedia 的说法,GPT在驱动器的末尾有分区表的辅助副本,因此仅覆盖驱动器头部的部分可能还不够。

(不过,您不必使用ddhead -c10000 /dev/zero > /dev/sda否则cat /bin/ls > /dev/sda会产生相同的效果。)

的确fdisk /dev/sda g(对GPT)歼灭通过的/ dev /写零的零?

也可以(前提是您保存更改)。

(然而,在标题的措辞只是混乱,/dev/zero本身并不任何事比任何常规存储一样。)

  • @peterh 请注意,他们正在重定向实际的 `ls` 二进制文件,*不是*运行它的输出。最小的“Hello World”ELF 二进制文件似乎是 [98 字节](https://codegolf.stackexchange.com/a/5741/10873)(因此小于 MBR),但我认为可以安全地假设任何具有实际功能的二进制文件应该比 MBR 大(众所周知的 FreeBSD 实现的 `ls` 是 32784 字节长,甚至大到足以覆盖 GPT 的磁盘起始部分)。;) (8认同)

n.s*_*.st 10

分区表存储在(逻辑2)磁盘设备的开头1附近。

用任何东西(零/dev/zero或任何其他数据)覆盖该区域将用乱码替换分区表,因此设备上的分区开始的位置不再明显。
不过,人们仍然可以扫描整个磁盘并尝试识别标记文件系统开头的“魔术字节”。

相反,如果您使用fdisk(或任何其他分区工具)创建新的分区表,该工具将覆盖磁盘的前几个字节以存储该新表。

磁盘只有一个开始,所以无论你最后做什么都会“粘”在那里。

但是请注意,某些分区表格式(如 GPT)会将备份副本保存在不同的位置(例如 GPT 的磁盘末尾),可以从中恢复某些分区信息。

1:例如,在MBR前 512 个字节GPT第一个和最后一个 17408 个字节中
2:驱动器可以在内部将逻辑块重新映射到物理介质的不同部分,但该映射对(也不重要)可见操作系统。