收起左侧

飞牛 fnOS 1.1.30 安装 BCM4360 Broadcom 无线网卡驱动教程(6.18.18-trim)

0
回复
22
查看
[ 复制链接 ]

2

主题

6

回帖

0

牛值

江湖小虾

飞牛 fnOS 1.1.30 安装 BCM4360 Broadcom 无线网卡驱动教程(6.18.18-trim)

适用于:

  • BCM4360
  • BCM43xx 系列
  • Broadcom STA 闭源驱动
  • 飞牛 fnOS 1.1.30
  • 内核 6.18.18-trim

适用范围

系统版本

已验证:

  • fnOS 1.1.30
  • Linux 内核:
    • 6.18.18-trim

理论适用于:

  • 6.15+
  • 6.16+
  • 6.17+
  • 6.18+
  • 使用新 objtool 检查机制的 Debian / Ubuntu / fnOS 内核

适用网卡

本教程适用于 Broadcom STA 闭源驱动支持的 PCIe 无线网卡。

已验证成功:

  • BCM4360

常见兼容型号(理论适用):

  • 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 提示:
    • Module wl not found

一、确认系统内核

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 无法直接编译

最终结果

a.png

收藏
送赞 1
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则