使用 dd 恢复将无法启动

使用 dd 恢复将无法启动

我当前的硬盘出现故障,我已使用dd.将映像恢复到新硬盘后,也使用dd,新系统将无法启动。它会经历 BIOS 初始化,然后屏幕变黑,然后重新启动并返回 BIOS。

这是旧的硬盘设置:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048   103426047    51200000   83  Linux
/dev/sda3       103426048   113666047     5120000   82  Linux swap / Solaris
/dev/sda4       113666048  1250263039   568298496    5  Extended
/dev/sda5       113668096   523268095   204800000   83  Linux
/dev/sda6       523270144   625670143    51200000   83  Linux
/dev/sda7       625672192  1250263039   312295424   83  Linux

/dev/sda1/boot

/dev/sda2/

我已经dd编辑了所有这两个分区。

/dev/sda7/home使用 进行备份的rdiff-backup

我错过了什么以及如何纠正这个问题?

编辑1:

fstab

UUID=80c4cde7-b697-46d5-a376-24a6d6a725af /                       ext4    defaults        1 1
UUID=c1967ecb-839c-45d1-bf5b-bba046af3892 /boot                   ext4    defaults        1 2
UUID=c18998dd-0e60-4945-999f-1296b6e69307 /home                   ext4    defaults        1 2
UUID=78d39426-74d4-4299-b3ba-c9ab27a60e17 /mnt/m                  ext4    defaults        1 2
UUID=53574e4d-8af4-4aeb-bcf5-c74c7bbe4d7c /mnt/p                  ext4    defaults        1 2
UUID=3902f59a-f7a8-4ab8-896d-93642a09f083 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

编辑2:

我最终dd'ing the MBRas格利奇博士在他的回答。而且我还必须手动修改fstab以匹配新分区,UUID如所示blkid

答案1

据我所知,您的新 HDD 缺少主引导记录 (MBR)。这就是为什么没有 GRUB 出现,并且您的系统只会报告“操作系统未找到!”或类似的。

为了将旧的 MBR 转移到新驱动器,您可能需要查看以下操作方法:http://www.cyberciti.biz/faq/howto-copy-mbr/

简而言之,它可以归结为以下步骤,这些步骤是我从上述来源无耻地窃取的:

  • root@machine:~# dd if=/dev/sda of=/tmp/mbrsda.bak bs=446 count=1

假设您的旧硬盘名为“sda”,这将有效地将其引导扇区备份到文件中/tmp/mbrsda.bak

  • root@machine:~# dd if=/tmp/mbrsda.bak of=/dev/sdb bs=446 count=1

在上面,我对原始源的所有更改都是用于“bs”的值,因为我假设您的新硬盘分区表与旧硬盘分区表不同,所以我认为也不需要备份它。

我希望这可以帮助解决您的问题。

答案2

您还需要复制引导加载程序(除非您从 CD 等引导并重新安装)。这可能可以通过复制第一个分区之前的所有扇区来实现。但之后您可能必须恢复分区表(或者在复制时将其遗漏)。

答案3

对于 UEFI+GPT 分区,我尝试检查 BIOS 设置,从其他磁盘应用 MBR 备份(如果您从磁盘设备(/dev/sda 等)备份/恢复,但所有这些事实证明都是不必要的。我将源系统复制到 14 个类似的物理盒子中,在“dd”整个磁盘后单独恢复 MBR 没有什么区别。现在我明白 MBR 中的 GRUB2 代码一定嵌入了某些东西。特定于旧磁盘),我只需要重新安装grub:

  • 找到任何UEFI modegrub 启动 CD/USB 加密狗,启动到 grub 控制台(无需启动到实时系统,只需c按 grub2 启动菜单屏幕即可。注意:使用 grub1/grub4dos 控制台,您看不到 GPT 分区。)
  • 通过 探测磁盘ls (hd<press tab>,找到原始的 grub.cfg 文件。例如我的位于(hd0,gpt1)/boot/efi/grub.cfg,然后输入configfile (hd0,gpt1)/boot/efi/grub.cfg。现在您刚刚启动了原来的系统。
  • 引导新磁盘上的原始系统后,通过发出 .grub 将 grub 重新安装到新磁盘的 MBR 中sudo grub-install /dev/sda0。 (通常/dev/sda0,但磁盘代码可能不同。因此,如果不确定,请检查您的系统位于哪个磁盘上)。
  • 删除外部启动设备,重新启动,您的系统现在应该可以启动。

相关内容