如果我运行此dd
命令来清空 MBR 的第一个字节,它会影响该磁盘的当前分区表(或仅影响 grub)吗?分区还能被识别吗?
dd if=/dev/zero of=/dev/sda bs=440 count=1
(440 是建议的结果,似乎比 446 更好,请参阅下面的链接)
因为该命令的意思是“从磁盘中删除 Grub”、“清除 MBR,以便 BIOS 无法在其上启动”或“删除第一阶段数据”。
参考:
答案1
是的,此命令将使磁盘在传统 BIOS 样式中无法启动,但 MBR 样式的分区表仍然完好无损。
如果磁盘包含 FAT32 分区,且该分区包含名为 的文件\EFI\BOOT\BOOTx64.efi
,则该磁盘仍可能被视为可采用 UEFI 样式引导。但如果您想让磁盘以 UEFI 方式无法启动,只需重命名或删除该文件即可。
正如您在表中看到的维基百科对主引导记录的描述,分区条目位于从字节 446 开始(十六进制的 0x01be)。
您的命令将仅覆盖前 440 个字节(即字节 0 ... 439),同时保持磁盘签名和复制保护指示器不变。
答案2
擦除前 440 个字节(仅擦除引导代码(通常有助于第一阶段引导加载程序的汇编指令),前提是 MBR 的最后 2 个字节标有签名 0xaa55。(第 510 和 511 字节,小端:读取高字节第一的)。
接下来的 6 个字节保留,用于磁盘签名。其次,64字节用于分区表。所以这应该保留你的分区表。
就像@telcoM 在他的回答中提到的那样,dd 命令仅删除前 440 个字节。
请注意,这适用于 MBR 方案。 GPT 将磁盘划分为一组分区,分区表存储在单独的分区(EFI 系统分区)中。