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