Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统

Linux最早是由芬兰 Linus Torvalds为尝试在英特尔x86架构上提供自由的类Unix操作系统而开发的。该计划开始于1991年,在计划的早期有一些 Minix 黑客提供了协助,而如今全球无数程序员正在为该计划无偿提供帮助。(参考百度百科

系统内核版本过低可能影响很多软件系统的安装和使用。下面以Centos7系统为例介绍如何查询和更新系统内核版本。

本文使用MobaXterm连接虚拟机进行的相关操作,具体可参考安装配置centos7虚拟机(详精版)安装虚拟机,或者参考物理机安装centos7(u盘安装)——详细版配置物理机, 参考MobaXterm连接局域网的虚拟机连接虚拟机,也可直接操作虚拟机查询和更新。

1、查询系统内核版本

仅查看版本信息

uname -r

查看版本信息及相关内容

uname -a

 通过绝对路径查看查看版本信息及相关内容

cat /proc/version

 通过绝对路径查看查看版本信息

cat /etc/redhat-release

 2、更新系统内核版本(参考Centos7 升级内核版本

更新版本使用yum,建议提前更新yum源仓库

更新yum源仓库

yum -y update

更新完成后,启用 ELRepo 仓库并安装ELRepo仓库的yum源

 ELRepo 仓库是基于社区的用于企业级 Linux 仓库,提供对 RedHat Enterprise (RHEL) 和 其他基于 RHEL的 Linux 发行版(CentOS、Scientific、Fedora 等)的支持。

1、导入ELRepo仓库的公共密钥

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

 2、安装ELRepo仓库的yum源

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

3、查询可用内核版本

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

 可选版本如下:

[root@localhost ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * elrepo-kernel: mirrors.tuna.tsinghua.edu.cn
elrepo-kernel                                                                                          | 3.0 kB  00:00:00
elrepo-kernel/primary_db                                                                               | 2.1 MB  00:00:03
可安装的软件包
elrepo-release.noarch                                          7.0-6.el7.elrepo                                  elrepo-kernel
kernel-lt.x86_64                                               5.4.207-1.el7.elrepo                              elrepo-kernel
kernel-lt-devel.x86_64                                         5.4.207-1.el7.elrepo                              elrepo-kernel
kernel-lt-doc.noarch                                           5.4.207-1.el7.elrepo                              elrepo-kernel
kernel-lt-headers.x86_64                                       5.4.207-1.el7.elrepo                              elrepo-kernel
kernel-lt-tools.x86_64                                         5.4.207-1.el7.elrepo                              elrepo-kernel
kernel-lt-tools-libs.x86_64                                    5.4.207-1.el7.elrepo                              elrepo-kernel
kernel-lt-tools-libs-devel.x86_64                              5.4.207-1.el7.elrepo                              elrepo-kernel
kernel-ml.x86_64                                               5.18.14-1.el7.elrepo                              elrepo-kernel
kernel-ml-devel.x86_64                                         5.18.14-1.el7.elrepo                              elrepo-kernel
kernel-ml-doc.noarch                                           5.18.14-1.el7.elrepo                              elrepo-kernel
kernel-ml-headers.x86_64                                       5.18.14-1.el7.elrepo                              elrepo-kernel
kernel-ml-tools.x86_64                                         5.18.14-1.el7.elrepo                              elrepo-kernel
kernel-ml-tools-libs.x86_64                                    5.18.14-1.el7.elrepo                              elrepo-kernel
kernel-ml-tools-libs-devel.x86_64                              5.18.14-1.el7.elrepo                              elrepo-kernel
perf.x86_64                                                    5.18.14-1.el7.elrepo                              elrepo-kernel
python-perf.x86_64                                             5.18.14-1.el7.elrepo                              elrepo-kernel

其中lt表示long-term,即主线版本,该版本建议慎重选择。

其中mt表示latest mainline,即长期稳定版本,稳定可靠,建议安装该版本

如:yum -y --enablerepo=elrepo-kernel install kernel-lt

4、安装最新的稳定版本内核

yum -y --enablerepo=elrepo-kernel install kernel-lt

会默认安装lt的最新版本,即5.4.207-1.el7.elrepo,也可根据具体需要指定对应版本。

安装完成后需要设置 grub2,即内核默认启动项

5、设置 grub2

内核安装好后,需要设置为默认启动选项并重启后才会生效

查看系统上的所有可用内核:

sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
[root@localhost ~]# sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.4.207-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.71.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-ddffbd8f43784edb9fdccc4463258697) 7 (Core)

刚刚安装的内核即0 : CentOS Linux (5.4.207-1.el7.elrepo.x86_64) 7 (Core)

我们需要把grub2默认设置为0

可以通过 grub2-set-default 0 命令或编辑 /etc/default/grub 文件来设置

方法1:通过 grub2-set-default 0 命令设置

grub2-set-default 0

方法2:编辑 /etc/default/grub 文件

vim /etc/default/grub

 

 编辑(e)将GRUB_DEFAULT设置为0,如下

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

修改完成后保存退出(:wq)

6、生成 grub 配置文件并重启

grub2-mkconfig -o /boot/grub2/grub.cfg
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.207-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.4.207-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.71.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.71.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-ddffbd8f43784edb9fdccc4463258697
Found initrd image: /boot/initramfs-0-rescue-ddffbd8f43784edb9fdccc4463258697.img
done

重启虚拟机或物理机 

reboot

 启动第一个(刚刚安装的内核版本)内核版本

7、验证是否成功安装

使用查询内核版本命令

uname -r
uname -a

[root@localhost ~]# uname -r
5.4.207-1.el7.elrepo.x86_64
[root@localhost ~]# uname -a
Linux localhost.localdomain 5.4.207-1.el7.elrepo.x86_64 #1 SMP Tue Jul 19 10:40:55 EDT 2022 x86_64 x86_64 x86_64 GNU/Linux

8、删除旧内核(可选

查看系统中的全部内核

rpm -qa | grep kernel
[root@localhost ~]# rpm -qa | grep kernel
kernel-tools-libs-3.10.0-1160.71.1.el7.x86_64
kernel-3.10.0-1160.el7.x86_64
kernel-lt-5.4.207-1.el7.elrepo.x86_64
abrt-addon-kerneloops-2.1.11-60.el7.centos.x86_64
kernel-tools-3.10.0-1160.71.1.el7.x86_64
kernel-3.10.0-1160.71.1.el7.x86_64

可选择删除3.10版本的内核

yum remove kernel-版本
[root@localhost ~]# yum remove kernel-3.10.0-1160.el7.x86_64 kernel-3.10.0-1160.71.1.el7.x86_64 kernel-tools-3.10.0-1160.71.1.el7.x86_64 kernel-tools-libs-3.10.0-1160.71.1.el7.x86_64
已加载插件:fastestmirror, langpacks
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel.x86_64.0.3.10.0-1160.el7 将被 删除
--> 正在处理依赖关系 kernel(PDE_DATA) = 0x44f0d59d,它被软件包 kmod-kvdo-6.1.3.23-5.el7.x86_64 需要

恭喜你,更新内核完成!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