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

下载源码

本次编译的内核版本是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
All is well
使用 Hugo 构建
主题 StackJimmy 设计