相關推薦

Linux一鍵安裝最新內核並開啟BBR 腳本

最近,Google開源了其TCP BBR擁塞控制算法,並提交到了Linux內核,從4.9開始,Linux內核已經用上了該算法。根據以往的傳統,Google總是先在自家的生產環境上線運用後,才會將代碼開源,此次也不例外。
根據實地測試,在部署了最新版內核並開啟了TCP BBR的機器上,網速甚至可以提升好幾個數量級。
於是我根據目前三大發行版的最新內核,開發了一鍵安裝最新內核並開啟TCP BBR腳本。

本腳本適用環境

系統支持:CentOS 6+,Debian 7+,Ubuntu 12+
虛擬技術:OpenVZ以外的,比如KVM、Xen、VMware等
內存要求:≥128M
日期:2018年06月09日

關於本腳本

1、本腳本已在Vultr上的VPS全部測試通過。
2、當腳本檢測到VPS的虛擬方式為OpenVZ時,會提示錯誤,並自動退出安裝。
3、腳本運行完重啟發現開不了機的,打開VPS後台控制面板的VNC,開機卡在grub引導,手動選擇內核即可。
4、由於是使用最新版系統內核,最好請勿在生產環境安裝,以免產生不可預測之後果。

使用方法

使用root用戶登錄,運行以下命令:

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

安裝完成後,腳本會提示需要重啟VPS,輸入y並回車後重啟。
重啟完成後,進入VPS,驗證一下是否成功安裝最新內核並開啟TCP BBR,輸入以下命令:

uname -r

查看內核版本,顯示為最新版就表示OK 了

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

sysctl net.ipv4.tcp_congestion_control

返回值一般為:
net.ipv4.tcp_congestion_control = bbr

sysctl net.core.default_qdisc

返回值一般為:
net.core.default_qdisc = fq

lsmod | grep bbr

返回值有tcp_bbr模塊即說明bbr已啟動。注意:並不是所有的VPS都會有此返回值,若沒有也屬正常。

CentOS 下最新版內核headers 安裝方法

本來打算在腳本里直接安裝kernel-ml-headers,但會出現和原版內核headers衝突的問題。因此在這裡添加一個腳本執行完後,手動安裝最新版內核headers之教程。
執行以下命令

yum --enablerepo=elrepo-kernel -y install kernel-ml-headers

根據CentOS 版本的不同,此時一般會出現類似於以下的錯誤提示:

Error: kernel-ml-headers conflicts with kernel-headers-2.6.32-696.20.1.el6.x86_64
Error: kernel-ml-headers conflicts with kernel-headers-3.10.0-693.17.1.el7.x86_64

因此需要先卸載原版內核headers ,然後再安裝最新版內核headers。執行命令:

yum remove kernel-headers

確認無誤後,輸入y,回車開始卸載。注意,有時候這麼操作還會卸載一些對內核headers依賴的安裝包,比如gcc、gcc-c++之類的。不過不要緊,我們可以在安裝完最新版內核headers後再重新安裝回來即可。
卸載完成後,再次執行上面給出的安裝命令。

yum --enablerepo=elrepo-kernel -y install kernel-ml-headers

成功安裝後,再把那些之前對內核headers 依賴的安裝包,比如gcc、gcc-c++ 之類的再安裝一次即可。

為什麼要安裝最新版內核headers呢?
這是因為shadowsocks-libev版有個tcp fast open功能,如果不安裝的話,這個功能是無法開啟的。

內核升級方法

如果是CentOS 系統,執行如下命令即可升級內核:

yum -y install kernel-ml kernel-ml-devel

如果你還手動安裝了新版內核headers ,那麼還需要以下命令來升級headers :

yum -y install kernel-ml-headers

CentOS 6 的話,執行命令:

sed -i 's/^default=.*/default=0/g' /boot/grub/grub.conf

CentOS 7 的話,執行命令:

grub2-set-default 0

如果是Debian/Ubuntu系統,則需要手動下載最新版內核來安裝升級。
這裡下載最新版的內核deb安裝包。
如果系統是64位,則下載amd64的linux-image中含有generic這個deb包;
如果系統是32位,則下載i386的linux-image中含有generic這個deb包;
安裝的命令如下(以最新版的64位4.12.4舉例而已,請替換為下載好的deb包):

dpkg -i linux-image-4.12.4-041204-generic_4.12.4-041204.201707271932_amd64.deb

安裝完成後,再執行命令:

/usr/sbin/update-grub

最後,重啟VPS 即可。

特別說明

如果你使用的是Google Cloud Platform (GCP)更換內核,有時會遇到重啟後,整個磁盤變為只讀的情況。只需執行以下命令即可恢復:

mount -o remount rw /

更新日誌:

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腳本

为您推荐

發佈留言

联系我们

联系我们

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部