Debian 11 手动编译Google BBR v3内核
Debian 11 手动编译Google BBR v3内核
SitaoBBRv3 GitHub地址: https://github.com/google/bbr/tree/v3
整个过程和之前那篇编译内核有点相似
配置要求:2核2GB内存以上,硬盘空间大于20GB
本次用于编译的主机配置
Processor : AMD Ryzen 7 7700X 8-Core Processor
CPU cores : 2 @ 4491.560 MHz
AES-NI : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM : 1.9 GiB
Swap : 1024.0 MiB
Disk : 28.5 GiB
Distro : Debian GNU/Linux 11 (bullseye)
购买链接
安装依赖
1 | apt install git build-essential libncurses-dev libssl-dev libelf-dev bison bc flex rsync debhelper screen vim -y |
下载源码
本次编译的内核版本是6.5.3
这里使用git的方式下载内核:
1 | git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git --branch linux-6.5.y |
这里要等好一会
下载完成后,进入linux/目录,用 ls
命令看看有什么
1 | cd linux/ |
拉取BBR v3源码
1 | git remote add google-bbr https://github.com/google/bbr.git |
拉取完成后,用ls命令查看,发现多了3个补丁文件
因为刚才拉取到的是6.4.0版本的Makefile文件,而我们编译的是6.5.3版本的,现在需要改一下Makefile文件
1 | vim Makefile |
修改版本号
esc,:wq保存退出
从当前机器的启动目录拷贝配置信息到源代码目录
1 | cp -v /boot/config-$(uname -r) .config |
这一步会自动把新内核上的新功能选项以默认值进行配置
图形化菜单
1 | make menuconfig |
可以看到这个界面,然后选择Networking support
选择Networking options
选择TCP: advanced congestion control
然后在里面你可以看到BBR的选项.有两种编译方式,M是构建为模块,*是直接构建.我(空格)选择构建到内核,使编译出来的内核默认开启了bbr
保存退出
注意,别被下面BBRv1 TCP旁边的NEW迷惑了,那是原版的BBR!
可以对比源代码文件验证
这是v3版本的
这是原版的
编译前的准备工作
编辑.config
1 | vim .config |
输入 /
,粘贴 CONFIG_SYSTEM_TRUSTED_KEYS=
然后回车,快速搜索定位
这一行留空里面的值
1 | CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/debian-uefi-certs.pem" |
像这样:
1 | CONFIG_SYSTEM_TRUSTED_KEYS="" |
为节省编译时间,关闭DEBUG
1 | CONFIG_DEBUG_INFO=n |
做好上面这些后,现在就可以开始编译了
编译要花很长时间,建议开个screen守护
1 | screen -S kernel |
开始编译
1 | make deb-pkg LOCALVERSION=-sitao -j$(nproc) |
LOCALVERSION后面的字符串可以自定义的,我这里是sitao
编译时间要看你机器的性能怎么样.这时候可以关掉ssh终端,去干点别的事,回来应该就编译好了
安装
编译成功的话,你会发现root目录多了很多文件.没错,那正是我们想要的cd
,使用 ls
命令可以看到多了很多文件
使用 dpkg
命令安装然后重启
1 | dpkg -i linux-image-6.5.3-sitao_6.5.3-g6e321d1c986a-1_amd64.deb |
重启后ssh上去uname -mrs
查看一下内核
查看当前默认的TCP拥塞控制算法
1 | sysctl net.ipv4.tcp_congestion_control |
查看tcp_bbr模块信息
1 | modinfo tcp_bbr |
可以看到版本是3了
至此,我们已成功手动编译并安装了Google BBR V3 内核!
最后
我们也可以把linux-image-6.5.3-sitao_6.5.3-g6e321d1c986a-1_amd64.deb和linux-headers-6.5.3-sitao_6.5.3-g6e321d1c986a-1_amd64.deb这两个文件上传到其他机器上,其他机器也使用以下命令安装
1 | dpkg -i linux-image-6.5.3-sitao_6.5.3-g6e321d1c986a-1_amd64.deb |