faq_2026-09-29_st_5


title: “yum升级内核后uname查到的还是旧版本怎么回事” description: “yum update 升级了内核,rpm -q kernel 能列出新版本,uname -r 看到的却还是旧的,是没装上还是没生效?本文讲清运行中内核与已安装内核集两个数据源各查的是什么、新内核何时才真正接替、以及升级内核的四步稳妥流程。” slug: uname-rpm-kernel-version-mismatch date: 2026-09-29 categories: [“常见问答”] draft: false

用 yum update 升了级,rpm -q kernel 一查,新内核赫然在列;再用 uname -r 看当前版本,还是老的。是没有安装成功,还是系统出了什么问题?都不是——这是内核这种特殊组件的正常脾气,两个命令查的本来就不是同一件事。

原因分析

这笔账要分开算三层。uname -r 报告的是此刻正在运行的内核:内核是整机底层的运行基座,开机那一刻由引导程序选定,运行期间不可能自我替换。rpm -q kernel 报告的是磁盘上装过哪些内核:包管理器只管安装和卸载,装好不代表启用。所以 yum 装完新内核后,老内核继续跑到下一次重启,是设计使然——新内核从装好到接管,中间还差引导程序把默认启动项指向它、再经历一次重启两个环节。理解这个结构,版本不一致就不再吓人:要么还没重启,要么默认启动项没指向新内核;反过来,若 uname 报的版本在 rpm 清单里根本找不到,则说明运行中的内核不是包管理器装的(比如手工编译的),那是另一种值得留意的状态。

分步解决

  1. 确认新内核真装上了。rpm -q kernel 列出全部已安装内核,对照预期版本号;在列,安装环节就没问题。
  2. 确认当前运行版本。uname -r 看运行中内核——与 rpm 清单里的新版不一致,说明切换环节还没完成,继续往下走。
  3. 核对默认启动项。用 grub2-editenv list 看引导默认项,或查看 /etc/default/grub 里的默认设置;多数情况下新内核安装后即排在启动列表前位,默认项指向它,重启即切换。
  4. 需要时手动指定。默认项没指向新内核的,用 grub2-set-default 按标题或序号设定,改完确认一遍再安排重启。
  5. 低峰重启并复核。挑业务低峰重启,起来后 uname -r 复核版本已切到新内核,业务与服务逐项确认正常。
  6. 给旧内核留退路。确认新内核稳定运行一段时间前,不急着删旧内核——启动菜单里留着它,新内核上出问题时可以退回老版本先保业务。

预防

内核升级是少有的必须重启才生效的升级,值得为它单独立一套流程。贵州诚鑫致达科技给客户做系统补丁窗口时把内核升级固定成四步:装、核引导、低峰重启、uname 复核——每一步都有验证,升级从不靠猜。