Oracle 云申请的CentOS 7 系统,自带3.1内核,且为EFI引导,并默认开启SELinux,升级内核开启BBR易出现错误导致无法开机。开启原版BBR需要4.9以上内核,以下内容记录升级内核并开启BBR的过程。
更新系统
sudo yum update -y
查看内核
uname -r 3.10.0-1062.1.1.el7.x86_64
改SELinux为permissive模式
查看SELinux状态,默认开启:
sestatus
将enforcing改为permissive,如下:
sudo vi /etc/sysconfig/selinux
SELINUX=permissive
重启vps:
sudo reboot
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org sudo yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
查看可安装内核
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
安装内核
sudo yum --enablerepo=elrepo-kernel install kernel-ml
查看新内核是否安装成功
rpm -qa | grep kernel
这是一个容易出错的地方,以前碰到的启动配置文件,大多是在/boot/grub2/grub.cfg,而该系统为EFI引导,配置文件位置不同。
sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
列出系统开机的所有启动项
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/efi/EFI/centos/grub.cfg
设置默认启动项
sudo grub2-set-default 0
重启VPS
sudo reboot
查看内核
uname -r 5.3.1-1.el7.elrepo.x86_64
开启bbr(直接抄袭大佬的全部内容)
执行 lsmod | grep bbr,如果结果中没有 tcp_bbr 的话就先执行:
sudo modprobe tcp_bbr
echo "tcp_bbr" | sudo tee --append /etc/modules-load.d/modules.conf
执行
echo "net.core.default_qdisc=fq" | sudo tee --append /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee --append /etc/sysctl.conf
保存生效
sudo sysctl -p
执行
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
如果结果都有 bbr,则证明你的内核已开启 BBR。
执行 lsmod | grep bbr,看到有 tcp_bbr 模块即说明 BBR 已启动。
重新开启SELinux
检查有无SELinux相关错误:
sudo cat /var/log/messages | grep "SELinux is preventing"
确保无错误后,再启用SELinux Enforcing 模式
sudo vi /etc/sysconfig/selinux
将permissive改回enforcing,如下修改:
SELINUX=enforcing
重启VPS
sudo reboot
文章评论