我正在玩主引导记录。我决定删除它并恢复它我的 VMware 机器。
使用 Ubuntu LiveCD,我尝试使用以下命令擦除分区条目和签名:
dd if=/dev/zero of=/dev/sda bs=1 skip=446 count=66
或者:
dd if=/dev/urandom of=/dev/sda bs=1 skip=446 count=66
为了验证我的更改,我使用命令进行检查:
dd if=/dev/sda bs=1 skip=446 count=66 | hexdump -C
但我没有看到零或随机字符。一切都没有改变。
我重启了机器。正如预期的那样,我无法启动操作系统。我再次启动 LiveCD,发现 MBR 分区和签名没有变化,旧数据被保留了下来。出了什么问题?
答案1
bs=1
并且count=66
你只删除了 66 个字节,mbr 代码是 446,签名是最后 2 个字节
MBR 不是一个分区,而是磁盘的第一个块,即大小为 512 字节的 0 块,其划分如下:
446(bood code) + 64(partition table) + 2 (magic number)
你的问题是你正在使用 skip
男人dd
skip=N skip N ibs-sized blocks at start of input
但您需要使用 seek 转到 /dev/sda 的字节 446
seek=N skip N obs-sized blocks at start of output