在我的 Raspberry Pi 上运行带有内核 3.6.11-12-ARCH+ 的 Arch Linux。
我有一个 Linksys wifi usb dongle (WUSB54GC v3),在执行以下命令后正在运行并工作:
$> sudo ifconfig wlan0 up
$> sudo iwlist scan
$> sudo iwconfig wlan0 mode managed essid myssid key "mykey" retry 7
# Only had to do this next one the first time
$> sudo wpa_passphrase myssid "mypassword" > /etc/wpa_supplicant/wpa_supplicant.conf
$> sudo wpa_supplicant -B -Dwext -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
$> sudo dhcpcd wlan0
如何让该设备上的 wifi 每次启动后都能工作?最终我想将它部署在没有有线连接(因此是wifi)的位置,但如果我每次都必须手动启动/连接wifi,我显然无法做到这一点。
答案1
你应该使用netctl。它是Arch Linux内置的网络管理系统。如果尚未安装(应该已安装),请运行pacman -Syu netctl
然后查看/etc/netctl
.中有示例配置文件/etc/netctl/examples
。
要快速启动并运行:
- 记下无线适配器的设备名称。将我的示例中的所有实例替换
wlan0
为与您的设置匹配的名称。 确保您已安装所需的软件包。
pacman -Syu wpa_supplicant dhcpcd
- WPA 保护的接入点需要 wpa_supplicant,并且使用 DHCP 服务器从任何网络获取 IP 需要 dhcpcd,如 Arch Linux wiki 上所列。
- 复制一个适当的例子:
cp /etc/netctl/examples/wireless-wpa /etc/netctl/somedescriptivename
- 编辑您的新配置以
/etc/netctl/somedescriptivename
适合您的设置。 netctl-auto
为您的无线适配器启用该服务。再次替换wlan0
为您的设置的设备名称。systemctl enable [email protected]
有几点需要注意:
- 当您进入接入点范围时,netctl 将自动连接到 /etc/netctl 中的任何配置文件
- 此设置仅适用于使用
Security=wpa-configsection
和 的配置文件Security=wpa
。 - 使用 禁用所有以前启用的 wifi 配置文件
netctl disable profilename
。否则,一旦启用 netctl-auto,netctl 将在启动时启动它们两次。
欲了解更多信息,请参阅Netctl 维基条目。
答案2
一种更简单的方法,消除了有关如何制作配置文件的一些猜测netctl
(取自netctl
arch wiki 上的页面):
wpa_supplicant
步骤1.按照OP中所述使用手动设置无线互联网。如果您的系统没有安装它,请执行$ pacman -S wpa_supplicant
.
步骤 2. 您还需要dialog
包,因此$ pacman -S dialog
.然后,您可以重新启动系统或断开与无线网络的连接。
步骤 3. 运行$ wifi-menu -o
,然后进行非常简单的 Windows/Mac 式设置。您可以通过查看系统网络 ID 的预设值$ sudo netctl list
。该值的格式为wlan098-SSID
. (其中 SSID = 您的 WLAN 名称)
步骤4.最后运行$ netctl enable wlan098-SSID
并重新启动系统$ reboot
不过,偶尔您可能会收到类似以下内容的错误消息temporarily unable to resolve name
或者其他什么,但只要再次尝试 ping 就可以了。
答案3
我相信所有其他答案都是有缺陷的,正如我对它们的评论中所解释的那样。
这些步骤将自动连接到最强的热点。使用 systemd 在标准 arch 安装上进行测试(可能适用于其他操作系统):
一次性设置:
确保安装以下内容:dialog、wpa_supplicant、dhcpcd、netctl、wifi-menu。
在 xfce 上,添加 xfce4-wavelan-plugin,并将其添加到您选择的面板中。这只是一个指示灯,在您连接时显示。它没有其他目的。
确保删除或禁用所有其他网络管理器和服务。 https://wiki.archlinux.org/index.php/Netctl#Wireless
删除任何以前创建的网络配置文件。 https://www.ostechnix.com/fix-job-netctl-service-failed-error-arch-linux/
或者,只需禁用它们,正如 @JacobWiltse 在另一个答案的评论中所解释的那样。wiki.archlinux.org/index.php/Netctl#Wireless
获取您的 WiFi 设备 ID
basename $(ls -d /sys/class/net/w*)
启用 netctl-auto 服务。这是将自动连接的服务。
systemctl enable [email protected]
首次连接热点:
- 跑步
wifi-menu
。需要根。pkexec wifi-menu -o
或者sudo wifi-menu -o
保留-o
以便在键入时查看网络密码。
- 向下箭头,选择所需的连接,按 Enter 键,接受连接名称,输入密码。
根据需要添加更多热点。此后 netctl-auto 将自动重新连接到最强的可用热点。