香港服务器服务器重启失败?教你如何让 Ubuntu 记住正确的内核启动!
服务器重启后无法正常启动,排查后发现是默认加载的内核有问题。手动选择某个内核可以进入系统,但每次重启后,系统仍然尝试使用故障内核,导致无法自动进入正确的环境。
网上很多方法建议直接修改/etc/default/grub,但如果操作失误,可能会让系统无法启动。因此,我找到了一个更安全、更简单的方法,让Ubuntu自动记住上次成功启动的内核,避免每次都要手动选择。
1.先确认当前系统使用的内核
在更改默认内核之前,先确认当前正在运行的内核版本:
uname-r
示例输出:
5.15.0-43-generic
这表明系统当前使用的是5.15.0-43-generic内核。
2.查看所有已安装的内核
Ubuntu可能安装了多个内核版本,我们可以通过以下命令查看所有可用的内核:
dpkg--get-selections|greplinux-image
示例输出:
linux-image-5.13.0-30-generic deinstall
linux-image-5.13.0-52-generic deinstall
linux-image-5.15.0-41-generic install
linux-image-5.15.0-43-generic install
linux-image-generic-hwe-20.04 install
分析输出:
标记install的是当前系统可用的内核。
标记deinstall的表示这些内核已经被卸载或不再使用。
3.让系统自动记住当前启动的内核
通常,我们可以手动修改/etc/default/grub来指定默认内核,但如果配置错误,可能会导致系统无法启动。因此,我们采用更安全的方法――让GRUB记住上次成功启动的内核,并在下次自动使用它。
3.1编辑GRUB配置
打开GRUB配置文件:
sudonano/etc/default/grub
在文件中添加以下两行:
GRUB_SAVEDEFAULT=trueGRUB_DEFAULT=saved
参数解析:
GRUB_SAVEDEFAULT=true:每次成功启动后,系统都会自动保存当前启动的内核。
GRUB_DEFAULT=saved:让GRUB记住上次启动的内核,而不是始终选择默认的0(第一个内核)。
4.更新GRUB并重启
修改完GRUB配置后,运行以下命令更新GRUB使更改生效:
sudoupdate-grub
然后重启服务器:
sudoreboot
5.在GRUB界面手动选择正确的内核
当系统启动时:
按住Shift(BIOS机型)或ESC(UEFI机型)进入GRUB菜单。
选择“AdvancedoptionsforUbuntu”。
选择可以正常启动的内核,然后按Enter进入系统。
这次成功启动的内核会被GRUB记住,并在下次重启时自动使用,无需每次手动选择。
6.验证默认启动的内核是否生效
启动后,检查当前运行的内核:
uname-r
如果返回的版本是你刚才选择的内核,就说明设置成功了。
7.清理不需要的旧内核(可选)
如果系统中安装了多个旧内核,可以清理掉不再使用的版本,释放磁盘空间。
查看所有已安装的内核:
dpkg--list|greplinux-image
卸载旧内核(示例删除5.13.0-30):
sudoaptremove--purgelinux-image-5.13.0-30-generic
清理无用的依赖文件:
sudoaptautoremove
更新GRUB配置:
sudoupdate-grub
8.如果修改GRUB配置导致系统无法启动怎么办?
如果/etc/default/grub配置错误,导致系统无法启动,可以使用以下方法恢复:
8.1进入GRUB恢复模式
重新启动系统,在启动时按住Shift(BIOS机型)或ESC(UEFI机型)进入GRUB菜单。
选择“AdvancedoptionsforUbuntu”,然后选择一个可用的旧内核进入系统。
8.2还原GRUB配置
进入系统后,打开终端:
sudonano/etc/default/grub
将GRUB_DEFAULT=saved改回默认值:
GRUB_DEFAULT=0
然后更新GRUB并重启:
sudoupdate-grub
sudoreboot