如何升级linux内核(centos7.9升级内核3.10版本到5.4版本) | 您所在的位置:网站首页 › macos1011如何升级到1012 › 如何升级linux内核(centos7.9升级内核3.10版本到5.4版本) |
前言
环境:centos7.9 kernel版本:3.10.0-1160.71.1.el7.x86_64 kernel内核的官网:https://www.kernel.org/ 一个linux社区的仓库源,ELRepo官网:http://elrepo.org/tiki/tiki-index.php 说明由于需要安装jumpserver,而jumpserver官网显示需要4.0以上的内核,所以需要升级内核: #查看内核版本 [root@jump ~]# uname -r 3.10.0-1160.71.1.el7.x86_64 #有很多内核的包 [root@jump ~]# rpm -qa | grep kernel kernel-3.10.0-1160.el7.x86_64 kernel-3.10.0-1160.71.1.el7.x86_64 kernel-devel-3.10.0-1160.71.1.el7.x86_64 kernel-headers-3.10.0-1160.71.1.el7.x86_64 kernel-tools-libs-3.10.0-1160.71.1.el7.x86_64 kernel-tools-3.10.0-1160.71.1.el7.x86_64 联网升级内核版本1、方法一、下载官网的稳定版本内核: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.19.14.tar.xz进行编译安装,由于内核编译安装不像平时的 ./confgue&& make && make install 那么简单,所以本次不讲这种编译安装方式。 2、方法二,使用yum 更新内核: 大多数 Linux 发行版提供自行维护的内核,可以通过 yum 或 rpm 等包管理系统升级。 ELRepo是一个为Linux提供驱动程序和内核映像的存储库,本篇内核升级方案就是采用ELRepo提供的内核通道。 ELRepo官网:http://elrepo.org/tiki/tiki-index.php #导入公钥 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org #下载并安装elrepo仓库 yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm #官网提示安装的,那就安装 yum install -y yum-plugin-fastestmirror #这里能离线下载到内核的rpm包,如果你的linux不联网,则可以离线下载安装包 https://elrepo.org/linux/kernel/el7/x86_64/RPMS/ #查看elrepo源里可用内核版本,可以看到有长期支持的版本5.4.257和稳定的主线版本6.0.0 # lt = long time 长期支持内核,采用长期支持版本(kernel-lt),更加稳定一些 # ml=mainline 稳定主线内核 [root@jump ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available Available Packages kernel-lt.x86_64 5.4.257-1.el7.elrepo elrepo-kernel kernel-lt-devel.x86_64 5.4.257-1.el7.elrepo elrepo-kernel kernel-lt-doc.noarch 5.4.257-1.el7.elrepo elrepo-kernel kernel-lt-headers.x86_64 5.4.257-1.el7.elrepo elrepo-kernel kernel-lt-tools.x86_64 5.4.257-1.el7.elrepo elrepo-kernel kernel-lt-tools-libs.x86_64 5.4.257-1.el7.elrepo elrepo-kernel kernel-lt-tools-libs-devel.x86_64 5.4.257-1.el7.elrepo elrepo-kernel kernel-ml.x86_64 6.0.0-1.el7.elrepo elrepo-kernel kernel-ml-devel.x86_64 6.0.0-1.el7.elrepo elrepo-kernel kernel-ml-doc.noarch 6.0.0-1.el7.elrepo elrepo-kernel kernel-ml-headers.x86_64 6.0.0-1.el7.elrepo elrepo-kernel kernel-ml-tools.x86_64 6.0.0-1.el7.elrepo elrepo-kernel kernel-ml-tools-libs.x86_64 6.0.0-1.el7.elrepo elrepo-kernel kernel-ml-tools-libs-devel.x86_64 6.0.0-1.el7.elrepo elrepo-kernel perf.x86_64 5.19.12-1.el7.elrepo elrepo-kernel python-perf.x86_64 5.19.12-1.el7.elrepo elrepo-kernel #安装长期稳定版本,稳定可靠,版本为5.4.257 yum --enablerepo=elrepo-kernel install kernel-lt-5.4.257-1.el7.elrepo.x86_64 #安装5.4.257版本的这些依赖包 #安装之前需要卸载低版本内核的kernel-tools和kernel-headers,不然会报冲突 yum remove -y kernel-tools* kernel-headers* yum --enablerepo=elrepo-kernel install kernel-lt-devel-5.4.257-1.el7.elrepo.x86_64 \ kernel-lt-doc-5.4.257-1.el7.elrepo.noarch \ kernel-lt-headers-5.4.257-1.el7.elrepo.x86_64 \ kernel-lt-tools-5.4.257-1.el7.elrepo.x86_64 \ kernel-lt-tools-libs-5.4.257-1.el7.elrepo.x86_64 \ kernel-lt-tools-libs-devel-5.4.257-1.el7.elrepo.x86_64 -y #查看内核是否载入到grub2 #/etc/grub2.cfg文件是/boot/grub2/grub.cfg文件的软链接,grub.cfg文件是grub引导加载器的配置文件 #注意:如果服务器使用efi模式启动,那么可能没有/boot/grub2/grub.cfg文件,其对应的配置文件可能是/boot/efi/EFI/centos/grub.cfg sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg 0 : CentOS Linux (5.4.257-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-20220727115107055496013495205931) 7 (Core) 刚刚安装的内核即0 : CentOS Linux (5.4.257-1.el7.elrepo.x86_64) 7 (Core) 我们需要把grub默认设置为0 可以通过 grub2-set-default 0 命令设置或编辑 vim /etc/default/grub 文件来设置 vim /etc/default/grub GRUB_DEFAULT=0 #这句改为GRUB_DEFAULT=0 意思是GRUB初始化页面的第一个内核将作为默认内核,保存退出 #检查默认内核是不是5.4 grubby --default-kernel #生成 grub 配置文件 grub2-mkconfig -o /boot/grub2/grub.cfg #重启linux系统 reboot #重启完成,查看现在linux内核,已经变成5.4.257了 [root@jump ~]# uname -r 5.4.257-1.el7.elrepo.x86_64 [root@jump ~]# #查看系统中的全部内核,现在旧的3.10内核还在 [root@jump ~]# rpm -qa | grep kernel kernel-lt-tools-5.4.257-1.el7.elrepo.x86_64 kernel-lt-devel-5.4.257-1.el7.elrepo.x86_64 kernel-3.10.0-1160.el7.x86_64 kernel-lt-tools-libs-5.4.257-1.el7.elrepo.x86_64 kernel-lt-tools-libs-devel-5.4.257-1.el7.elrepo.x86_64 kernel-lt-headers-5.4.257-1.el7.elrepo.x86_64 kernel-3.10.0-1160.92.1.el7.x86_64 kernel-lt-5.4.257-1.el7.elrepo.x86_64 kernel-lt-doc-5.4.257-1.el7.elrepo.noarch #可以选择移除全部旧内核版本的相关包(自行决定是否卸载) #补充一句,Linux是支持多版本内核共存的,无非是系统启动的时候应用哪个版本内核而已 yum remove kernel-3.10.0-1160* -y #查看grub2已经没有3.10的内核了 sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg 0 : CentOS Linux (5.4.257-1.el7.elrepo.x86_64) 7 (Core) 1 : CentOS Linux (0-rescue-bfd5b36eb1f547e18ff398ed50be7142) 7 (Core) #发现卸载3.10.0-1160版本内核的时候把这些依赖给卸载了,所以现在重新安装这些依赖 yum install gcc gcc-c++ glibc-devel glibc-headers -y #查看现在的内核,都是5.4.257-1版本的了 [root@jump ~]# rpm -qa | grep kern kernel-lt-tools-5.4.257-1.el7.elrepo.x86_64 kernel-lt-devel-5.4.257-1.el7.elrepo.x86_64 kernel-lt-tools-libs-5.4.257-1.el7.elrepo.x86_64 kernel-lt-tools-libs-devel-5.4.257-1.el7.elrepo.x86_64 kernel-lt-headers-5.4.257-1.el7.elrepo.x86_64 kernel-lt-5.4.257-1.el7.elrepo.x86_64 kernel-lt-doc-5.4.257-1.el7.elrepo.noarch #再次重启linux(可不用重启) init 6 一切正常,Linux内核升级完成。 离线升级内核 从官网可以下载内核rpm包:https://elrepo.org/linux/kernel/el7/x86_64/RPMS/ #找一台可以联网的服务器下载内核包 wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.257-1.el7.elrepo.x86_64.rpm wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.257-1.el7.elrepo.x86_64.rpm wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-doc-5.4.257-1.el7.elrepo.noarch.rpm wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.257-1.el7.elrepo.x86_64.rpm wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-tools-5.4.257-1.el7.elrepo.x86_64.rpm wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-tools-libs-5.4.257-1.el7.elrepo.x86_64.rpm wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-tools-libs-devel-5.4.257-1.el7.elrepo.x86_64.rpm #将下载好的rpm上传到内网服务器 [root@jump update-kernel]# ll -rw-r--r--. 1 root root 52921216 Sep 24 01:46 kernel-lt-5.4.257-1.el7.elrepo.x86_64.rpm -rw-r--r--. 1 root root 13538544 Sep 24 01:46 kernel-lt-devel-5.4.257-1.el7.elrepo.x86_64.rpm -rw-r--r--. 1 root root 8625312 Sep 24 01:46 kernel-lt-doc-5.4.257-1.el7.elrepo.noarch.rpm -rw-r--r--. 1 root root 1399908 Sep 24 01:46 kernel-lt-headers-5.4.257-1.el7.elrepo.x86_64.rpm -rw-r--r--. 1 root root 232316 Sep 24 01:46 kernel-lt-tools-5.4.257-1.el7.elrepo.x86_64.rpm -rw-r--r--. 1 root root 118976 Sep 24 01:46 kernel-lt-tools-libs-5.4.257-1.el7.elrepo.x86_64.rpm -rw-r--r--. 1 root root 96432 Sep 24 01:46 kernel-lt-tools-libs-devel-5.4.257-1.el7.elrepo.x86_64.rpm #安装内核 yum install -y ./kernel-lt-5.4.257-1.el7.elrepo.x86_64.rpm yum install -y ./kernel-lt-devel-5.4.257-1.el7.elrepo.x86_64.rpm yum install -y ./kernel-lt-doc-5.4.257-1.el7.elrepo.noarch.rpm yum install -y ./kernel-lt-headers-5.4.257-1.el7.elrepo.x86_64.rpm yum install -y ./kernel-lt-tools-libs-5.4.257-1.el7.elrepo.x86_64.rpm yum install -y ./kernel-lt-tools-5.4.257-1.el7.elrepo.x86_64.rpm yum install -y ./kernel-lt-tools-libs-devel-5.4.257-1.el7.elrepo.x86_64.rpm #查看内核是否载入到grub2 #/etc/grub2.cfg文件是/boot/grub2/grub.cfg文件的软链接,grub.cfg文件是grub引导加载器的配置文件 #注意:如果服务器使用efi模式启动,那么可能没有/boot/grub2/grub.cfg文件,其对应的配置文件可能是/boot/efi/EFI/centos/grub.cfg sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg 0 : CentOS Linux (5.4.257-1.el7.elrepo.x86_64) 7 (Core) 1 : CentOS Linux (3.10.0-1160.92.1.el7.x86_64) 7 (Core) 2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core) 3 : CentOS Linux (0-rescue-bfd5b36eb1f547e18ff398ed50be7142) 7 (Core) 刚刚安装的内核即0 : CentOS Linux (5.4.257-1.el7.elrepo.x86_64) 7 (Core) 我们需要把grub默认设置为0 可以通过 grub2-set-default 0 命令设置或编辑 vim /etc/default/grub 文件来设置 vim /etc/default/grub GRUB_DEFAULT=0 #这句改为GRUB_DEFAULT=0 意思是GRUB初始化页面的第一个内核将作为默认内核,保存退出 #检查默认内核是不是5.4 grubby --default-kernel #生成 grub 配置文件 grub2-mkconfig -o /boot/grub2/grub.cfg #重启linux系统 reboot #重启完成,查看现在linux内核,已经变成5.4.257了 uname -r #安装完成之后,会在/usr/src/kernels目录生成内核的源码包,这个仅了解即可 [root@jump ~]# ls /usr/src/kernels/5.4.257-1.el7.elrepo.x86_64/ arch block certs crypto drivers fs include init ipc Kconfig kernel lib Makefile mm Module.symvers net samples scripts security sound System.map tools usr virt |
CopyRight 2018-2019 实验室设备网 版权所有 |