使用 dd 来保存和恢复引导扇区?

使用 dd 来保存和恢复引导扇区?

通过一些遗留代码,在将系统的 .iso 解压缩到硬盘驱动器(从实时 CD)上后,我使用 dd 来保存和恢复(部分)引导扇区。

我使用以下命令来保存 mbr(前 446 个字节,因此除了分区表之外的所有内容):

dd if=/dev/sda of=/mnt/mbr.bin bs=446 count=1

然后我恢复硬盘的.iso,然后使用以下命令恢复引导扇区:

dd if=/mnt/mbr.bin of=/dev/sda bs=446 count=1

现在我遇到的问题是,在我只安装了 Windows XP 之前,使用上述方法之后,它让我在 Linux 启动和 Windows XP 启动之间进行选择,我猜那里出了严重的问题。

我的问题是:上面这两个命令是否足以保存并随后恢复引导扇区?

答案1

MBR 基本上是硬盘驱动器第一个扇区上的 512 字节段,它由 3 部分组成:引导代码(446 字节长)、分区表(64 字节长)和引导代码签名(2 字节)长的)。不确定你这边出了什么问题,但这对我有用:

这将明确备份启动代码本身,而不备份其他内容:

[root@host]# dd if=/dev/sda of=/tmp/mbr.img_backup bs=446 count=1

接下来,您需要将 MBR 擦除干净,包括您不希望与引导代码签名一起保存的分区表:

[root@host]# dd if=/dev/zero of=/dev/sda bs=512 count=1

现在您恢复启动代码:

[root@host]# dd if=/tmp/mbr.img_backup of=/dev/sda bs=446 count=1

答案2

据我了解,操作系统包文件之一中的“format”命令创建引导扇区。当操作系统重新启动时,它会在固定位置写入 11 个字符长的“io sys”和“msdos sys”文件。它在根目录中查找 io.sys 和 msdos.sys 文件并加载操作系统并运行。

相关内容