我当前的硬盘出现故障,我已使用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 MBR
as格利奇博士在他的回答。而且我还必须手动修改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 mode
grub 启动 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
,但磁盘代码可能不同。因此,如果不确定,请检查您的系统位于哪个磁盘上)。 - 删除外部启动设备,重新启动,您的系统现在应该可以启动。