linuxkernel详解(十分钟快速了解一下)

linuxkernel详解(十分钟快速了解一下)(1)

一般情况下我们并不需要升级 Linux kernel,但出于安全层面的考虑,或者在用的 kernel 版本不支持某些新特性的情况下(比如之前提到过的VRF、VXLAN等等),就需要手工升级一下 kernel 版本了,这里来介绍一下具体的升级操作。

kernel 简要介绍

Linux kernel的主要模块分以下几个部分:进程管理、 定时器、中断管理、内存管理、 模块管理、虚拟文件系统接口、文件系统、设备驱动程序、进程间通信、网络管理和系统引导启动等功能。

kernel 有一定的版本编号方式,在3.0版本之后的版本编号方式是“A.B.C”格式,A代表主版本号,B随着新版本的发布而增加,C代表一些bug修复,安全更新,新特性和驱动的次数。

linuxkernel详解(十分钟快速了解一下)(2)

kernel 版本检查

可以用多种方式查看当前操作系统内核版本,一般可以用 uname 命令来检查:

$ uname -r 3.10.0-1127.el7.x86_64

另外也可以使用 cat /prco/version 获取内核版本信息:

$ cat /proc/version Linux version 3.10.0-1127.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 31 23:36:51 UTC 2020

查看系统内可用的内核版本:

$ rpm -qa | grep kernel kernel-3.10.0-1127.el7.x86_64 kernel-tools-3.10.0-1127.el7.x86_64 kernel-tools-libs-3.10.0-1127.el7.x86_64

可以看出只有一个内核版本3.10.0-1127

升级kernel版本

升级kernel版本有多种方式,包括yum升级、手工安装rpm包、kernel源码编译等,其中yum安装的方式最常用,这里也采用这种方式来升级:

1. 导入elrepo公钥

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

2. 安装yum源

$ yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

linuxkernel详解(十分钟快速了解一下)(3)

3. 查询elrepo-kernel可用版本,查看可用的系统内核包

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

linuxkernel详解(十分钟快速了解一下)(4)

注意这里查到的内核版本为5.4.228和6.1.4,分别是kernel-lt和kernel-ml,这俩版本啥区别呢?

ml的意思是latest stable mainline kernels,即主流新版本内核,lt的意思是long-term support kernels,即长期支持版内核,lt的版本比ml版本会低一些,一般不经常升级,只会做一些安全方面的更新。

这里选择使用最新ml版本:kernel-ml-6.1.4-1.el7

4. 安装最新版本的kernel

$ yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel

linuxkernel详解(十分钟快速了解一下)(5)

5. 安装完毕后,还需要进一步设置来使用新的内核,首先查看系统内核清单:

$ awk -F\' '$1=="menuentry " {print i " : " $2}' /etc/grub2.cfg 0 : CentOS Linux (6.1.4-1.el7.elrepo.x86_64) 7 (Core) 1 : CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core) 2 : CentOS Linux (0-rescue-197e1ba4314e4ff3a515cf809e34b348) 7 (Core)

注意,如果使用EFI,配置文件要改为/etc/grub2-efi.cfg

可以看到有两个内核版本,我们要使用的是编号为0的 CentOS Linux (6.1.4-1.el7.elrepo.x86_64) 7 (Core)

6. 把新内核的顺序号设为开机默认启动,上面可以看到编号为0

$ grub2-set-default 0

注:这一步也可以手工编辑配置文件 vim /etc/default/grub,设置GRUB_DEFAULT=0

7. 修改后执行如下命令,生成grub配置文件并重启:

$ grub2-mkconfig -o /boot/grub2/grub.cfg

linuxkernel详解(十分钟快速了解一下)(6)

8. 重启并检查内核版本

$ reboot …… $ uname -r 6.1.4-1.el7.elrepo.x86_64

9. 删除旧内核(此步骤可选)

$ rpm -qa|grep kernel $ yum remove kernel-3.10.0 kernel-tools-3.10.0 kernel-tools-libs-3.10.0 -y

内核升级已完成!

** 持续发布, 欢迎 关注 **

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页