【Linux系统中手动更换内核】前言示例(好像有点头条党?基本不会介绍BBR的原理,需要详细了解的,大家可以访问研究,我的技术不够好,难以解释清楚,请见谅!先说BBR吧!维基百科解释是BottleneckBandwidthandRound-trippropagationtime(BBR),这是一种TCP拥塞控制algorithm(opensource)2016年谷歌开发的。TCP拥塞控制算法有很多,BBR就是其中之一,但是因为它的优秀,所以被很多人采用。至于linux内核什么时候开始的支持native,网上真是众说纷纭,很多人的文章感觉都是在互相抄袭,连2.6.*的说法都能弹出来(我怀疑是某些采集站)。相对来说,很多大佬的博客文章都比较严谨,基本都是4.9的。抱着不明白的态度去google了一下,不知道对不对。维基百科上有详细的说明,可以找到如下注释:KernelInitialReleaseDateLatestVersionMaintainerSupportStatusRemarks4.9December11,20164.9.148GregKrohman2016年12月长期支持版本BBR拥塞控制将支持到2023年1月。更换/更新内核。这个时候我们更换内核吧。这里我的测试机是中国香港的ECS。当前Kernel版本$uname-rupdatepackage$yumupdate-yELRepoproject这里需要用到Repo项目的EnterpriseLinux软件包的RPM仓库。导入ELRepo公钥$rpm--importhttps://www.elrepo.org/RPM-GP...安装ELRepo的yum源到系统$yuminstallhttps://www.elrepo.org/elrepo...安装newkernel查看ELRepo仓库,当前系统支持的内核包ELRepo会为他的LinuxKernelArchives提供资源。$yum--disablerepo="*"--enablerepo="elrepo-kernel"listavailable安装最新的主线稳定内核$yum--enablerepo=elrepo-kernelinstallkernel-ml更改grub配置安装新的Kernrl后,系统不会帮你切换到新内核,重启也不行。我们需要自己设置,将新内核设置为默认启动选项。查看所有内核$rpm-qa|grepkernel查看当前内核$uname-r查看内核启动顺序$awk-F''$1=="menuentry"{printi++":"$2}'/etc/grub2安装完.cfg后内核还没有被切换了。通过检查可以看出,新安装的内核位于第一??个位置,标记为0。这里就是我们需要修改/etc/default/grub文件的地方,让新安装的内核成为系统启动时的默认选项开始。$vim/etc/default/grub需要将GRUB_DEFAULT=saved改为GRUB_DEFAULT=0,然后保存。当然你也可以在安装其他版本的Kernel后更改GRUB_DEFAULT的值。重新生成内核配置$grub2-mkconfig-o/boot/grub2/grub.cfg并重启机器$reboot重启后查看是否成功$uname-r删除多余的内核安装新内核后可以选择删除其他内核drop,但请注意不要删除正在运行的内核!!!查看所有内核$rpm-qa|grepkernel移除你想要移除的内核$yumremovekernel-[old_kernel_version]例如$yumremovekernel-3.10.0-957.el7.x86_64重新生成Kernrl配置$grub2-mkconfig-o/boot/grub2/grub.cfg启用BBR需要很长时间。除了更新内核之外,还有一个重要的事情就是启用BBR。编辑/tec/sysctl.conf文件$vim/etc/sysctl.conf添加如下内容:net.core.default_qdisc=fqnet.ipv4.tcp_congestion_control=bbr或者使用tee命令重定向追加到/tec/sysctl.conf文件:$echo'net.core.default_qdisc=fq'|sudotee-a/etc/sysctl.conf$echo'net.ipv4.tcp_congestion_control=bbr'|sudotee-a/etc/sysctl.conf从配置文件"/etc/sysctl.conf"加载内核参数设置$sysctl-p验证是否成功(是否启用BBR$sysctlnet.ipv4.tcp_congestion_control#net.ipv4.tcp_congestion_control=bbr$sysctlnet.ipv4.tcp_available_congestion_control#net.ipv4.tcp_available_congestion_control=renocubicbbr*检查内核模块是否加载$lsmod|grepbbr
