AI 摘要(由 ChatGPT 总结生成):
该文章介绍了在CentOS系统中如何查看和升级内核版本。首先,通过`uname -r`命令查看内核版本,解释了内核版本号的含义。然后,介绍了小版本和大版本的升级方法。小版本升级通过`yum update kernel`命令实现,而大版本升级则包括导入公钥、安装ELRepo、查看可用的rpm包、安装最新版本的Kernel等步骤。最后,详细说明了设置默认启动内核版本的步骤,并提供了重启并检查内核版本的命令。
内核版本定义
在Linux系统中,系统内核版本查看可在终端输入如下命令查看
[root@localhost ~]# uname -r
3.10.0-1160.15.2.el7.x86_64
内核版本性质为:主分支ml(main line),稳定版(stable),长期维护版lt(long term)
其版本命名格式为 “A.B.C”:
数字 A 是内核版本号:版本号只有在代码和内核的概念有重大改变的时候才会改变:
第一次是1994年的 1.0 版,第二次是1996年的 2.0 版,第三次是2011年的 3.0 版发布,以及后面的版本。
- 数字 B 是内核主版本号:主版本号根据传统的奇-偶系统版本编号来分配:奇数为开发版,偶数为稳定版。
- 数字 C 是内核次版本号:次版本号是无论在内核增加安全补丁、修复bug、实现新的特性或者驱动时都会改变。
内核升级
小版本升级
- 查看当前和可升级版本
[root@localhost ~]# yum list kernel
Installed Packages
kernel.x86_64 3.10.0-1160.15.2.el7 @updates
kernel.x86_64 3.10.0-1160.25.1.el7 @updates
- 升级
yum update kernel -y
- 重启机器并检查内核版本
[root@localhost ~]# reboot
[root@localhost ~]# uname -r
大版本升级
- 载入公钥
[root@localhost ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
- 升级安装ELRrpo
[root@localhost ~]# rpm -Uvh http://elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
- 载入elrepo-kernel元数据
[root@localhost ~]# yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
- 查看可用的rpm包
[root@localhost ~]# yum --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
Installed Packages
kernel.x86_64 3.10.0-1160.15.2.el7 @updates
kernel.x86_64 3.10.0-1160.25.1.el7 @updates
kernel-headers.x86_64 3.10.0-1160.25.1.el7 @updates
kernel-tools.x86_64 3.10.0-1160.25.1.el7 @updates
kernel-tools-libs.x86_64 3.10.0-1160.25.1.el7 @updates
Available Packages
kernel-lt.x86_64 5.4.116-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 5.4.116-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 5.4.116-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 5.4.116-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 5.4.116-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 5.4.116-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 5.4.116-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 5.12.1-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 5.12.1-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 5.12.1-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 5.12.1-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 5.12.1-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 5.12.1-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 5.12.1-1.el7.elrepo elrepo-kernel
其中:lt
为长期支持版本;ml
为主线版本
- 安装最新版本的Kernel
[root@localhost ~]# yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml.x86_64 -y
- 删除旧版本工具包
[root@localhost ~]# yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64 -y
- 安装新版本工具包
[root@localhost ~]# yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml-tools.x86_64 kernel-ml-tools-libs.x86_64 -y
- 查看内核插入顺序
[root@localhost ~]# awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.12.1-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.25.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-1160.15.2.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-6ab2830113da4c6eabb6a7e39800eb6b) 7 (Core)
说明:默认新内核是从头插入,默认启动顺序也是从0开始(当前顺序还未生效)
或者使用:
[root@localhost ~]# grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2
CentOS Linux (5.12.1-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.25.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.15.2.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-6ab2830113da4c6eabb6a7e39800eb6b) 7 (Core)
其中文件/etc/grub2.cfg
和/boot/grub2/grub.cfg
内容一致。
- 查看当前实际启动顺序
[root@localhost ~]# grub2-editenv list
saved_entry=CentOS Linux (3.10.0-1160.25.1.el7.x86_64) 7 (Core)
- 设置默认启动
[root@localhost ~]# grub2-set-default 'CentOS Linux (5.12.1-1.el7.elrepo.x86_64) 7 (Core)'
[root@localhost ~]# grub2-editenv list
saved_entry=CentOS Linux (5.12.1-1.el7.elrepo.x86_64) 7 (Core)
[root@localhost ~]#
或者直接设置数值
[root@localhost ~]# grub2-set-default 0 // 0代表当前第一行
[root@localhost ~]# grub2-editenv list
saved_entry=0
- 重启并检查
[root@localhost ~]# reboot
[root@localhost ~]# uname -r