Debian 11 手动编译Google BBR v3内核

Linux · 2023-09-17
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)

购买链接

安装依赖

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的方式下载内核:

git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git --branch linux-6.5.y

这里要等好一会
下载完成后,进入linux/目录,用ls命令看看有什么

cd linux/
ls

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

拉取BBR v3源码

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文件

vim Makefile

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

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

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

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

图形化菜单

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

vim .config

输入/,粘贴CONFIG_SYSTEM_TRUSTED_KEYS=然后回车,快速搜索定位
这一行留空里面的值

CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/debian-uefi-certs.pem"

像这样:

CONFIG_SYSTEM_TRUSTED_KEYS=""

为节省编译时间,关闭DEBUG

CONFIG_DEBUG_INFO=n

做好上面这些后,现在就可以开始编译了

编译要花很长时间,建议开个screen守护

screen -S kernel

开始编译

make deb-pkg LOCALVERSION=-sitao -j$(nproc)

LOCALVERSION后面的字符串可以自定义的,我这里是sitao

编译时间要看你机器的性能怎么样.这时候可以关掉ssh终端,去干点别的事,回来应该就编译好了

安装

编译成功的话,你会发现root目录多了很多文件.没错,那正是我们想要的
cd ,使用ls命令可以看到多了很多文件
2023-09-17T13:08:10.png

使用dpkg命令安装然后重启

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拥塞控制算法

sysctl net.ipv4.tcp_congestion_control

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

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这两个文件上传到其他机器上,其他机器也使用以下命令安装

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

当然你也可以直接使用我的,我已经写好了脚本:

bash <(curl -sL https://sitao.org/script/bbrv3.sh)
BBR 编译
Theme Jasmine by Kent Liao