飞牛 fnOS 1.1.30 安装 BCM4360 Broadcom 无线网卡驱动教程(6.18.18-trim)
适用于:
- BCM4360
- BCM43xx 系列
- Broadcom STA 闭源驱动
- 飞牛 fnOS 1.1.30
- 内核
6.18.18-trim
适用范围
系统版本
已验证:
理论适用于:
- 6.15+
- 6.16+
- 6.17+
- 6.18+
- 使用新 objtool 检查机制的 Debian / Ubuntu / fnOS 内核
适用网卡
本教程适用于 Broadcom STA 闭源驱动支持的 PCIe 无线网卡。
已验证成功:
常见兼容型号(理论适用):
- BCM4311
- BCM4312
- BCM4313
- BCM4321
- BCM4322
- BCM43224
- BCM43225
- BCM43227
- BCM43228
- BCM4331
- BCM4352
- BCM4360
本教程解决的问题
主要解决:
broadcom-sta-dkms 在 6.18 内核无法编译
typedefs.h 缺失
net/lib80211.h 缺失
objtool 导致 wl.o 编译失败
modprobe wl 提示:
一、确认系统内核
SSH 登录:
uname -r
输出:
6.18.18-trim
二、确认 headers 已安装
查看:
apt search linux-headers | grep trim
确认有:
linux-headers-6.18.18-trim
并检查:
ls -l /lib/modules/$(uname -r)
确认存在:
build -> /usr/src/linux-headers-6.18.18-trim
三、下载 Broadcom 驱动
cd /tmp
wget -O broadcom-sta-dkms_6.30.223.271-23_all.deb \
https://mirrors.tuna.tsinghua.edu.cn/debian/pool/non-free/b/broadcom-sta/broadcom-sta-dkms_6.30.223.271-23_all.deb
安装:
dpkg -i --force-all broadcom-sta-dkms_6.30.223.271-23_all.deb
此时会编译失败,这是正常的。
四、修复 6.18 内核编译问题
进入源码目录:
cd /usr/src/broadcom-sta-6.30.223.271
1. 修复 include 路径
添加头文件搜索路径:
sed -i '1iccflags-y += -I$(src)/src/include -I$(src)/src/common/include -I$(src)/src/shared/bcmwifi/include' Makefile
2. 修复缺失头文件
创建软链接:
ln -sf src/include/typedefs.h typedefs.h
ln -sf src/include/bcmdefs.h bcmdefs.h
ln -sf src/include/bcmendian.h bcmendian.h
3. 修复 lib80211 头文件缺失
新内核已经移除了旧接口,需要手动兼容:
mkdir -p /usr/src/linux-headers-6.18.18-trim/include/net
cat > /usr/src/linux-headers-6.18.18-trim/include/net/lib80211.h <<'EOF'
#ifndef _NET_LIB80211_H
#define _NET_LIB80211_H
struct lib80211_crypto_ops {};
#endif
EOF
五、绕过 Linux 6.18 objtool 检查
这是最关键一步。
新内核会在链接** **wl.o 时触发:
objtool: aes_cbc_encrypt_pad+0x4c: unannotated intra-function call
导致 DKMS 编译失败。
临时禁用 objtool:
备份:
cp /usr/src/linux-headers-6.18.18-trim/tools/objtool/objtool \
/usr/src/linux-headers-6.18.18-trim/tools/objtool/objtool.bak
替换为空脚本:
printf '#!/bin/sh\nexit 0\n' > \
/usr/src/linux-headers-6.18.18-trim/tools/objtool/objtool
赋予执行权限:
chmod +x /usr/src/linux-headers-6.18.18-trim/tools/objtool/objtool
六、重新编译 DKMS
删除旧模块:
dkms remove broadcom-sta/6.30.223.271 --all --force
重新加入:
dkms add /usr/src/broadcom-sta-6.30.223.271
编译:
dkms build broadcom-sta/6.30.223.271 -k 6.18.18-trim
安装:
dkms install broadcom-sta/6.30.223.271 -k 6.18.18-trim
七、加载驱动
先卸载冲突模块:
modprobe -r b44 b43 b43legacy ssb brcmfmac brcmsmac bcma
加载 wl:
modprobe wl
八、验证
查看无线网卡:
ip link
正常会出现:
wlp2s0
查看驱动:
lspci -k -s 02:00.0
正常会看到:
Kernel driver in use: wl
九、恢复 objtool(可选)
安装完成后建议恢复:
mv /usr/src/linux-headers-6.18.18-trim/tools/objtool/objtool.bak \
/usr/src/linux-headers-6.18.18-trim/tools/objtool/objtool
十、说明
原因是:
- Broadcom 官方 STA 驱动非常老
- Linux 6.18 内核 objtool 检查更严格
- fnOS 使用的是定制 trim 内核
- 导致 broadcom-sta-dkms 无法直接编译
最终结果
