前言
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
下载源码
本次编译的内核版本是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
拉取BBR v3源码
git remote add google-bbr https://github.com/google/bbr.git
git fetch google-bbr
git checkout google-bbr/v3
拉取完成后,用ls命令查看,发现多了3个补丁文件
因为刚才拉取到的是6.4.0版本的Makefile文件,而我们编译的是6.5.3版本的,现在需要改一下Makefile文件
vim Makefile
修改版本号 esc,:wq保存退出
从当前机器的启动目录拷贝配置信息到源代码目录
cp -v /boot/config-$(uname -r) .config
这一步会自动把新内核上的新功能选项以默认值进行配置
图形化菜单配置
make menuconfig
可以看到这个界面,然后选择Networking support
选择Networking options
选择TCP: advanced congestion control *然后在里面你可以看到BBR的选项.有两种编译方式,M是构建为模块,是直接构建.我(空格)选择构建到内核,使编译出来的内核默认开启了bbr
保存退出
注意,别被下面BBRv1 TCP旁边的NEW迷惑了,那是原版的BBR! 可以对比源代码文件验证 这是v3版本的 这是原版的
编译前的准备工作
编辑.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
命令可以看到多了很多文件
使用 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
查看一下内核
查看当前默认的TCP拥塞控制算法
sysctl net.ipv4.tcp_congestion_control
查看tcp_bbr模块信息
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这两个文件上传到其他机器上,其他机器也使用以下命令安装
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