文章内容
2017/10/16 11:18:38,作 者: 黄兵
Debian/Ubuntu 开启 TCP BBR 拥塞算法
- 这是啥玩意,我就不仔细介绍了.
- 下载地址:
自动选择最新的
非rc版本
(候选发布版),进行安装.安装时会自动卸载旧内核,不会弹出任何窗口,无需人工干预.
更新:
[2017.07.12]
支持用户自行指定内核版本(需要与 -f 命令同时使用).
wget --no-check-certificate -qO 'BBR.sh' 'https://static.pdflibr.com/LinuxShell/BBR.sh' && chmod a+x BBR.sh
- 使用方法:
普通模式,最后需要按下回车才会重启.
bash BBR.sh
强制模式,全自动(如果中间不报错),不需要按下回车.
bash BBR.sh -f
指定安装内核版本,以4.11.9为例.
bash BBR.sh -f v4.11.9
- 检测:
重启后运行以下命令,结果不为空,则开启BBR成功.
lsmod |grep 'bbr'
- 【强制模式】预览:
- 代码预览:
#!/bin/bash[ "$EUID" -ne '0' ] && echo "Error,This script must be run as root! " && exit 1[ $# -gt '1' ] && [ "$1" == '-f' ] && tmpKernelVer="$2" || tmpKernelVer='';KernelVer='';KernelBitVer='';[ -z "$(dpkg -l |grep 'grub-')" ] && echo "Not found grub." && exit 1MainURL='http://kernel.ubuntu.com/~kernel-ppa/mainline'[ -n "$tmpKernelVer" ] && {wget -qO /dev/null "$MainURL/$tmpKernelVer"[ $? -ne '0' ] && echo 'Please input a vaild kernel version! exp: v4.11.9.' && exit 1KernelVer="$tmpKernelVer"}[ -z "$tmpKernelVer" ] && {KernelVerBIG="$(wget -qO- "$MainURL" |awk -F '/">|href="' '{print $2}' |sed '/rc/d;/^$/d' |tail -n1)"[ -n "$KernelVerBIG" ] && KernelVer="$(wget -qO- "$MainURL" |awk -F '/">|href="' '{print $2}' |sed '/rc/d;/^$/d' |grep ''${KernelVerBIG}'' |sort -n |tail -n1)"}[ -z "$KernelVer" ] && echo 'Error,Get Kernel fail! ' && exit 1ReleaseURL="$(echo -n "$MainURL/$KernelVer")"KernelBit="$(getconf LONG_BIT)"[ "$KernelBit" == '32' ] && KernelBitVer='i386'[ "$KernelBit" == '64' ] && KernelBitVer='amd64'[ -z "$KernelBitVer" ] && echo "Error! " && exit 1KernelFile="$(wget -qO- "$ReleaseURL" |awk -F '">|href="' '/generic.*.deb/{print $2}' |grep 'image' |grep "$KernelBitVer" |head -n1)"echo -ne "Download New Kernel\n\t$KernelFile\n"wget -qO "$KernelFile" "$ReleaseURL/$KernelFile"echo -ne "Install New Kernel\n\t$KernelFile\n"dpkg -i "$KernelFile" >/dev/null 2>&1Newest="$(echo "$KernelFile" |awk -F '_' '{print $1}')"KernelList="$(dpkg -l |grep 'linux-image' |awk '{print $2}')"[ -z "$(echo $KernelList |grep -o "$Newest")" ] && echo "Install error." && exit 1for KernelTMP in `echo "$KernelList"`do[ "$KernelTMP" != "$Newest" ] && echo -ne "Uninstall Old Kernel\n\t$KernelTMP\n" && DEBIAN_FRONTEND=noninteractive dpkg --purge "$KernelTMP" >/dev/null 2>&1done[ "$(dpkg --get-selections |grep 'linux-image' |awk '{print $2}' |grep '^install' |wc -l)" != '1' ] && echo "Error, uninstall old Kernel." && exit 1update-grub >/dev/null 2>&1echo "pre-Loading TCP BBR ..."[ ! -f /etc/sysctl.conf ] && touch /etc/sysctl.confsed -i '/net.core.default_qdisc.*/d' /etc/sysctl.confsed -i '/net.ipv4.tcp_congestion_control.*/d' /etc/sysctl.confecho "net.core.default_qdisc=fq" >>/etc/sysctl.confecho "net.ipv4.tcp_congestion_control=bbr" >>/etc/sysctl.confecho "Finish! "[ "$1" == '-f' ] && {echo "It will reboot now..."} || {read -n 1 -p "Press Enter to reboot..." INPif [ "$INP" != '' ] ; thenecho -ne '\b \n'fi}sleep 3 && reboot
其它相关推荐:
评论列表