整合自: https://bbs.archlinux.org/viewtopic.php?id=178625
上一篇文章讲到如何用命令行连接wifi,大家可以去看看。
本文参考 https://bbs.archlinux.org/viewtopic.php?id=178625 ## TL,DR
1. wpa_supplicant
# config wpa_supplicant
#/etc/wpa_supplicant/wpa_supplicant-wlp5s0.conf
# enable wpa_supplicant
systemctl enable wpa_supplicant@wlp5s02.
config systemd-network
# config systemd-network
# /etc/systemd/network/00-wireless-dhcp.network
[Match]
Name=wlp5s0
[Network]
DHCP=yes
# enable systemd-networkd.service
systemctl enable systemd-networkd.service1. 需要工具
wpa_supplicantdhcpcd
2. 配置文件
/etc/wpa_supplicant/wpa_supplicant-网卡名.conf/etc/systemd/network/00-wireless-dhcp.network
3. 步骤
3.1. 1. wpa_supplicant
3.1.1. 1.1 查看网卡名字
ip link
# 1: lo
# 2: enp4s0
# 3: wlp5s0- lo 是loop设备
- enp4s0 是有线设备
- wlp5s0 是无线设备
注意我的网卡名是
wlp5s0,下文中的wlp5s0
都需替换成你的
3.1.2. 1.2 生成
wpa_supplicant.conf文件
将生成的wpa_supplicant.conf
放到/etc/wpa_supplicant/文件夹下,并重命名,格式为:
wpa_supplicant-网卡名.conf例如我的就是:
wpa_supplicant-wlp5s0.conf3.1.2.1. 通过修改原始配置文件
man wpa_supplicant.conf 知道原始配置文件在
/usr/share/doc/wpa_supplicant/wpa_supplicant.conf3.1.2.2.
通过wpa_passphrase生成配置文件
# wpa_passphrase MyNetwork SuperSecretPassphrase > /etc/wpa_supplicant/wpa_supplicant-wlp5s0.conf3.1.2.3. 通过下面的格式
priority 越大优先级越高
country=CN
update_config=1
network={
ssid="SSID"
psk="Passwd"
key_mgmt=WPA-PSK
priority=9
id_str="identify which wifi is"
}
network={
ssid="SSID"
psk="Passwd"
key_mgmt=WPA-PSK
priority=8
id_str="identify which wifi is"
}3.1.3. 1.3
用systemctl启动wpa_supplicant服务
systemctl enable wpa_supplicant@wlp5s0注意arch bbs
原回答多写了.conf,后面也有跟帖指出了这个问题。
3.2. 2. systemd-networkd
3.2.1. 2.1 配置systemd-network的配置文件
创建/etc/systemd/network/00-wireless-dhcp.network,archbbs中说这个名字随意。
[Match]
Name=wlp5s0
[Network]
DHCP=yes
3.2.2. 2.2
用systemctl设置启动服务systemd-networkd.service
systemctl enable systemd-networkd.service4. 回顾
在1.3的systemctl enable wpa_supplicant@wlp5s0中,我们看到:
Created symlink /etc/systemd/system/multi-user.target.wants/wpa_supplicant@wlp5s0.service → /usr/lib/systemd/system/wpa_supplicant@.service.查看/usr/lib/systemd/system/wpa_supplicant@.service,其中有一行:
ExecStart=/usr/bin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -i%I这里的%I
就是systemctl enable wpa_supplicant@wlp5s0中的wlp5s0,它通过%I来传递设备名,所以我们也就知道之前为什么要把配置文件这样命名了
/etc/wpa_supplicant/wpa_supplicant-网卡名.conf