使用dd恢复Ubuntu硬盘镜像后出现Initramfs错误
解决dd克隆Ubuntu镜像后启动进入Initramfs的问题
我碰到过好几次这种情况,用dd全盘克隆后启动卡Initramfs,大多是UUID不匹配或者GRUB引导没有正确适配新硬盘导致的,下面一步步帮你解决:
第一步:从Initramfs shell排查基础问题
当你进入Initramfs的busybox shell时,先确认系统能不能识别到新硬盘的分区:
- 输入
lsblk查看所有磁盘和分区,找到你的根分区(通常是容量最大的那个分区,或者原本挂载/的分区) - 输入
blkid查看每个分区的UUID,记下来后面要用
如果根分区能被识别但挂载失败,大概率是/etc/fstab里的旧UUID和新分区不匹配。
第二步:修复UUID匹配与GRUB引导
这是最核心的解决流程:
- 挂载根分区到临时目录(假设你的根分区是
/dev/sda1,根据实际情况替换):mount /dev/sda1 /mnt - 挂载系统必要的虚拟文件系统,让chroot环境能正常工作:
mount --bind /dev /mnt/dev mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys - 切换到克隆的系统环境:
chroot /mnt - 更新
/etc/fstab:- 用
blkid再次确认新分区的UUID,然后编辑fstab:nano /etc/fstab - 把里面所有旧的UUID替换成新硬盘分区对应的UUID,保存退出(按
Ctrl+O回车确认,Ctrl+X退出)
- 用
- 重新安装GRUB到新硬盘(注意是整个硬盘设备,比如
/dev/sda,不是分区):grub-install /dev/sda - 更新GRUB配置,让它识别新的系统分区:
update-grub
第三步:重新生成initramfs镜像
如果上面的步骤做完还是有问题,可能是initramfs镜像没有包含新硬盘的驱动,在chroot环境下执行:
update-initramfs -u
额外注意事项
- 确保新硬盘的容量不小于原硬盘,否则dd克隆会截断分区表,导致分区损坏
- 如果是UEFI系统,还要确认EFI分区(通常是FAT32格式的小分区)已经正确挂载到
/boot/efi,并且/etc/fstab里的UUID也更新了,然后在chroot里执行grub-install --efi-directory=/boot/efi - 重启后进入BIOS/UEFI,把新硬盘设置为第一启动项
这样操作后,系统应该就能正常启动了。
内容的提问来源于stack exchange,提问作者CuriousGuy
相关产品推荐
相关产品推荐

