记录一次 Ubuntu 系统迁移后(新安装,又采用 dd 命令迁移磁盘分区),无法启动进入 grub 的解决办法。
参考:
命令解释:
shell
set #查看当前 grub 引导分区
ls # 列举当前磁盘以及磁盘下目录
# (hd1,gpt1)/(hd1,gpt2)/(hd2,gpt1)
手动启动
通过 ls 确定分区下的引导镜像后,可通过如下命令:
shell
# 当进入grub 后,输入 ls 查看当前磁盘以及分区
ls
# 逐个确认 /grub 目录下有 vmlinuz,initrd.img 文件的分区,找到 /grub 目录
ls (hd2,gpt1)/
ls (hd2,gpt1)/boot #说明 boot 在 / 目录下
ls (hd2,gpt1)/grub #说明 grub 在 /boot 目录下,/boot 是单独挂载的分区
set root=(hd2,gpt1)
linux /vmlinuz-5.4.0-150-generic root=/dev/sda1 ro
linux /vmlinuz root=/dev/sda1 ro # 防止误输入
initrd /initrd.img-5.4.0-150-generic
initrd /initrd.img # 防止误输入
boot
通过可视化选取镜像(亲测好用):
shell
# 当进入grub rescue 后,输入 ls 查看当前磁盘以及分区
ls
# 逐个确认 /grub 目录下有 vmlinuz,initrd.img 文件的分区,找到 /grub 目录
ls (hd2,gpt1)/
ls (hd2,gpt1)/boot #说明 boot 在 / 目录下
ls (hd2,gpt1)/grub #说明 grub 在 /boot 目录下,/boot 是单独挂载的分区
# 找到有 /grub 的分区,即可开始
set root=(hd2,gpt1)
set prefix=(hd2,gpt1)/boot/grub
set prefix=(hd2,gpt1)/grub # /boot 是单独挂载的分区
insmod normal
normal #进入 grub 引导菜单
修复 grub 引导
grub 通过手动启动后,如果不进行 grub 修复,再次启动后仍会进入 grub 命令行,需采用命令修复引导分区。
shell
sudo update-grub
sudo grub-install --root-directory=/ /dev/sda1
# root-directory 系统根目录,通常是 /
# /dev/sda1 是安装的 grub 的设备地址,一般为 /boot 所在的设备