3

centos7 离线升级/在线升级操作系统内核 - 人生的哲理

 2 years ago
source link: https://www.cnblogs.com/renshengdezheli/p/16418911.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。

CentOS系统简洁稳定,但是系统内核版本低,有的软件要求的系统内核版本高,此时升级系统内核即可满足要求!

本文分别介绍离线升级系统内核在线升级系统内核的方法。另外除了离线升级系统内核在线升级系统内核,还可以从https://www.kernel.org/官网下载指定内核源码并进行编译升级,但是此步骤较为繁琐,在此忽略。

二.系统环境

服务器版本 系统内核版本 CPU架构
CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64 x86_64

三.系统内核下载网址

centos 系统内核可以去如下两个网站下载:
1.清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/elrepo/kernel/el7/x86_64/RPMS/

image-20220627231317228

​ 2.elrepo镜像站:https://elrepo.org/linux/kernel/el7/x86_64/RPMS/

image-20220627231411645

四.centos7离线升级系统内核

1.先查看系统环境

查看操作系统版本

[root@etcd2 ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 

查看系统内核

[root@etcd2 ~]# uname -r
3.10.0-693.el7.x86_64

2.离线升级系统内核

更新yum源仓库

[root@etcd2 ~]# yum -y update

启用 ELRepo 仓库,ELRepo 仓库是基于社区的用于企业级 Linux 仓库,提供对 RedHat Enterprise (RHEL) 和 其他基于 RHEL的 Linux 发行版(CentOS、Scientific、Fedora 等)的支持。ELRepo 聚焦于和硬件相关的软件包,包括文件系统驱动、显卡驱动、网络驱动、声卡驱动和摄像头驱动等。

导入ELRepo仓库的公共密钥

[root@etcd2 ~]#  rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安装ELRepo仓库的yum源

[root@etcd2 ~]#  rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

从elrepo下载系统内核包,如果不导入ELRepo仓库的公共密钥和安装ELRepo仓库的yum源,是下载不了内核包的

[root@etcd2 ~]# wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.160-1.el7.elrepo.x86_64.rpm

清华的这个镜像站可以直接下载

[root@etcd2 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/elrepo/kernel/el7/x86_64/RPMS/kernel-lt-5.4.197-1.el7.elrepo.x86_64.rpm --no-check-certificate

内核包下载好,kernel-ml代表主线版本,总是保持主线最新的内核,kernel-lt代表长期支持版本,支持周期更长,如果你要追求最新的版本,直接选择带ml的rpm包即可,如果你要追求稳定且更长的支持周期,直接选择lt版本即可。

[root@etcd2 ~]# ll -h kernel-lt-5.4.197-1.el7.elrepo.x86_64.rpm*
-rw-r--r-- 1 root root 51M 6月   5 19:47 kernel-lt-5.4.197-1.el7.elrepo.x86_64.rpm

安装内核包

[root@etcd2 ~]# rpm -ivh kernel-lt-5.4.197-1.el7.elrepo.x86_64.rpm
警告:kernel-lt-5.4.197-1.el7.elrepo.x86_64.rpm: 头V4 DSA/SHA256 Signature, 密钥 ID baadae52: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:kernel-lt-5.4.197-1.el7.elrepo   ################################# [100%]

内核升级完毕后,需要我们修改内核的启动顺序,默认启动的顺序应该为1,升级以后内核是往前面插入为0,设置GRUB_DEFAULT=0。一般新安装的内核在第一个位置,所以设置default=0,意思是 GRUB 初始化页面的第一个内核将作为默认内核。

默认的grub文件,GRUB_DEFAULT=saved

[root@etcd2 ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_CMDLINE_LINUX="rhgb quiet nomodeset"
GRUB_DISABLE_RECOVERY="true"

使 GRUB_DEFAULT=0

[root@etcd2 ~]# vim /etc/default/grub

[root@etcd2 ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_CMDLINE_LINUX="rhgb quiet nomodeset"
GRUB_DISABLE_RECOVERY="true"

设置默认启动内核,grub2-set-default 0和/etc/default/grub文件里的GRUB_DEFAULT=0意思一样

[root@etcd2 ~]# grub2-set-default 0

查看所有的内核

[root@etcd2 ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
0 : CentOS Linux 7 Rescue 12667e2174a8483e915fd89a3bc359fc (5.4.197-1.el7.elrepo.x86_64)
1 : CentOS Linux (5.4.197-1.el7.elrepo.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-80c608ceab5342779ba1adc2ac29c213) 7 (Core)

重新生成grub配置文件

[root@etcd2 ~]# vim /boot/grub2/grub.cfg

[root@etcd2 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.197-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.4.197-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-12667e2174a8483e915fd89a3bc359fc
Found initrd image: /boot/initramfs-0-rescue-12667e2174a8483e915fd89a3bc359fc.img
Found linux image: /boot/vmlinuz-0-rescue-80c608ceab5342779ba1adc2ac29c213
Found initrd image: /boot/initramfs-0-rescue-80c608ceab5342779ba1adc2ac29c213.img
done

重启并查看内核版本

[root@etcd2 ~]# reboot

可以看到内核升级成功

[root@etcd2 ~]# uname -r
5.4.197-1.el7.elrepo.x86_64

[root@etcd2 ~]# uname -rs
Linux 5.4.197-1.el7.elrepo.x86_64

五.在线升级系统内核

导入ELRepo仓库的公共密钥,启用 ELRepo 仓库,ELRepo 仓库是基于社区的用于企业级 Linux 仓库,提供对 RedHat Enterprise (RHEL) 和 其他基于 RHEL的 Linux 发行版(CentOS、Scientific、Fedora 等)的支持。ELRepo 聚焦于和硬件相关的软件包,包括文件系统驱动、显卡驱动、网络驱动、声卡驱动和摄像头驱动等。

[root@etcd2 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安装ELRepo仓库的yum源

[root@etcd2 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
获取http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
准备中...                          ################################# [100%]
正在升级/安装...
   1:elrepo-release-7.0-3.el7.elrepo  ################################# [100%]

kernel-ml代表主线版本,总是保持主线最新的内核,kernel-lt代表长期支持版本,支持周期更长,如果你要追求最新的版本,直接选择带ml的rpm包即可,如果你要追求稳定且更长的支持周期,直接选择lt版本即可。
查看可用的系统内核包

[root@etcd2 ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
已加载插件:fastestmirror
。。。。。。
Loading mirror speeds from cached hostfile
 * elrepo-kernel: mirrors.tuna.tsinghua.edu.cn
可安装的软件包
elrepo-release.noarch                                                                                    7.0-5.el7.elrepo                                                                            elrepo-kernel
kernel-lt-devel.x86_64                                                                                   5.4.197-1.el7.elrepo                                                                        elrepo-kernel
kernel-lt-doc.noarch                                                                                     5.4.197-1.el7.elrepo                                                                        elrepo-kernel
kernel-lt-headers.x86_64                                                                                 5.4.197-1.el7.elrepo                                                                        elrepo-kernel
。。。。。。
kernel-ml-tools-libs.x86_64                                                                              5.18.2-1.el7.elrepo                                                                         elrepo-kernel
kernel-ml-tools-libs-devel.x86_64                                                                        5.18.2-1.el7.elrepo                                                                         elrepo-kernel
perf.x86_64                                                                                              5.18.2-1.el7.elrepo                                                                         elrepo-kernel
python-perf.x86_64                                                                                       5.18.2-1.el7.elrepo                                                                         elrepo-kernel

刚才安装的lt版本,现在安装ml版本

安装最新版本内核,--enablerepo 选项开启 CentOS 系统上的指定仓库。默认开启的是 elrepo,这里用 elrepo-kernel 替换。或者yum install -y kernel-lt-4.4.218-1.el7.elrepo --enablerepo=elrepo-kernel

[root@etcd2 ~]# yum --enablerepo=elrepo-kernel install kernel-ml -y
已加载插件:fastestmirror
elrepo                                                                                                                                                                                     | 3.0 kB  00:00:00     
elrepo/primary_db                                                                                                                                                                          | 580 kB  00:00:06     
Loading mirror speeds from cached hostfile
 * elrepo: hkg.mirror.rackspace.com
 * elrepo-kernel: hkg.mirror.rackspace.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel-ml.x86_64.0.5.18.2-1.el7.elrepo 将被 安装
--> 解决依赖关系完成
。。。。。。
Downloading packages:
kernel-ml-5.18.2-1.el7.elrepo.x86_64.rpm                                                                                                                                                   |  56 MB  00:00:42     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
  正在安装    : kernel-ml-5.18.2-1.el7.elrepo.x86_64                                                                                                                                                          1/1 
  验证中      : kernel-ml-5.18.2-1.el7.elrepo.x86_64                                                                                                                                                          1/1 
已安装:
  kernel-ml.x86_64 0:5.18.2-1.el7.elrepo                                                                                                                                                        
完毕!

查看所有的内核版本

[root@etcd2 ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
0 : CentOS Linux (5.18.2-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (5.4.197-1.el7.elrepo.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-12667e2174a8483e915fd89a3bc359fc) 7 (Core)
4 : CentOS Linux (0-rescue-80c608ceab5342779ba1adc2ac29c213) 7 (Core)

内核升级完毕后,需要我们修改内核的启动顺序,默认启动的顺序应该为1,升级以后内核是往前面插入为0,设置GRUB_DEFAULT=0。一般新安装的内核在第一个位置,所以设置default=0,意思是 GRUB 初始化页面的第一个内核将作为默认内核。

[root@etcd2 ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_CMDLINE_LINUX="rhgb quiet nomodeset"
GRUB_DISABLE_RECOVERY="true"


[root@etcd2 ~]# grub2-set-default 0

重新生成grub配置文件

[root@etcd2 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.18.2-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.18.2-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-5.4.197-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.4.197-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-12667e2174a8483e915fd89a3bc359fc
Found initrd image: /boot/initramfs-0-rescue-12667e2174a8483e915fd89a3bc359fc.img
Found linux image: /boot/vmlinuz-0-rescue-80c608ceab5342779ba1adc2ac29c213
Found initrd image: /boot/initramfs-0-rescue-80c608ceab5342779ba1adc2ac29c213.img
done
[root@etcd2 ~]# reboot

查看当前系统内核版本

[root@etcd2 ~]# uname -sr
Linux 5.18.2-1.el7.elrepo.x86_64

[root@etcd2 ~]# uname -r
5.18.2-1.el7.elrepo.x86_64

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK