1. 为什么我们需要“驯服”Ubuntu的内核更新?
如果你管理过Ubuntu服务器,或者用Ubuntu做过深度开发,大概率遇到过这样的场景:某天早上,你例行公事地执行了 sudo apt update && sudo apt upgrade,系统提示内核更新了。你没多想,重启了服务器。结果,机器再也起不来了,屏幕上滚动着你看不懂的驱动错误信息,或者干脆卡在启动界面。那一刻,血压瞬间飙升。这就是典型的“内核更新导致驱动不兼容”问题,轻则服务中断几小时,重则数据丢失,需要从备份恢复。
内核(Kernel)是操作系统的核心,它负责管理硬件(CPU、内存、硬盘、网卡)和软件之间的通信。Ubuntu作为一个活跃的开源发行版,会定期发布内核安全更新和功能更新。这本来是好事,能修复漏洞、提升性能。但问题在于,很多硬件驱动(尤其是某些显卡、无线网卡、存储控制器或虚拟化驱动)是第三方厂商提供的,它们往往只针对特定的内核版本进行过严格测试和认证。一旦内核版本“跳跃”过大,这些驱动就可能“认不出”新内核,罢工了。
所以,对于追求极致稳定的生产环境服务器、嵌入式设备,或者依赖特定硬件驱动的开发工作站来说,“管控”内核更新,比“盲目”更新更重要。我们需要的是一个既安全又稳定的系统:安全补丁要打,但内核大版本不能随便变。这就像给汽车做保养,换机油、检查刹车是必要的,但发动机的核心部件没出问题,就不会轻易去大修。
那么,如何实现这种精细化的管控呢?Ubuntu提供了两条非常实用的路径,也是我们这篇文章要深入探讨的核心:通过 apt 命令进行“外科手术式”的精准锁定,以及通过配置文件实现“全局策略式”的更新管理。前者灵活、精准,适合临时处理或针对特定包;后者一劳永逸,适合设定长期策略。接下来,我们就手把手带你掌握这两种方法,让你成为内核更新的“掌控者”,而不是被动的“受害者”。
2. 基础准备:看清你的内核“家底”
在开始动手管控之前,我们得先搞清楚系统里现在到底装了哪些内核,以及正在用的是哪一个。这就像打仗前的侦察,知己知彼,才能百战不殆。盲目操作可能会锁错包,或者把正在用的内核给卸载了,那可就麻烦大了。
2.1 查看已安装的所有内核包
Ubuntu系统中,与内核相关的包主要有这么几类:
- linux-image-xxx:核心的内核镜像文件,这是启动所必需的。
- linux-headers-xxx:内核头文件,编译外部内核模块(比如某些驱动)时需要用到。
- linux-modules-xxx 或 linux-image-extra-xxx(旧版本):包含额外的内核模块。
要列出所有已安装的这类包,最常用的命令是 dpkg 配合 grep:
sudo dpkg --list | grep linux-image
sudo dpkg --list | grep linux-headers
sudo dpkg --list | grep linux-modules
执行后,你会看到一个列表,前面有 ii 标志的表示已安装。例如,你可能会看到 linux-image-5.15.0-60-generic 和 linux-image-5.15.0-76-generic 同时存在。系统通常会保留旧内核作为启动失败的备用选项。
另一个更简洁的命令,专门用于查看被 dpkg 管理的包的选择状态,是:
sudo dpkg --get-selections | grep linux-image
这个命令的输出更干净,直接显示包名和其状态(install 表示已安装),非常适合我们后续操作时参考。
2.2 确认当前正在运行的内核
知道了家里有哪些“内核”,还得知道现在“当


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



