Debian 11 手动编译Google BBR v3内核

BBRv3 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

下载源码

2023-09-17T12:37:56.png
本次编译的内核版本是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
2
cd linux/
ls

2023-09-17T12:42:58.png

拉取BBR v3源码

1
2
3
git remote add google-bbr https://github.com/google/bbr.git
git fetch google-bbr
git checkout google-bbr/v3

拉取完成后,用ls命令查看,发现多了3个补丁文件
2023-09-17T12:43:13.png
因为刚才拉取到的是6.4.0版本的Makefile文件,而我们编译的是6.5.3版本的,现在需要改一下Makefile文件

1
vim Makefile

修改版本号
2023-09-17T12:46:06.png
esc,:wq保存退出

从当前机器的启动目录拷贝配置信息到源代码目录

1
cp -v /boot/config-$(uname -r) .config

这一步会自动把新内核上的新功能选项以默认值进行配置

图形化菜单

1
make menuconfig

可以看到这个界面,然后选择Networking support
2023-09-17T12:48:34.png

选择Networking options
2023-09-17T12:48:55.png

选择TCP: advanced congestion control
2023-09-17T12:49:17.png
然后在里面你可以看到BBR的选项.有两种编译方式,M是构建为模块,*是直接构建.我(空格)选择构建到内核,使编译出来的内核默认开启了bbr

2023-09-17T13:00:22.png
保存退出

注意,别被下面BBRv1 TCP旁边的NEW迷惑了,那是原版的BBR!
可以对比源代码文件验证
这是v3版本的
2023-09-17T12:56:32.png
这是原版的
2023-09-17T12:57:16.png

编译前的准备工作

编辑.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命令可以看到多了很多文件
2023-09-17T13:08:10.png

使用 dpkg命令安装然后重启

1
2
3
dpkg -i linux-image-6.5.3-sitao_6.5.3-g6e321d1c986a-1_amd64.deb
dpkg -i linux-headers-6.5.3-sitao_6.5.3-g6e321d1c986a-1_amd64.deb
reboot

重启后ssh上去
uname -mrs查看一下内核
2023-09-17T13:11:17.png
查看当前默认的TCP拥塞控制算法

1
sysctl net.ipv4.tcp_congestion_control

2023-09-17T13:11:32.png
查看tcp_bbr模块信息

1
modinfo tcp_bbr

2023-09-17T13:12:19.png
可以看到版本是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
2
3
dpkg -i linux-image-6.5.3-sitao_6.5.3-g6e321d1c986a-1_amd64.deb
dpkg -i linux-headers-6.5.3-sitao_6.5.3-g6e321d1c986a-1_amd64.deb
reboot