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 需要
恭喜你,更新内核完成!