一键安装最新内核并开启 BBR 脚本

技术 秋水逸冰 2480888浏览 717评论

最近,Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,从 4.9 开始,Linux 内核已经用上了该算法。根据以往的传统,Google 总是先在自家的生产环境上线运用后,才会将代码开源,此次也不例外。
根据实地测试,在部署了最新版内核并开启了 TCP BBR 的机器上,网速甚至可以提升好几个数量级。
于是我根据目前三大发行版的最新内核,开发了一键安装最新内核并开启 TCP BBR 脚本。

本脚本适用环境

系统支持:CentOS 6+,Debian 8+,Ubuntu 16+
虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware
内存要求:≥128M
日期  :2022 年 5 月 11 日

关于本脚本

1、本脚本已在 Vultr 上的 VPS 全部测试通过。
2、当脚本检测到 VPS 的虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。
3、脚本运行完重启发现开不了机的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。
4、由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果。

使用方法

使用root用户登录,运行以下命令:

wget --no-check-certificate -O /opt/bbr.sh https://github.com/teddysun/across/raw/master/bbr.sh
chmod 755 /opt/bbr.sh
/opt/bbr.sh

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下检查:
No.1

uname -r

查看内核版本,显示为新版内核就表示 OK 了。
No.2

sysctl net.ipv4.tcp_available_congestion_control

返回值一般为:

net.ipv4.tcp_available_congestion_control = bbr cubic reno

或者:

net.ipv4.tcp_available_congestion_control = reno cubic bbr

No.3

sysctl net.ipv4.tcp_congestion_control

返回值一般为:

net.ipv4.tcp_congestion_control = bbr

No.4

sysctl net.core.default_qdisc

返回值一般为:

net.core.default_qdisc = fq

No.5

lsmod | grep bbr

返回值有 tcp_bbr 模块即说明 bbr 已启动。比如:

tcp_bbr                20480  3

注意:并不是所有的 VPS 都会有此返回值,若没有也属正常。

特别说明

如果你使用的是 Google Cloud Platform (GCP)更换内核,有时会遇到重启后,整个磁盘变为只读的情况。只需执行以下命令即可恢复:

mount -o remount rw /

 

更新日志:

2021 年 5 月 11 日:
1、在 CentOS 7 下更改为安装 5.15.38 版本内核;
2、精简在 Debian 和 Ubuntu 下的可选内核版本,从 5.15 起始到当前最新版结束。

2021 年 1 月 3 日:
1、为了稳定性,在 CentOS 7 下更改 elrepo-kernel 为 centos-release-xen-48,并升级安装 4.9 版稳定内核;
2、在 CentOS 6 和 CentOS 8 下不再安装 elrepo-kernel。原因:CentOS 6 是通过 rpm 安装 4.18.20;CentOS 8 则无需升级内核即可开启 BBR。
3、精简在 Debian 和 Ubuntu 下的可选内核版本,从 5.9 起始到当前最新版结束。

2020 年 6 月 23 日:
1、重构了代码,去除一些不必要的处理;
2、精简在 Debian 和 Ubuntu 下的可选内核版本,从 5.6 起始到当前最新版结束。

2018 年 12 月 14 日:
1、修正:在 CentOS 6 系统下 kernel-ml 及 kernel-ml-devel 无法安装的问题。原因是 elrepo 官方最近取消了 kernel-ml 及 kernel-ml-devel 的 rpm 资源。脚本已改为下载 rpm 来安装的方式。版本 4.18.20 将会是 CentOS 6 下最新的内核,目测以后也不会再有升级了,请尽快迁移到 CentOS 7 系统。

2018 年 06 月 09 日:
1、修正:在 CentOS 系统下将 elrepo-kernel 默认启用,以解决在安装新内核后执行 yum update 再次安装旧内核的问题。

2018 年 05 月 12 日:
1、修正:在 Ubuntu 或 Debian 系统中某些情况下获取不到某个编译失败的安装包导致退出安装的问题。并且现在可以手动选择安装从 4.14 到最新版本的内核。

2018 年 02 月 24 日:
1、新增:手动安装最新版内核 headers 的教程。

2017 年 10 月 28 日:
1、更新:自动判断内核版本。如果内核版本已经大于或等于 4.9 且没有开启 BBR,脚本会直接设置好 BBR;
2、新增:脚本执行时会在当前目录下创建日志(install_bbr.log),方便查看及排错。

2017 年 02 月 22 日:
1、更新:自动获取最新版 4.10 内核。

2017 年 01 月 20 日:
1、新增:自动获取并下载安装最新版内核的功能。

2017 年 01 月 13 日:
1、更新:内核到 4.9.3。

2017 年 01 月 09 日:
1、更新:内核到 4.9.1。

参考链接:

https://github.com/google/bbr/blob/master/Documentation/bbr-quick-start.md
http://elrepo.org/tiki/tiki-index.php
http://kernel.ubuntu.com/~kernel-ppa/mainline/

转载请注明:秋水逸冰 » 一键安装最新内核并开启 BBR 脚本

发表我的评论
取消评论

