debian升级内核

网络 by 神秘人 at 2017-11-12

为什么需要升级内核

BBR 已经在4.9.0-rc8内核版本首次测试,而且以后所有的 正式/测试 的内核版本中自带 你可以在 Kernel.org 得到最新的Linux内核版本情况.

首先是挑选需要的版本,官方 upstream kernel 列表:http://kernel.ubuntu.com/~kernel-ppa/mainline/

最好请勿在生产环境安装,以免产生不可预测之后果。
重启开不了鸡的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。
除了OpenVZ,理论上其他虚拟化全部都支持.
以下命令全部以Root登录执行的,你可能需要Sudo.

内核一般由 2 部份组成,linux-headers 是内核的头文件,当你编译的程序需要引用内核时就靠它了; linux-image 开头的文件就是内核编译后的镜像,是实际可运行的部分。generic 和 lowlatency 则是针对不同的使用场景进行调优的版本。

稍微查了一下 lowlatency 的信息。它比较适用实时性要求较高的场景,比如说录音之类的使用场景,所谓有得必说失,代价可能是稳定性和吞吐量(这个就跟 BBR 的原理差不多,牺牲带宽换取速度,当然这里的吞吐量会不会也影响到网络就不知道咯)。我这边由于网络出口本身也就不怎么样,估计就是有差别也很难测得出来。总之,若你不知道选哪个的话,就用 generic 版本的。

安装配置

上面有 3 个 headers 和 2 个 image ,其中 headers 中的 all 是 generic 和 lowlatency 都需要的依赖。也就是一共要安装 3 个包。 接下来,把 3 个文件都 wget 到本地:

安装:

dpkg -i linux-*

配置使用新内核:

update-grub
reboot

正常启动,删除旧内核,通过以下的命令列出所有的 headers 和 image:

dpkg -l | grep linux-headers | awk '{print $2}'
dpkg -l | grep linux-image | awk '{print $2}'

然后把旧的 headers 和 image 一个个删除掉就行了:

apt-get  purge xxxx

BBR 开启BBR

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf

echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

保存使命令生效.

sysctl -p

查看状况

如果以下命令输出有bbr,那么已经成功开启BBR.

sysctl net.ipv4.tcp_available_congestion_control

如果以下命令输出有tcp-bbr,那么BBR正在运行.

lsmod | grep bbr