Wi-Fi
Alpine Linux 同时支持无线守护进程,即 wpa_supplicant 和 iwd。本页介绍如何使用 WPA 加密通过 wpa_supplicant 设置无线网络连接,并提供配置无线接口/驱动程序的故障排除步骤。
先决条件
可用的无线驱动程序。在大多数情况下,安装 linux-firmware 应该可以为您获取所需的驱动程序。安装此软件包可能会在无盘或数据盘模式下产生错误。如果发生此类错误,请切换到系统盘模式。
列出您可用的网络接口
ip link
或
ip a
参考 故障排除 部分,查看您是否看不到任何无线接口(例如 wlan0)。您可能需要加载和/或安装驱动程序/固件。如果您使用的是 Broadcom 芯片组,请参阅 Broadcom Wi-Fi 章节。
启动所需的接口
# ip link set wlan0 up
wpa_supplicant
网络 setup-scripts 可以使用 wpa_supplicant
快速配置您的 wifi,wpa_supplicant
可以与 NetworkManager(标准的 Linux 网络配置工具套件)一起使用。如果以上方法不能满足您的需求,请按照本页概述的步骤进行手动配置。
要开始使用,请安装 wpa_supplicant 软件包
# apk add wpa_supplicant
使用此命令将您的 Wi-Fi 网络添加到 wpa_supplicant
# wpa_passphrase 'ExampleWifiSSID' 'ExampleWifiPassword' > /etc/wpa_supplicant/wpa_supplicant.conf
(未广播 SSID 的接入点需要在 /etc/wpa_supplicant/wpa_supplicant.conf 文件中添加额外的行 scan_ssid=1
)
在前台启动 wpa_supplicant 以检查无线连接是否成功。
# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
可选的安全预防措施
默认情况下,wpa_supplicant 会以明文形式存储您的 Wi-Fi 密码
/etc/wpa_supplicant/wpa_supplicant.conf 的内容
如果您不希望以明文形式存储密码,只需删除包含 #psk="<YourPasswordShouldBeHereInPlainText>"
的行。
如果一切正常,请通过设置 -B 选项在后台将其作为守护进程运行。
# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
为接口配置 IP 地址。
# udhcpc -i wlan0
健全性检查:接口应具有 inet 地址。
$ ip addr show wlan0
在文件中为所需的接口(例如 wlan0
)添加条目,如下所示
/etc/network/interfaces 的内容

健全性检查:确保 /etc/wpa_supplicant/wpa_supplicant.conf 是您要连接的无线接入点的正确配置。
关闭接口。
# ip link set wlan0 down
手动重启(或启动)networking。
# rc-service networking --quiet restart &
执行 健全性检查。有关名称解析的问题,请参考 Networking 部分。
服务配置
如果网络工作正常,请继续配置 wpa_supplicant 服务以在启动时自动启动
# rc-update add wpa_supplicant boot
同时确保 networking 设置为在启动时自动启动
# rc-update add networking boot
使用标准的 start、stop 和 restart 选项管理 wpa_supplicant 服务。例如:启动 wpa_supplicant 服务
# rc-service wpa_supplicant start
通过 wpa_cli 操作启动 udhcpc
使用上述配置,udhcpc 将仅在启动时运行一次。如果 Wifi 在那时不可用,或者网络在启动后发生更改,则需要通知 udhcpc。您可以使用 wpa_cli 操作文件自动通知 udhcpc 网络更改,例如默认安装在 /etc/wpa_supplicant/wpa_cli.sh 的文件。
要手动启动带有操作文件的 wpa_cli 守护进程,请使用 `-a` 选项
# wpa_cli -a /etc/wpa_supplicant/wpa_cli.sh
要自动执行此操作,请使用 wpa_supplicant-openrc 中包含的 `wpa_cli` 服务
/etc/conf.d/wpa_cli 的内容
添加服务以在启动时启动
# rc-update add wpa_cli boot
故障排除
检查 dmesg
运行 dmesg 并检查与无线接口相关的错误。通常,dmesg 提供与网络和所有其他硬件相关的最大信息。
# dmesg
检查网卡
$ cat /proc/net/dev
列出检测到的网络接口。如果预期的接口不可用,请使用 lspci 或 lsusb 检查您拥有的网络硬件芯片
$ lspci -nn
$ lsusb
如果上面显示的默认输出缺少足够的信息,请参考 硬件管理。
检查网卡使用的驱动程序并 modprobe 它。检查网卡是否处于 master 模式。在 b43 兼容性页面 上检查您需要的驱动程序
Broadcom Wi-Fi 芯片组用户
Broadcom 芯片组在较旧的计算机中非常流行。b43 驱动程序包含在 linux-lts 或 linux-edge 内核软件包中。但是,您可能需要为此芯片组手动编译固件,因为它未包含在某些网卡的 linux-firmware 中。
使用 lspci 检查您拥有的 Broadcom 芯片
$ lspci -nn -d 14e4
B43
下载固件切割器。
$ apk add b43-fwcutter
现在我们拥有下载专有驱动程序并从中提取固件所需的一切
# export FIRMWARE_INSTALL_DIR="/lib/firmware" $ wget http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2 $ tar xjf broadcom-wl-5.100.138.tar.bz2 $ b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-5.100.138/linux/wl_apsta.o
更多信息可以在 这里 找到。
现在您需要使用 modprobe,设备才会显示出来
# modprobe b43
现在继续执行正常说明。
wl
自动化
您可以使用来自 broadcom-wl 的 APKBUILD。它使用 akms (Alpine Kernel Module Support) 来自动构建和更新新内核版本的驱动程序。
说明可以在仓库中找到。
手动
首先安装我们需要构建驱动程序的软件^
apk add git alpine-sdk linux-headers linux-lts-dev
然后安装驱动程序构建仓库(这是存档的,但它是旧版,所以这没关系)
git clone https://github.com/antoineco/broadcom-wl cd broadcom-wl
然后按照 git 仓库中列出的构建说明进行操作
make doas make install doas depmod -A doas modprobe wl
重启后,您将拥有一个可用的 wl 驱动程序。现在继续执行正常说明。
Rfkill
错误消息 ioctl 0x8914 failed: No error information
是 busybox ip
表示您的无线电被 rfkill 阻止的方式,这意味着无线网卡被内核阻止。可以使用 rfkill 更改此设置。显示您当前的 Wi-Fi 状态
~$ rfkill list 0: phy0: wlan Soft blocked: no Hard blocked: no
如果网卡被硬阻塞,请使用硬件按钮或开关解锁。如果网卡未被硬阻塞但被软阻塞,请使用以下命令
# rfkill unblock wifi
参见
- Alpine Linux 中的网络配置
- iwd - wpa_supplicant 的替代方案
- NetworkManager - Networking 的前端
- PostmarketOS Wiki
- Archwiki
- Gentoo Wiki