请输入正确答案后提交评论 *超出时限。 请再次填写验证码。

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (717)

  1. 想问下如何卸载,貌似只有安装方案
    怎么卸载?6年前(2018-05-23)回复
    • 内核的安装与卸载可以这么理解,你安装了新内核,老内核还在系统里,只是没有被引导启动而已。 CentOS 系列的可以通过 yum remove 【旧版内核完整的名称】 这种方式来卸载旧内核。Debian 系列的本人没有卸载过内核,无法提供有效经验。
      秋水逸冰6年前(2018-05-23)回复
  2. 求助, Vultr Ubuntu 16.04 x64 升级xshell连不上了,直接连接失败怎么办?
    试试你的火力6年前(2018-05-20)回复
    • 你好,请在 Vultr 后台里查看系统启动过程,看看是否正确启动了。
      秋水逸冰6年前(2018-05-23)回复
  3. 最近开始无法使用了?在vu家2.5刀机器上,总提示内核卸载异常,请检查。用的是Debian系统
    三不6年前(2018-05-19)回复
    • Debian 系统可以自选内核版本来安装的。请具体描述一下现象,你这样说是无法判断原因的。
      秋水逸冰6年前(2018-05-23)回复
  4. 怎么评论到这里了啊
    zmoe6年前(2018-05-17)回复
  5. centos6.9 32位 失败 还好旧内核在 yum一个新内核然后删改了一下你的脚本 成功了 非常感谢!
    马花藤6年前(2018-05-15)回复
  6. 升级centos7.5,用最新脚本安装4.16.8-1以后。 sysctl net.ipv4.tcp_available_congestion_control 返回 net.ipv4.tcp_available_congestion_control = reno cubic bbr 网卡算法的顺序变了,这样子bbr算法不是最优先使用了?
    Me26年前(2018-05-13)回复
    • 看了下,bbr应该启用了,没错,sysctl net.ipv4.tcp_congestion_control指定了bbr,lsmod | grep bbr也正常。 centos7.5 使用脚本貌似没内核版本的选择,debian有。
      Me26年前(2018-05-17)回复
    • 这是属于正常的。主要是看 sysctl net.ipv4.tcp_congestion_control 返回值为 bbr 就好了
      秋水逸冰6年前(2018-05-19)回复
  7. ---------- System Information ---------- OS : Debian GNU/Linux 8 Arch : x86_64 (64 Bit) Kernel : 3.16.0-5-amd64 ---------------------------------------- Auto install latest kernel for TCP BBR URL: https://teddysun.com/489.html ---------------------------------------- Press any key to start...or Press Ctrl+C to cancel Error: Get latest kernel version failed. 大便8系统安装出错,获取最新内核版本失败。vultr的5美刀机器,新加坡,启用ipv6,之前只安装了ss-python
    jhgongfu6年前(2018-05-11)回复
  8. This installation script is no longer working on Ubuntu 14.04. There are some errors that happen when trying to install the latest kernel. The solution is to install kernel 4.13 manually before running the script. You can find an detailed instructions in this tutorial: https://www.tipsforchina.com/how-to-setup-a-fast-shadowsocks-server-on-vultr-vps-the-easy-way.html The commands to enter before running the script: wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13.5/linux-image-4.13.5-041305-generic_4.13.5-041305.201710050600_amd64.deb dpkg -i linux-image-4.*.deb update-grub reboot
    James6年前(2018-05-08)回复
  9. 老大,紧急求助!升级完机器挂了,搬瓦工--Ubuntu 16.04 x86_64,Xshell也登入不了,提示Could not connect to '95.163.199.82' (port 26677): Connection failed. Status: Running Due to high CPU usage, server's CPU clock is currently being limited. Once load is reduced to levels described in our Terms of Service, this limitation will be automatically removed within 60-120 minutes. If your application requires more CPU time, we suggest upgrading to a better plan. Please contact helpdesk for instructions on how to upgrade your server. Upgrades are performed seamlessly without data loss and without downtime.
    msm11416年前(2018-05-07)回复
    • 搬瓦工自带含有 bbr 的 CentOS 系统。 而 Ubuntu 老版本估计已经不能再安装最新版的内核了。
      秋水逸冰6年前(2018-05-09)回复
    • 搬瓦工ubuntu16使用脚本更新内核之后,ssh直接连接不上。最后使用apt-get更新成支持bbr的内核版本,才能顺利开启bbr。
      zmoe6年前(2018-05-17)回复
  10. 现在用Ubuntu16.04,装了BBR后,机器就挂掉了
    6年前(2018-05-05)回复
  11. 临时救急方案:把脚本下载下来之后先不要执行 vim编辑下,把 latest_version= 后面的内容改成你想装的内核版本,比如"4.9.98"
    alomoi6年前(2018-05-03)回复
  12. bbr一键脚本安装重启之后,机器好像就挂掉了。vultr Debian8x64
    大白6年前(2018-05-02)回复
    • Debian或Ubuntu的系统,现在的最新版内核貌似不稳定,不推荐安装。 目前Ubuntu18.04已经自带4.15内核,无需升级内核也能开启bbr,建议试试看
      秋水逸冰6年前(2018-05-03)回复
      • 好的 ,回去试试。现在脚本是直接更新到最新版本吗,能不能更新到指定版本。
        大白6年前(2018-05-03)回复
  13. 失效了 ,之前可以的
    woo6年前(2018-04-29)回复
  14. 4.16.4以后的内核有问题?装完就无法重启了
    月下飞尘6年前(2018-04-29)回复
  15. 怪我手贱,,alibaba ECS实例,刷完后挂掉了......
    kim6年前(2018-04-28)回复