SA6400内核5.10编译TCP_BBR的具体方法整理

SA6400内核5.10编译TCP_BBR的具体方法整理:

1. 下载ToolChain和内核源码

bash 复制代码
# 下载ToolChain
wget https://cndl.synology.cn/download/ToolChain/toolchain/7.2-63134/AMD%20x86%20Linux%20Linux%205.10.55%20%28epyc7002%29/epyc7002-gcc1220_glibc236_x86_64-GPL.txz
tar -Jxf epyc7002-gcc1220_glibc236_x86_64-GPL.txz

# 下载Linux-5.10.x内核源码
wget https://global.synologydownload.com/download/ToolChain/Synology%20NAS%20GPL%20Source/7.2-64570/epyc7002/linux-5.10.x.txz
tar -Jxf linux-5.10.x.txz

2. 准备交叉编译环境

bash 复制代码
export ARCH=x86_64
export CROSS_COMPILE=/home/parallels/synology/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-
cd linux-5.10.x
cp synology/synoconfigs/epyc7002 .config
make oldconfig && make prepare && make modules_prepare && make scripts

3. 修改内核版本号(避免version magic错误)

bash 复制代码
# 修改文件 /linux-5.10.x/include/generated/utsrelease.h
#define UTS_RELEASE "5.10.55+"

4. 编译TCP_BBR模块

bash 复制代码
# 清理目录
make M=net/ipv4/ clean

# 编译BBR模块
make M=net/ipv4/ CONFIG_TCP_CONG_BBR=m modules -j$(nproc)

5. 编译流控模块(Fq/Fq_codel/Fq_pie/Cake)

bash 复制代码
# 清理目录
make M=net/sched/ clean

# 编译流控模块
make M=net/sched/ CONFIG_NET_SCH_FQ=m CONFIG_NET_SCH_FQ_CODEL=m CONFIG_NET_SCH_PIE=m CONFIG_NET_SCH_FQ_PIE=m modules -j$(nproc)

6. 安装内核模块

bash 复制代码
# 安装BBR模块
sudo cp /volume1/Exchange/tcp_bbr.ko /lib/modules/
sudo chmod 644 /lib/modules/tcp_bbr.ko
sudo insmod /lib/modules/tcp_bbr.ko

# 安装流控模块
sudo cp /volume1/Exchange/sch_*.ko /lib/modules/
sudo chmod 644 /lib/modules/sch_*.ko
sudo insmod /lib/modules/sch_*.ko

7. 启用BBR和FQ流控

bash 复制代码
# 临时启用
sysctl net.ipv4.tcp_congestion_control=bbr
sysctl net.core.default_qdisc=fq

# 永久生效
sudo bash -c 'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'
sudo bash -c 'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf'

8. 设置开机自动加载模块

bash 复制代码
sudo bash -c 'echo tcp_bbr > /usr/lib/modules-load.d/90-tcp_bbr.conf'
sudo bash -c 'echo sch_fq > /usr/lib/modules-load.d/91-sch_fq.conf'
sudo bash -c 'echo sch_fq_codel >> /usr/lib/modules-load.d/91-sch_fq.conf'
sudo bash -c 'echo sch_pie > /usr/lib/modules-load.d/91-sch_pie.conf'
sudo bash -c 'echo sch_fq_pie >> /usr/lib/modules-load.d/91-sch_pie.conf'
sudo bash -c 'echo sch_cake > /usr/lib/modules-load.d/91-sch_cake.conf'
sudo chmod 644 /usr/lib/modules-load.d/9*

9. 修复群晖模块依赖

bash 复制代码
sudo ln -s /bin/kmod /usr/sbin/depmod
sudo /sbin/depmod -a 2>/dev/null
sudo systemctl restart systemd-modules-load

10. 额外的TCP优化(可选)

bash 复制代码
sudo bash -c 'echo "net.ipv4.tcp_fastopen=3" >> /etc/sysctl.conf'

注意事项:

  • 重新编译前要清理目录,否则会编译出错
  • 群晖系统修改modules-load.d后需要更新modules.dep文件,否则可能导致自动关机
  • 编译路径中的/home/parallels/synology/需要根据实际安装路径调整
  • 编译好的模块需要复制到正确的目录(示例中为/volume1/Exchange/)
相关推荐
ESDWAN6 小时前
海外系统偶尔打不开,怎么区分 DNS 异常与网络连接故障?
tcp/ip·https
昂好的day6 小时前
VisionMaster 通信模块实战(上):Modbus、TCP 收发、协议组装解析
开发语言·网络·网络协议·tcp/ip·c#
Escalating_xu8 小时前
【Linux 网络编程】connect 的断线重连:用状态机写一个能恢复连接的 TCP 客户端
linux·网络·tcp/ip
盛世宏博智慧档案11 小时前
算力机房多协议融合:Modbus TCP 温湿度变送器与 SNMP 设备混合组网方案
网络·网络协议·tcp/ip·传感器·温湿度
川石课堂软件测试13 小时前
涨薪技术|0到1学会性能测试第9课-HTTP响应统计
数据库·功能测试·网络协议·http·kubernetes·单元测试·测试用例
可信时间戳13 小时前
原创作品怎么申请版权?草稿、定稿、已发布、已授权,四个阶段四个做法
网络协议·http·https
话梅姐姐呀13 小时前
TCP/IP 架构各层的协议概述
人工智能·物联网·网络协议·tcp/ip·iot
a59865214 小时前
无公网IP,ARM服务器搭建云手机远程访问方案
服务器·arm开发·tcp/ip·云手机
husterlichf15 小时前
网关、掩码、子网、vlan、交换机
网络·网络协议
蚰蜒螟15 小时前
从 Java SocketChannel 到 TCP 挥手:一次 close() 的完整调用链与引用计数解析
java·python·tcp/ip