快速设置Alpine Linux无线: broadcom-wl

在 Linux 内核升级到 6.12.x 后,Broadcom 的官方 wl 源代码( 设置Alpine Linux无线: broadcom-wl )会因为内核 API 的巨大变动(如 strlcpy 被移除、 net_device 结构体变化等)而导致编译彻底失败。

MacBook Air 2014 (BCM4360 芯片),在 Alpine Linux 上有以下几种快速解决办法

方法一: 使用开源驱动 brcmfmac (推荐)

BCM4360 (SDIO/PCIe) 其实已经由内核内置的开源驱动 brcmfmac 提供了非常好的支持,这样就不再需要忍受闭源 wl 驱动的编译之苦(之前我查询资料饶了很多弯路)

  • 安装固件包:

固件
sudo apk add linux-firmware-brcm
  • 清理旧的 wl 模块:

清理 wl 模块
sudo modprobe -r wl
  • 加载开源模块 brcmfmac :

加载 brcmfmac
sudo modprobe brcmfmac

方法二: 使用经过社区修补的 wl 源码

目前社区维护最好的版本是 broadcom-wl-dkms ,它包含了支持 6.12+ 内核的补丁

  • 安装构建工具:

安装编译工具
sudo apk add build-base linux-lts-dev
  • 下载补丁过的源代码:

获取补丁过的源代码
wget https://aur.archlinux.org/cgit/aur.git/snapshot/broadcom-wl-dkms.tar.gz
tar -xvf broadcom-wl-dkms.tar.gz
cd broadcom-wl-dkms
# 运行构建(注意:你可能需要根据 Alpine 环境微调 Makefile)
make -C /lib/modules/$(uname -r)/build M=$(pwd)

模块冲突预防

如果 brcmfmacwl 同时存在,系统可能会混乱。务必拉黑不用的驱动: 编辑 /etc/modprobe.d/blacklist.conf :

设置 /etc/modprobe.d/blacklist.conf
blacklist b43
blacklist bcma
blacklist ssb
# 使用brcmfmac,拉黑wl
blacklist wl