内核升级与旧内核清理
发布时间:2026-05-06 16:22       
更新时间:2026-05-07 05:53
升级内核之前先想退路:新内核如果起不来,机器必须还能回到旧的状态。所以第一原则是保留回退项,清理永远排在观察期之后。升级的动机通常是安全补丁或新硬件支持——内核层面的漏洞只能靠换内核来修,这一步省不得。
第一步:确认现状并升级
`uname -r` 看正在运行的版本;CentOS 用 `rpm -q kernel`、Ubuntu 用 `dpkg --list | grep linux-image` 列出已装版本。升级前顺手 `df -h /boot` 看一眼余量,低于 100MB 就先清理再升级——/boot 被塞满导致升级失败,是最常见的一种败法。然后执行升级:CentOS `yum update kernel`,Ubuntu `apt update && apt install linux-generic`。升级只装新内核不删旧内核,这正是我们要的效果。
第二步:确认默认启动项
装完重启会自动选最新内核。CentOS 7 用 `grubby --default-kernel` 查看默认项,`grubby --info=ALL | grep -E 'index|title'` 能列出启动菜单里的全部条目;需要手动指定时 `grub2-set-default 0` 指向第一项,直接改 /etc/default/grub 里的 GRUB_DEFAULT=0 也可以。云主机额外留意:virtio 这类半虚拟化驱动必须内置于新内核或能自动加载,发行版默认内核都没问题,自编译内核要专门确认。重启后 `uname -r` 与新版本号对上,升级才算落地。严谨一点再用 `journalctl -b` 翻一遍本次启动日志,没有报错,观察期就算开了个好头。之后几天盯一眼监控曲线,内核切换的尾巴问题多在这几天冒头。
第三步:观察期后再清理
新内核稳定跑一两周,确认服务正常、监控代理这类依赖内核模块的组件工作正常,再动手清理。CentOS 7:
```bash
yum install -y yum-utils
package-cleanup --oldkernels --count=2
```
保留最近两个版本。Ubuntu 用 `apt autoremove --purge` 清掉不再被引用的旧内核包,配套的 linux-headers 会一并处理。清理完用 `rpm -q kernel` 或 dpkg 复查一遍清单。
两个提醒:自己编译过内核模块(比如某些网卡驱动或监控探针)的机器,模块要针对新内核版本重新编译,这是最容易踩的暗坑;无论何时,至少留一个旧版本作为启动菜单里的退路。重启前把变更窗口和回退步骤写进操作单,内核操作虽然常规,出问题时拼的就是准备。