1. 为什么需要切换Ubuntu内核版本
在开始操作之前,我们先聊聊为什么有人需要切换内核版本。Ubuntu 18.04.4默认安装的是5.3.0内核,但实际工作中可能会遇到需要降级到4.15.0的情况。最常见的原因包括:
-
硬件兼容性问题:某些老款硬件设备在新内核下可能无法正常工作。比如我遇到过一台老式打印机,在5.x内核下死活识别不了,降到4.15立马就能用了。
-
软件依赖要求:部分专业软件(如某些工业控制软件)会明确要求特定内核版本。有一次部署一个机器视觉系统,供应商就明确要求必须使用4.15内核。
-
稳定性考量:新内核虽然功能多,但可能存在未知bug。生产环境中,稳定往往比新特性更重要。
-
开发测试需求:做内核模块开发时,经常需要在不同版本间切换测试兼容性。
在动手之前,建议先用uname -r命令确认当前内核版本。我见过有人折腾半天才发现系统本来就在用目标版本,白白浪费时间。
2. 准备工作:搭建适合的操作环境
切换内核是个精细活,准备工作不到位很容易翻车。根据我的经验,这几个步骤必不可少:
首先解决显示问题。刚装好的Ubuntu虚拟机分辨率可能很低,操作起来很不方便。用这个命令调整分辨率:
xrandr -s 1600x1200
然后是换源。默认的国外源下载速度慢不说,还可能中途失败。建议换成阿里云或清华的源。具体操作是备份原来的sources.list,然后替换为国内源地址。这个步骤虽然简单,但能节省大量等待时间。
接着更新软件包列表和升级现有软件:
sudo apt update
apt list --upgradable
sudo apt upgrade
如果你在用VMware虚拟机,建议安装增强工具实现主机-虚拟机间的复制粘贴:
sudo apt install open-vm-tools
sudo apt install open-vm-tools-desktop
重要提示:操作前务必做好数据备份!虽然内核切换一般不会影响用户数据,但安全起见最好备份重要文件。我曾经因为没备份,一次操作失误导致要重装系统,损失了半天的工作进度。
3. 查看和安装指定内核版本
Ubuntu 18.04.4默认安装的是5.3.0内核,我们要降级到4.15.0。首先查看系统已安装的内核:
dpkg --get-selections | grep linux-image
你会看到类似这样的输出:
linux-image-5.3.0-28-generic install
linux-image-4.15.0-47-generic install
接下来查找可用的4.15.0内核包:
apt-cache search linux | grep 4.15.0-47
确认后安装指定版本的内核和头文件:
sudo apt-get install linux-headers-4.15.0-47-generic linux-image-4.15.0-47-generic
这里有个细节要注意:每个内核版本都有带-generic和不带-generic的包。前者是通用内核,后者是头文件。实际安装时两个都要装,但-generic才是真正运行用的内核。
安装完成后,再次用dpkg --get-selections | grep linux-image查看,应该能看到新安装的4.15内核已经出现在列表中。
4. 修改GRUB启动顺序
安装完新内核后,还需要修改GRUB配置让系统默认从新内核启动。首先查看当前可用的启动选项:
grep menuentry /boot/grub/grub.cfg
输出会列出所有可用的内核启动项,找到包含"4.15.0-47-generic"的那一行,记下完整的菜单项名称。
然后编辑GRUB配置文件:
sudo vim /etc/default/grub
找到GRUB_DEFAULT=0这一行,修改为:
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.15.0-47-generic"
保存后更新GRUB配置:
sudo update-grub
特别注意:这里的菜单项名称必须完全匹配,包括大小写和特殊符号。我有次因为少了个引号,导致系统直接进不了图形界面,只能通过恢复模式修复。
5. 验证和切换内核版本
完成上述步骤后,重启系统:
sudo reboot
重启后,用以下命令验证当前运行的内核版本:
uname -r
如果一切顺利,现在应该显示"4.15.0-47-generic"。
如果想切换回原来的5.3.0内核,只需再次编辑/etc/default/grub文件,将GRUB_DEFAULT改为对应的菜单项名称,然后更新GRUB并重启。
实用技巧:如果担心修改出错,可以在GRUB启动菜单界面手动选择内核版本。开机时按住Shift键(BIOS系统)或Esc键(UEFI系统)可以调出GRUB菜单,然后选择"Advanced options",就能看到所有可用的内核版本。
6. 管理多个内核版本
系统可以保留多个内核版本,方便根据需要切换。查看已安装的所有内核镜像:
dpkg --get-selections | grep linux-image
查看内核模块目录:
ls /lib/modules
查看内核头文件位置:
ls /usr/src
如果想删除旧内核释放空间,可以用:
sudo apt purge linux-image-版本号-generic
但建议至少保留一个备用内核,以防主内核出现问题无法启动。我有次删得太干净,结果内核崩溃后连恢复模式都进不去,最后只能重装系统。
7. 常见问题排查
在实际操作中可能会遇到各种问题,这里分享几个常见情况的解决方法:
问题1:安装新内核后无法启动
- 进入恢复模式,选择老内核启动
- 检查
/etc/default/grub配置是否正确 - 确保
update-grub执行成功
问题2:硬件设备无法正常工作
- 确认安装了对应内核版本的模块
- 检查
dmesg日志中的错误信息 - 可能需要重新安装驱动程序
问题3:系统性能下降
- 不同内核版本的调度策略可能不同
- 可以尝试调整内核参数
- 某些情况下需要重新编译内核模块
问题4:GRUB菜单不显示
- 检查
/etc/default/grub中GRUB_TIMEOUT值 - 确保没有设置
GRUB_HIDDEN_TIMEOUT - 可能需要重新安装GRUB
记住,每次修改GRUB配置后都要执行update-grub,否则更改不会生效。这个步骤看似简单,但却是最容易忽略的。
1万+

被折叠的 条评论
为什么被折叠?



