Wi-Fi

来自 Alpine Linux
(重定向自 Wifi

Alpine Linux 同时支持无线守护进程,即 wpa_supplicantiwd。本页介绍如何使用 wpa_supplicant 设置使用 WPA 加密的无线网络连接,并提供配置无线接口/驱动程序的故障排除步骤。

注意: 同时使用无线守护进程,即 wpa_supplicantiwd,会导致冲突。

先决条件

可用的无线驱动程序。在大多数情况下,安装 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

注意: Wi-Fi SSID 和密码区分大小写,SSID 和密码前后都需要单引号

在前台启动 wpa_supplicant 以检查无线连接是否成功。

# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf

可选的安全预防措施

默认情况下,wpa_supplicant 会以明文形式存储您的 Wi-Fi 密码

/etc/wpa_supplicant/wpa_supplicant.conf 的内容

network={ ssid="<YourSSIDShouldBeHere>" #psk="<YourPasswordShouldBeHereInPlainText>" psk=<RandomLettersAndNumbersShouldBeHere> }

如果您不希望以明文形式存储密码,只需删除包含 #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 的内容

auto lo auto wlan0 iface wlan0 inet dhcp
警告: 不要删除或注释掉 auto lo 条目


健全性检查:确保 /etc/wpa_supplicant/wpa_supplicant.conf 是您要连接的无线接入点的正确配置。

关闭接口。

# ip link set wlan0 down

手动重启(或启动networking

# rc-service networking --quiet restart &

执行 健全性检查。有关名称解析的问题,请参阅 网络 部分。

服务配置

如果网络工作正常,请继续配置 wpa_supplicant 服务以在启动时自动启动

# rc-update add wpa_supplicant boot

同时确保 networking 设置为在启动时自动启动

# rc-update add networking boot

使用标准的 startstoprestart 选项管理 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 的内容

WPACLI_OPTS="-a /etc/wpa_supplicant/wpa_cli.sh"

添加服务以在启动时启动

# 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 informationbusybox ip 表示您的无线电被 rfkilled 的方式,这意味着无线网卡被内核阻止。可以使用 rfkill 更改此设置。显示您的 Wi-Fi 的当前状态

~$ rfkill list 0: phy0: wlan Soft blocked: no Hard blocked: no

如果网卡被硬件阻止,请使用硬件按钮或开关取消阻止。如果网卡未被硬件阻止但被软件阻止,请使用以下命令

# rfkill unblock wifi

参见