一键快速升级
# 导入 repo 密钥/源 && 安装最新内核 && 设置最新内核为第一启动顺序 && 重启服务器
# CentOS 7
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org && \
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm && \
yum clean all && \
rm -rf /var/cache/yum && \
yum --enablerepo=elrepo-kernel install kernel-ml -y && \
grub2-mkconfig -o /boot/grub2/grub.cfg && \
grub2-set-default 0 && \
reboot
# CentOS 8
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org && \
yum install -y https://www.elrepo.org/elrepo-release-8.0-2.el8.elrepo.noarch.rpm && \
yum clean all && \
rm -rf /var/cache/yum && \
yum --enablerepo=elrepo-kernel install kernel-ml -y && \
grub2-mkconfig -o /boot/grub2/grub.cfg && \
grub2-set-default 0 && \
reboot
# 确认内核版本
uname -r
5.3.7-1.el7.elrepo.x86_64
# done!
一步一步安装
导入 epel-repo
源
# CentOS 7
yum install -y https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# CentOS 8
yum install -y https://www.elrepo.org/elrepo-release-8.0-2.el8.elrepo.noarch.rpm
导入密钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
检查当前能安装的内核版本
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available | grep kernel-ml
kernel-ml.x86_64 5.3.7-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 5.3.7-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 5.3.7-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 5.3.7-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 5.3.7-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 5.3.7-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 5.3.7-1.el7.elrepo elrepo-kernel
安装最新内核
yum -y install --enablerepo=elrepo-kernel kernel-ml
减少启动菜单的等待时间
vim /etc/default/grub
# 将GRUB_TIMEOUT=5 改为 1 即等待 1 秒后启动
#GRUB_TIMEOUT=5
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
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 LANG=zh_CN.UTF-8"
GRUB_DISABLE_RECOVERY="true"
重新生成启动菜单列表(兼容传统/EFI)
grub2-mkconfig -o /boot/grub2/grub.cfg
确认启动顺序
此时 index=0
的内核版本应该等于刚刚更新的内核版本即为正确
grubby --info=ALL
index=0
kernel=/boot/vmlinuz-5.3.7-1.el7.elrepo.x86_64
args="ro crashkernel=auto net.ifnames=0 console=tty0 console=ttyS0,115200n8 LANG=zh_CN.UTF-8"
root=UUID=eb448abb-3012-4d8d-bcde-94434d586a31
initrd=/boot/initramfs-5.3.7-1.el7.elrepo.x86_64.img
title=CentOS Linux (5.3.7-1.el7.elrepo.x86_64) 7 (Core)
index=1
kernel=/boot/vmlinuz-3.10.0-1062.1.2.el7.x86_64
args="ro crashkernel=auto net.ifnames=0 console=tty0 console=ttyS0,115200n8 LANG=zh_CN.UTF-8"
root=UUID=eb448abb-3012-4d8d-bcde-94434d586a31
initrd=/boot/initramfs-3.10.0-1062.1.2.el7.x86_64.img
title=CentOS Linux (3.10.0-1062.1.2.el7.x86_64) 7 (Core)
index=2
kernel=/boot/vmlinuz-3.10.0-957.27.2.el7.x86_64
args="ro crashkernel=auto net.ifnames=0 console=tty0 console=ttyS0,115200n8 LANG=zh_CN.UTF-8"
root=UUID=eb448abb-3012-4d8d-bcde-94434d586a31
initrd=/boot/initramfs-3.10.0-957.27.2.el7.x86_64.img
title=CentOS Linux (3.10.0-957.27.2.el7.x86_64) 7 (Core)
index=3
kernel=/boot/vmlinuz-0-rescue-f0f31005fb5a436d88e3c6cbf54e25aa
args="ro crashkernel=auto net.ifnames=0 console=tty0 console=ttyS0,115200n8"
root=UUID=eb448abb-3012-4d8d-bcde-94434d586a31
initrd=/boot/initramfs-0-rescue-f0f31005fb5a436d88e3c6cbf54e25aa.img
title=CentOS Linux (0-rescue-f0f31005fb5a436d88e3c6cbf54e25aa) 7 (Core)
index=4
non linux entry
切换默认启动内核为最新版本内核
grub2-set-default 0
重启
reboot
确认内核版本
uname -r
5.3.7-1.el7.elrepo.x86_64
开启 bbr
bbr 仅支持 kernel 版本 >= 4.9 以上的版本开启
# 检查当前环境是否有启用 bbr
lsmod | grep bbr
# 如果 没显示 bbr 则继续执行
modprobe tcp_bbr && \
echo "tcp_bbr" >> /etc/modules-load.d/modules.conf && \
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf &&\
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf && \
sysctl -p
确认 bbr 启用
lsmod | grep bbr
# 显示 tcp_bbr 表示 已启用 bbr
tcp_bbr 20480 1
sysctl net.ipv4.tcp_available_congestion_control && \
sysctl net.ipv4.tcp_congestion_control
# 显示有 bbr 表示 已启用 bbr
net.ipv4.tcp_available_congestion_control = reno cubic bbr
net.ipv4.tcp_congestion_control = bbr
内核更新
# 更新内核且确保系统启动内核为最新版本内核
yum --enablerepo=elrepo-kernel install kernel-ml -y && \
grub2-mkconfig -o /boot/grub2/grub.cfg && \
grub2-set-default 0 && \
reboot
一键清理旧内核
(请确保先运行内核更新
或重新生成启动菜单列表(兼容传统/EFI)
后再运行此命令,否则可能导致已更新的最新版本内核被非预期删除)
yum remove $(rpm -qa | grep kernel | grep -v $(uname -r))
内核降级
重新启动 在启动菜单选择旧版内核启动后执行删除新版内核操作
yum remove -y kernel-ml
删除后再次重启确认内核版本即可
清理旧内核
# 检查当前所有已安装的内核版本
rpm -qa |grep kernel
kernel-3.10.0-957.27.2.el7.x86_64
kernel-3.10.0-1062.1.2.el7.x86_64
kernel-ml-5.3.7-1.el7.elrepo.x86_64
kernel-3.10.0-957.21.3.el7.x86_64
kernel-3.10.0-957.10.1.el7.x86_64
kernel-3.10.0-862.14.4.el7.x86_64
yum remove 非启动版本的内核即可清理
如 删除 kernel-3.10.0-862.14.4.el7.x86_64 kernel-3.10.0-957.10.1.el7.x86_64
yum remove -y kernel-3.10.0-862.14.4.el7.x86_64 kernel-3.10.0-957.10.1.el7.x86_64
依赖关系解决。
======================================================================================================================================================
软件包 架构 版本 仓库 大小
======================================================================================================================================================
移除:
kernel x86_64 3.10.0-862.14.4.el7 @System 62 M
kernel x86_64 3.10.0-957.10.1.el7 @System 63 M
事务概要
======================================================================================================================================================
移除 2 软件包
将会释放空间:125 M
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
运行脚本 : kernel-3.10.0-957.10.1.el7.x86_64 1/2
删除 : kernel-3.10.0-957.10.1.el7.x86_64 1/2
运行脚本 : kernel-3.10.0-957.10.1.el7.x86_64 1/2
运行脚本 : kernel-3.10.0-862.14.4.el7.x86_64 2/2
删除 : kernel-3.10.0-862.14.4.el7.x86_64 2/2
运行脚本 : kernel-3.10.0-862.14.4.el7.x86_64 2/2
验证 : kernel-3.10.0-862.14.4.el7.x86_64 1/2
验证 : kernel-3.10.0-957.10.1.el7.x86_64 2/2
已移除:
kernel-3.10.0-862.14.4.el7.x86_64 kernel-3.10.0-957.10.1.el7.x86_64