修复 GRUB 2 升级失败系统无法正常引导
后知后觉 暂无评论

Ubuntu 18.04 LTS 升级至 20.04 LTS 后,升级 GRUB2 引导,结果更新失败,重启后卡 GRUB ,无法开机。

处理

报错详情

开机后无法连接 SSH,使用 VNC 连接后看到如下界面。

报错一

按键盘 E 进入编辑模式,然后按 CTRL + C 进入编辑模式

报错二

此时可以看到此时进入 CGI 命令模式

grub>

检查环境

首先调用分页器,可以将长命令分开显示,显示更加清晰,以免混淆。

grub> set pager=1

然后查看当前磁盘分区

grub> ls
(hd0) (hd0,msdos2) (hd0,msdos1)

查看系统磁盘(必须加结尾的 /

grub> ls (hd0,1)/
lost+found/ bin/ boot/ cdrom/ dev/ etc/ home/  lib/
lib64/ media/ mnt/ opt/ proc/ root/ run/ sbin/ 
srv/ sys/ tmp/ usr/ var/ vmlinuz vmlinuz.old 
initrd.img initrd.img.old

上述命令仅适用于 MBR 磁盘,如果是 GPT 磁盘,则需要更换命令格式。

grub> ls (hd0,gpt1)/

正常引导

将根目录切换为磁盘,然后手动加载内核,并引导开机。

grub> set root=(hd0,1)
grub> linux /boot/vmlinuz-5.4.0-33-generic root=/dev/vda1
grub> initrd /boot/initrd.img-5.4.0-33-generic
grub> boot
小贴士:GRUB 命令行中亦可使用 Tab 补全。

修复引导

更新内核引导

# update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/50-curtin-settings.cfg'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.0-33-generic
Found initrd image: /boot/initrd.img-5.4.0-33-generic
Found linux image: /boot/vmlinuz-5.4.0-26-generic
Found initrd image: /boot/initrd.img-5.4.0-26-generic
done

安装引导文件

# grub-install /dev/vda
Installing for i386-pc platform.
Installation finished. No error reported.

操作完毕后即可重启服务器进行检查是否能正常引导开机。


附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。