不同大小磁盘副本的 MBR 和引导程序解释

不同大小磁盘副本的 MBR 和引导程序解释

我希望克隆500GB MBR 源磁盘到 250GB MBR 目标磁盘手动通过在目标磁盘上创建每个相应的分区并仅恢复数据各内容。这样,如果 100GB 分区仅占满 5%,那么在使用dd.我相信我正在正确恢复每个分区的内容,包括分区标签。唯一改变的是分区大小,但这应该不重要。

我的理解MBR磁盘那是前 446 字节是个引导代码区。接下来的 64 字节是分区表,组成了我们熟悉的512 字节 MBR。但我已经在目标磁盘上手动处理了这64字节(分区表)。

  • 如何处理引导代码区域(磁盘第一个扇区的前 446 字节)?
  • 是不是这么简单dd if=/dev/sdb of=/dev/sdc bs=446 count=1
  • 将要引导代码在每个 MBR 磁盘上都相同,还是需要修改它才能在目标磁盘上工作?如果修改的话怎么修改?
  • 引导代码有什么作用?

我想知道如何自己手动克隆不同大小的 MBR 磁盘,而不是依赖某些第 3 方免费软件。我已经成功地dd if=/dev/sdb of=/dev/sdc bs=32M在相同大小的磁盘之间进行操作,并且目标磁盘可以工作。一切都是通过磁盘标签挂载的。我正在处理 Fedora 18 (Spherical Cow),我相信 grub2 和我的所有分区都是 ext3。

答案1

我的理解MBR磁盘那是前 446 字节是个引导代码区域。接下来的 64 字节是分区表,组成了我们熟悉的512 字节的 MBR。

是的,几乎。 446 + 64 = 510 字节,您忘记了磁盘签名的两个字节,即0x55aaMBR 样式磁盘的偏移量 510 处。

是不是这么简单dd if=/dev/sdb of=/dev/sdc bs=446 count=1

是的。执行此操作之前,请确保将整个 512 字节备份到不同磁盘上的文件中。这可以为您省去很多麻烦。

每个 MBR 磁盘上的引导代码是否相同,或者是否需要修改才能在目标磁盘上工作?如果修改的话怎么修改?

它取决于操作系统和引导加载程序(Grub、syslinux、Windows...),因此代码可能会有所不同。在您的情况下,克隆磁盘并不重要,只需使用不同的分区偏移量和大小即可。

引导代码有什么作用?

它通常用于确定活动分区并从活动分区的引导扇区加载第二阶段引导加载程序,因为整个引导代码不适合 MBR。

举个例子:在一台旧笔记本电脑上,我三次启动 Win10、Debian 和 OSX。如果我将第一个分区设置为活动状态,它会启动 Windows,如果第二个分区处于活动状态,它会加载 Grub(安装在该分区的引导扇区上,而不是 MBR 上),如果第三个分区处于活动状态,它会加载 hackintosh 引导加载程序。我不确定引导代码是原始 Windows 代码还是来自 hackintosh 引导加载程序。他们都曾经工作过。

笔记:我不知道如何将分区复制到目标磁盘,但我建议您将源磁盘上的分区大小调整为目标大小(gparted)。

然后
A)dd
在目标磁盘上创建具有相同大小的分区表,并使用或复制分区
b)使用 gparted,在目标磁盘上创建一个干净的 MBR 分区表并复制分区。

完成后,将引导代码复制到目标磁盘。通过这种方式,您可以确保复制所有数据并且文件系统保持完整。完成后,您可以将源磁盘上的分区大小调整回原始大小。

有关的:

相关内容