最近为了将个站切换为 Cyberpanel + OpenLiteSpeed 架构,新装了Debian操作系统,想的是内核要更新一些,且稳定。结果Cyberpanel的安装脚本无法识别。
Unable to detect your OS...
CyberPanel is supported on Ubuntu 18.04, Ubuntu 20.04, Ubuntu 20.10, CentOS 7.x, CentOS 8.x, CloudLinux 7.x, CloudLinux 8.x and AlmaLinux 8.x...
无奈只能换回一直使用的CentOS系列。CentOS系列大家都懂的,内核比较老。所以就有了更新内核的需求。CloudCone 的官方帮助文档上面没有8系列相关的文档。所以在此记录一下。
查看当前系统的内核版本
方法 1
$ uname -sr
Linux 4.18.0-348.2.1.el8_5.x86_64
方法 2
查看 /boot 目录中可用的初始化启动列表
$ ls -l /boot/vmlinuz-*
方法 3
$ grubby --default-kernel
/boot/vmlinuz-4.18.0-348.2.1.el8_5.x86_64
因为 RHEL 中 GRUB2 配置参数再次更改,现在我们需要使用 grubby 设置默认内核或更改系统中内核的默认引导项。
Grubby 是一个命令行工具,用于更新和显示有关各种架构特定引导加载程序的配置文件的信息。 它主要设计用于安装新内核并需要查找有关当前引导环境的信息的脚本。在新版本的 AlmaLinux8.X 中,Grubby是默认安装的。
关于Grubby管理的 GRUB 配置文件
默认引导加载程序目标主要由构建 grubby 的架构决定。 每个架构都有一个首选的引导加载程序,每个引导加载程序都有自己的配置文件。 如果在命令行上没有选择引导加载程序,grubby 将使用这些默认设置来搜索现有配置。 如果没有找到引导加载程序配置文件,grubby 将使用该架构的默认值。 这些默认值列在下表中。
Arch | Bootloader | Configuration File |
---|---|---|
x86_64 [BIOS] | grub2 | /boot/grub2/grub.cfg |
x86_64 [UEFI] | grub2 | /boot/efi/EFI/redhat/grub.cfg |
i386 | grub2 | /boot/grub2/grub.cfg |
ia64 | grub2 | /boot/efi/EFI/redhat/elilo.conf |
查看更详细的内容
$ grubby --info=/boot/vmlinuz-4.18.0-348.2.1.el8_5.x86_64
index=0
kernel="/boot/vmlinuz-4.18.0-348.2.1.el8_5.x86_64"
args="ro crashkernel=auto resume=/dev/mapper/almalinux-swap rd.lvm.lv=almalinux/root rd.lvm.lv=almalinux/swap rhgb quiet $tuned_params"
root="/dev/mapper/almalinux-root"
initrd="/boot/initramfs-4.18.0-348.2.1.el8_5.x86_64.img $tuned_initrd"
title="AlmaLinux (4.18.0-348.2.1.el8_5.x86_64) 8.5 (Arctic Sphynx)"
id="534ab36635e14f6eaf92f3995c8b32a0-4.18.0-348.2.1.el8_5.x86_64"
安装 ELRepo 源
ELRepo 是企业 Linux 软件包的 RPM 存储库。 ELRepo 支持 Red Hat Enterprise Linux (RHEL) 及其衍生产品,如 Scientific Linux、CentOS Linux、Alma Linux 和 Rocky Linux。 ELRepo 项目专注于与硬件相关的软件包,以增强您对 Enterprise Linux 的体验。 这包括文件系统驱动程序、图形驱动程序、网络驱动程序、声音驱动程序、网络摄像头和视频驱动程序。
$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装ELRepo仓库源
$ dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
Last metadata expiration check: 6:08:09 ago on Tue 14 Dec 2021 07:12:38 AM CST.
elrepo-release-8.el8.elrepo.noarch.rpm 15 kB/s | 13 kB 00:01
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
elrepo-release noarch 8.2-1.el8.elrepo @commandline 13 k
Transaction Summary
================================================================================
Install 1 Package
T... ...
Verifying : elrepo-release-8.2-1.el8.elrepo.noarch 1/1
Installed:
elrepo-release-8.2-1.el8.elrepo.noarch
Complete!
查看可用的内核
$ dnf --disablerepo="*" --enablerepo="elrepo-kernel" list available
ELRepo.org Community Enterprise Linux Kernel Re 40 kB/s | 2.0 MB 00:51
Available Packages
bpftool.x86_64 5.15.7-1.el8.elrepo elrepo-kernel
......
python3-perf.x86_64 5.15.7-1.el8.elrepo elrepo-kernel
安装新的内核
$ dnf -y install --enablerepo=elrepo-kernel kernel-lt kernel-lt-devel
ELRepo.org Community Enterprise Linux Repositor 350 kB/s | 336 kB 00:01
... ...
Downloading Packages:
(1/4): kernel-lt-5.4.164-1.el8.elrepo.x86_64.rp 60 kB/s | 66 kB 00:01
(2/4): kernel-lt-devel-5.4.164-1.el8.elrepo.x86 13 mB/s | 13 MB 00:01
(3/4): kernel-lt-modules-5.4.164-1.el8.elrepo.x 25 mB/s | 25 MB 00:01
(4/4): kernel-lt-core-5.4.164-1.el8.elrepo.x86_ 28 mB/s | 28 MB 00:01
--------------------------------------------------------------------------------
Total 21 mB/s | 66 MB 00:04
Running transaction check
... ...
kernel-lt-modules-5.4.164-1.el8.elrepo.x86_64
Complete!
安装完成后查看新的内核
$ grubby --default-kernel
/boot/vmlinuz-5.4.164-1.el8.elrepo.x86_64
查看所有内核
$ grubby --info=ALL
安装后不出意外一般都已经设置好默认启动了,但是不知道CloudCone是怎么回事,默认没有生效。所以我们手动指定一下。
$ grubby --set-default=/boot/vmlinuz-5.4.164-1.el8.elrepo.x86_64
重启生效
$ reboot
再次查看
$ grubby --default-kernel
/boot/vmlinuz-5.4.164-1.el8.elrepo.x86_64
更新成功。
删除旧的内核请谨慎操作,不建议在生产环境操作。
查看旧的内核列表,用这个命令看可阅读性比较高。
$ rpm -qa | grep kernel | sort -V
kernel-lt-devel-5.4.164-1.el8.elrepo.x86_64
... ...
kernel-modules-4.18.0-348.2.1.el8_5.x86_64
删除旧的内核
$ dnf remove kernel-core-4.18.0 kernel-devel-4.18.0 kernel-tools-libs-4.18.0 kernel-headers-4.18.0
No match for argument: kernel-devel-4.18.0
No match for argument: kernel-headers-4.18.0
Dependencies resolved.
... ...
kmod-kvdo-6.2.5.72-81.el8.x86_64
vdo-6.2.5.74-14.el8.x86_64
Complete!
查看是否删除完成
$ rpm -qa | grep kernel | sort -V
kernel-lt-5.4.164-1.el8.elrepo.x86_64
kernel-lt-core-5.4.164-1.el8.elrepo.x86_64
kernel-lt-devel-5.4.164-1.el8.elrepo.x86_64
kernel-lt-modules-5.4.164-1.el8.elrepo.x86_64
什么是BBR,为什么要开启BBR
TCP BBR是由来自Google的 Neal Cardwell 和 Yuchung Cheng 发表的新的TCP拥塞控制算法,其目的就是要尽量跑满带宽,并且尽量不要有排队的情况。目前已经在Google内部大范围使用并且随着linux 4.9版本正式发布。
检查是否安装BBR
$ sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = reno cubic
$ sysctl net.core.default_qdisc
net.core.default_qdisc = fq_codel
返回结果中没有BBR
安装BBR
Linux内核4.9版本以后自带BBR,之前我们已经更新了内核,所以,现在只需要开去BBR功能即可。
echo "net.ipv4.tcp_congestion_control= bbr" >> /etc/sysctl.conf
echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
sysctl -p
reboot
重启后执行检查命令,看是否有输出BBR。
$ sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = reno cubic bbr
现在内核中已经BBR功能。下面检测是否正在运行。
$ lsmod | grep bbr
tcp_bbr 20480 8
看到 tcp_bbr 说明 BBR 已经成功在运行了。