查看 Linux 系统已安装的内核(全平台指南)

:clipboard: 查看 Linux 系统已安装的内核(全平台指南)

无论您使用哪款发行版,查看已安装内核的方法都围绕包管理工具展开。下面按包管理器类型分别说明。


一、Debian / Ubuntu 系(使用 apt / dpkg

1. 列出所有已安装的内核镜像包

dpkg -l | grep linux-image
  • 说明dpkg -l 列出所有已安装包,grep 过滤出内核镜像。
  • 输出示例:
    ii  linux-image-5.4.0-100-generic  5.4.0-100.113  amd64  Linux kernel image
    ii  linux-image-5.15.0-91-generic  5.15.0-91.101  amd64  Linux kernel image
    

2. 使用 apt 命令(同样适用)

apt list --installed | grep linux-image

:warning: 注意:apt 命令行界面不稳定,但手动查看无碍。

3. 区分手动安装 vs 自动安装(依赖)

  • 查看自动安装的内核(通常是系统更新时自动保留的旧版本):
    apt-mark showauto | grep linux-image
    
  • 查看手动安装的内核(用户主动 apt install 的):
    apt-mark showmanual | grep linux-image
    

二、RHEL / CentOS / Fedora 系(使用 yumdnf

现代 Fedora 及 RHEL 8+ 默认使用 dnf,旧版 RHEL/CentOS 7 使用 yum。两者命令结构几乎一致,以下统一用 dnf 表示,您可酌情替换为 yum

1. 使用 rpm 直接查询(最通用)

rpm -qa | grep kernel
  • 说明rpm -qa 列出所有已安装的 RPM 包,grep 筛选包含 “kernel” 的行。
  • 输出示例:
    kernel-3.10.0-1160.el7.x86_64
    kernel-4.18.0-477.10.1.el8_8.x86_64
    kernel-core-6.5.6-200.fc38.x86_64
    kernel-modules-6.5.6-200.fc38.x86_64
    

    注意:输出可能包含 kernel-corekernel-modules 等子包,它们都属于同一内核版本。

2. 使用 dnf list installed(更规范)

dnf list installed kernel*

或者(只列内核镜像,不列模块):

dnf list installed kernel | grep -v kernel-
  • 实际推荐直接使用 rpm -qa | grep ^kernel- 来过滤出主内核包。

3. 查看哪些内核是作为依赖自动安装的(RHEL 系)

RHEL 系没有像 apt-mark 那样直接的内置命令,但可以通过 dnf history 或查看安装日志辅助。通常手动安装的包会记录在 /root/.bash_historydnf history 中。若需判断,可借助 repoquery(需安装 dnf-utils):

dnf repoquery --installed --requires kernel-core | grep kernel

但更简单的方式是直接通过 dnf remove --dry-run 模拟删除,看哪些会作为依赖被移除(谨慎操作)。


三、通用操作(所有发行版)

查看当前正在运行的内核版本

uname -r
  • 输出当前内核版本号,例如 5.15.0-91-generic4.18.0-477.10.1.el8_8.x86_64

查看系统启动菜单中可选的内核(GRUB)

grep menuentry /boot/grub2/grub.cfg   # RHEL/CentOS
grep menuentry /boot/grub/grub.cfg    # Debian/Ubuntu(视引导方式)

此命令可直观看到引导时可选的内核列表,但该列表并不代表已安装包,只反映引导配置。


:broom: 附:清理旧内核的建议

  • Debian/Ubuntu:使用 sudo apt autoremove --purge 会自动移除旧内核(标记为自动安装的)。
  • RHEL/CentOS:使用 dnf remove kernel-<旧版本>yum remove kernel-<旧版本> 手动删除。
  • Fedora:同样使用 dnf remove kernel-core-<旧版本>
  • 安全准则:永远保留至少一个已知能正常启动的旧版本内核,以防新内核故障。

:pushpin: 总结对比

任务 Debian/Ubuntu (apt) RHEL/CentOS/Fedora (yum/dnf)
列出所有已安装内核包 dpkg -l | grep linux-image rpm -qa | grep ^kernel-
查看当前运行内核 uname -r(通用) uname -r(通用)
区分自动安装内核 apt-mark showauto | grep linux-image 需借助额外工具或手动判断
删除指定旧内核 sudo apt purge linux-image-X.X.X sudo dnf remove kernel-X.X.X