一、内核升级
在企业用过的内核升级
# centos7.6内核升级4.19
前提条件
已配置好基础yum源,参考yum源配置
1、获取内核的rpm包
http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/
从上述页面上下载4.19.12的rpm包kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm
然后拷贝到主机上
wget http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm
或者
curl -O http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm
2、安装
sudo yum -y localinstall kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm
3、 重新生成启动配置
修改/etc/default/grub文件,修改其中一行GRUB_DEFAULT=saved为GRUB_DEFAULT=0
$ sudo vi /etc/default/grub
GRUB_DEFAULT=0
然后重新编译内核启动文件(每一次升级完都要执行一次)
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
注意,如果你的系统是用uefi引导的,则命令为
$ sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
可以通过df -hT命令判断你的系统是否由uefi引导,如果输出结果中有/boot/efi(即该目录挂载了一个盘),则为uefi引导;或者通过命令ls /sys/firmware/efi看该目录是否存在
4、重启主机 reboot
重启主机,检查内核版本
$ uname -r
1、自己虚拟机测试实战: 自己下载需要的内核版本号
去哪下载内核版本号是最麻烦的!
有以下网址可供参考
http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/
https://elrepo.org/linux/kernel/el7/x86_64/RPMS/
http://mirrors.aliyun.com/centos/?spm=a2c6h.25603864.0.0.69e419292YfNND
可以用杰哥给的网址,下载最新rpm包
http://mirror.mat.mines-paristech.fr/elrepo/kernel/el7/x86_64/RPMS/
高版本的内核修复了许多的低版本内核的bug,因此,系统是需要提高内核版本的,从而提高安全性,稳定性,并增加更多的功能。
# 注意:确保您已备份重要数据并了解正在运行的CentOS版本和内核版本。 如果是新的机子,直接升级就行了,都没有数据
1、查看当前的CentOS版本和内核版本,使用以下命令
[root@db01 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@db01 ~]# uname -r
3.10.0-1160.el7.x86_64
版本号中各个数字分开详细说明:
3 :主版本号
10 :次版本号
0 :修订号
1160.83.1:发行版本的补丁版本
el7 : CentOS 7内核
X86_64 :64位的CPU的操作系统
2、查找并下载新的内核版本
到https://elrepo.org/tiki/Download去找当前centos系统的稳定版本内核,下载安装
注意:稳定的并且大部分bug已经修复的内核种类为longterm,因此在网页挑选一个longterm种类的内核即可,longterm的缩写为lt
下载网站: https://hkg.mirror.rackspace.com/elrepo/kernel/el7/x86_64/RPMS/
3、内核升级步骤
#下载内核包
[root@db01 ~]# wget https://hkg.mirror.rackspace.com/elrepo/kernel/el7/x86_64/RPMS/kernel-lt-5.4.255-1.el7.elrepo.x86_64.rpm
#rpm安装该包
[root@db01 ~]# ll
-rw-r--r-- 1 root root 52920808 Aug 31 09:08 kernel-lt-5.4.255-1.el7.elrepo.x86_64.rpm
[root@db01 ~]# rpm -ivh kernel-lt-5.4.255-1.el7.elrepo.x86_64.rpm
#编辑grub文件,把GRUB_DEFAULT=saved改成GRUB_DEFAULT=0
[root@db01 ~]# sed -i '3s/saved/0/' /etc/default/grub
[root@db01 ~]# 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="console"
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
#根据/etc/default/grub自动生成开机配置文件
[root@db01 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.255-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.4.255-1.el7.elrepo.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-74559b9147b04496aed06d73e5dd78fa
Found initrd image: /boot/initramfs-0-rescue-74559b9147b04496aed06d73e5dd78fa.img
done
#重启机器生效
[root@db01 ~]# reboot
# 版本验证
[root@db01 ~]# uname -r
5.4.255-1.el7.elrepo.x86_64
centos是可以多内核共存的,上下选择就行(因此不建议删除旧版本的内核,仅仅安装新版本内核后,grub选择新版本内核进入系统并使用即可,(谁也不敢保证新的内核就一定好用,留个旧的,不好用可以换)
2、测试实战: 使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新版本。无法指定版本号,只能选择最新稳定的
一、查看当前的CentOS版本和内核版本
[root@db01 ~]# cat /etc/redhat-release # 查看CentOS版本
CentOS Linux release 7.9.2009 (Core)
[root@db01 ~]# uname -r # 查看当前内核版本
3.10.0-1160.el7.x86_64
二、在 CentOS 7 中升级内核
CentOS 允许使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新版本。在 CentOS 7 上启用 ELRepo 仓库,运行如下命令:
[root@db01 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org #导入该源的秘钥
[root@db01 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm #启用该源仓库
Retrieving http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrieving http://elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
Preparing... ################################# [100%]
Updating / installing...
1:elrepo-release-7.0-4.el7.elrepo ################################# [100%]
[root@db01 ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available #查看有哪些内核版本可供安装
Loaded plugins: fastestmirror
Determining fastest mirrors
* elrepo-kernel: mirrors.tuna.tsinghua.edu.cn
elrepo-kernel | 3.0 kB 00:00:00
elrepo-kernel/primary_db | 2.1 MB 00:00:00
Available Packages
elrepo-release.noarch 7.0-6.el7.elrepo elrepo-kernel
kernel-lt.x86_64 5.4.256-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 5.4.256-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 5.4.256-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 5.4.256-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 5.4.256-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 5.4.256-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 5.4.256-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 6.5.2-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 6.5.2-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 6.5.2-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 6.5.2-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 6.5.2-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 6.5.2-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 6.5.2-1.el7.elrepo elrepo-kernel
perf.x86_64 5.4.256-1.el7.elrepo elrepo-kernel
python-perf.x86_64 5.4.256-1.el7.elrepo elrepo-kernel
三、安装新的内核,使用以下命令:
开始安装: yum --enablerepo=elrepo-kernel install kernel-ml -y #安装的是主线版本,该版本比较激进,慎重选择。版本号5.8.13
yum --enablerepo=elrepo-kernel install kernel-lt -y #安装的长期稳定版本,稳定可靠,版本为4.4.238
两个yum命令选择一个安装。安装完毕后,重启机器,手动选择新安装的新版本哦!!!
[root@db01 ~]# yum --enablerepo=elrepo-kernel install kernel-lt -y
[root@db01 ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg # 列出可用的引导项,记录相应的编号
0 : CentOS Linux (5.4.256-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-74559b9147b04496aed06d73e5dd78fa) 7 (Core)
四、设置 GRUB 默认的内核版本,使用以下命令:
打开并编辑 /etc/default/grub 并设置 GRUB_DEFAULT=0。意思是 GRUB 初始化页面的第一个内核将作为默认内核
[root@db01 ~]# sed -i '3s/saved/0/' /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved #这里的saved改为0即可,重启后,默认就是你上次所选的版本了。
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
五、重新生成GRUB配置文件
[root@db01 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.256-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.4.256-1.el7.elrepo.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-74559b9147b04496aed06d73e5dd78fa
Found initrd image: /boot/initramfs-0-rescue-74559b9147b04496aed06d73e5dd78fa.img
done
六、重启CentOS系统,使用以下命令:
reboot
在启动时选择新安装的内核。
[root@db01 ~]# uname -r
5.4.256-1.el7.elrepo.x86_64
最后总结
CentOS 升级内核的三种方式(yum/rpm/源码)
注意事项
关于内核种类:
kernel-ml 中的ml是英文【 mainline stable 】的缩写,elrepo-kernel中罗列出来的是最新的稳定主线版本。
kernel-lt 中的lt是英文【 long term support 】的缩写,elrepo-kernel中罗列出来的长期支持版本。
# 检查内核版本
uname -r
一、yum安装
1、导入仓库源
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
2、查看可安装的软件包
yum --enablerepo="elrepo-kernel" list --showduplicates | sort -r | grep kernel-ml.x86_64
3、选择 ML 或 LT 版本安装, 无指定版本默认安装最新
# 安装 ML 版本
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y # 安装 LT 版本,K8S全部选这个
yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt -y
4、查看现有内核启动顺序
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
5、修改默认启动项
xxx 为序号数字,以指定启动列表中第x项为启动项,x从0开始计数
grub2-set-default xxxx
6、例如设置以4.4内核启动, 则直接输入“grub2-set-default 0”,下次启动即可从4.4启动
# 查看内核启动序号
[root@localhost ~] awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfgCentOS Linux (4.4.179-1.el7.elrepo.x86_64) 7 (Core)CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)CentOS Linux (0-rescue-6d4c599606814867814f1a8eec7bfd1e) 7 (Core)# 设置启动序号
[root@localhost ~] grub2-set-default 0# 重启
reboot# 检查内核版本
uname -r
===========================================================================
二、RPM安装
检查内核版本
uname -r
1、查找版本
因 ELRepo 源都是最新版本,所以旧版本内核只能手动下载。
查找 kernel rpm 历史版:
http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/
2、共需要下载三个类型 rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-4.4.215-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-4.4.215-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-4.4.215-1.el7.elrepo.x86_64.rpm
3、安装内核
rpm -ivh kernel-lt-4.4.215-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-devel-4.4.215-1.el7.elrepo.x86_64.rpm
或者
#一键安装所有
rpm -Uvh *.rpm
4、确认已安装内核版本
[root@localhost ~]# rpm -qa | grep kernel
kernel-headers-3.10.0-1160.15.2.el7.x86_64
kernel-devel-3.10.0-1160.49.1.el7.x86_64
kernel-tools-libs-3.10.0-957.el7.x86_64
kernel-3.10.0-957.el7.x86_64
kernel-ml-4.9.9-1.el7.elrepo.x86_64
kernel-lt-4.4.215-1.el7.elrepo.x86_64
kernel-tools-3.10.0-957.el7.x86_64
kernel-lt-devel-4.4.215-1.el7.elrepo.x86_64
5、设置启动
# 查看启动顺序
[root@localhost ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.4.215-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (4.9.9-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-b91f945269084aa98e8257311ee713c5) 7 (Core)# 设置启动顺序
[root@localhost ~]# grub2-set-default 0# 重启生效
[root@localhost ~]# reboot
====================================================================
三、源码安装
1、安装核心软件包
yum install -y gcc make git ctags ncurses-devel openssl-devel
yum install -y bison flex elfutils-libelf-devel bc
2、创建内核编译目录
使用 home 下的 kernelbuild 目录
mkdir ~/kernelbuild
3、获取内核源码
清华大学镜像站:https://mirror.tuna.tsinghua.edu.cn/kernel/v4.x/?C=M&O=D
其他源码安装包下载地址:https://mirrors.edge.kernel.org/pub/linux/kernel/
linux-4.xx.xx.tar.xz
linux-4.xx.xx.tar.gz
这两个格式都可以的,tar.xz压缩率更高,文件更小。
在线下载:wget https://mirror.tuna.tsinghua.edu.cn/kernel/v4.x/linux-4.17.11.tar.xz
4、解压内核代码
将其解压后进入源码目录:
tar -xvJf linux-4.17.11.tar.xz
为确保内核树绝对干净,进入内核目录并执行 make mrproper 命令:
cd linux-4.17.11
make clean && make mrproper
5、内核配置
复制当前的内核配置文件
config-3.10.0-862.el7.x86_64是我当前环境的内核配置文件,根据实际情况修改
cp /boot/config-3.10.0-862.el7.x86_64 .config
高级配置
y 是启用, n 是禁用, m 是需要时启用.
make menuconfig: 老的 ncurses 界面,被 nconfig 取代
make nconfig: 新的命令行 ncurses 界面
6、编译和安装
编译内核
如果你是四核的机器,x可以是8
make -j x
安装内核
编译完内核后安装:Warning: 从这里开始,需要 root 权限执行命令,否则会失败.
make modules_install install
7、设置启动
# 查看启动顺序
[root@localhost ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.17.11-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (4.9.9-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-b91f945269084aa98e8257311ee713c5) 7 (Core)# 设置启动顺序
[root@localhost ~]# grub2-set-default 0# 重启生效
[root@localhost ~]# reboot
===================================================================
四、卸载 / 降级 内核
例如:
当系统已存在 LT 内核的 5.4.103 版本时,继续安装 LT 内核的 4.4.215 版本则会提示: package kernel-lt-5.4.103-1.el7.elrepo.x86_64 (which is newer than kernel-lt-4.4.215-1.el7.elrepo.x86_64) is already installed
这时就需要进行内核降级,卸载最新版的内核。
1、查看系统当前内核版本
[root@localhost ~]# uname -r
5.4.103-1.el7.elrepo.x86_64
2、查看系统中全部内核
[root@localhost ~]# rpm -qa | grep kernel
kernel-headers-3.10.0-1160.15.2.el7.x86_64
kernel-devel-3.10.0-1160.49.1.el7.x86_64
kernel-tools-libs-3.10.0-957.el7.x86_64
kernel-3.10.0-957.el7.x86_64
kernel-ml-4.9.9-1.el7.elrepo.x86_64
kernel-lt-5.4.103-1.el7.elrepo.x86_64
kernel-tools-3.10.0-957.el7.x86_64
kernel-lt-devel-5.4.103-1.el7.elrepo.x86_64
3、删除指定内核
此处以删除 LT 内核的 5.4.103 版本为例
**注意:**无法卸载当前在用的内核版本。卸载完后不一定需要重启
yum remove -y kernel-lt-devel-5.4.103-1.el7.elrepo.x86_64yum remove -y kernel-lt-5.4.103-1.el7.elrepo.x86_64
检查卸载后内核版本
[root@localhost ~]# rpm -qa | grep kernel
kernel-headers-3.10.0-1160.15.2.el7.x86_64
kernel-devel-3.10.0-1160.49.1.el7.x86_64
kernel-tools-libs-3.10.0-957.el7.x86_64
kernel-3.10.0-957.el7.x86_64
kernel-ml-4.9.9-1.el7.elrepo.x86_64
kernel-tools-3.10.0-957.el7.x86_64
标签:kernel,x86,elrepo,升级,64,内核,el7
From: https://www.cnblogs.com/-genian/p/17688188.html