我想禁用systemd
不需要的自动启动尝试wpa_supplicant
。我想我可以简单地运行一个
sudo systemctl disable wpa_supplicant.service --global
我不会ps -ef
再在输出中看到 wpa_supplicant 了。无论如何,这不起作用。我怎样才能让它发挥作用?
我手头的问题可能可以通过以下输出来最好地描述
$>systemctl status wpa_supplicant*
● wpa_supplicant.service - WPA supplicant
Loaded: loaded (/usr/lib/systemd/system/wpa_supplicant.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2016-08-28 20:57:37 CEST; 14min ago
正如你所看到的,disabled
服务无论如何都已加载并处于活动状态,这要感谢 systemd 完全帮助我做了最简单的事情;)
更新
我似乎通过粗暴地删除这些文件而获得了一些运气:
[email protected]
wpa_supplicant.service
[email protected]
[email protected]
从/usr/lib/systemd/system
文件夹。你猜怎么了?重启后wpa终于不再启动了systemd
。令我震惊的是,虽然肯定还有更多平静的/和解systemd
使服务未启动的方法。
答案1
+只会sudo systemctl disable wpa_supplicant
sudo systemctl stop wpa_supplicant
暂时禁用 wpa_supplicant
服务直至网络管理员重新启动和/或系统重新启动。
所以,为了正确地和/或完全地即使在网络管理器之后,也禁止该wpa_supplicant
服务将来再次运行重新启动和/或系统重新启动是为了面具服务,即
systemctl mask wpa_supplicant.service
等等,正如本文所指出的文章。这将创建一个符号文件
/etc/systemd/system/wpa_supplicant.service → /dev/null
我希望这有帮助。
答案2
我遇到了和你一样的问题。经过一番挖掘,我发现了一个名为:
/usr/share/dbus-1/system-services/fi.w1.wpa_supplicant1.service
该文件用于允许 d-bus 激活服务。即使服务被禁用,d-bus 也可以激活该服务。我通过重新命名文件然后重新启动来确认发生了这种情况。我看到此时wpa_supplicant
还没有开始!要进一步追查问题,需要找出哪个程序正在wpa_supplicant
通过激活d-bus
。我没有这样做,因为屏蔽单元文件可以很好地满足我的目的。
答案3
之前的所有回答都太过分了。您可以禁用 NetworkManager 来wpa_supplicant
管理 wifi 客户端:
nmcli radio wifi off
此后,NetworkManager 将不会尝试将 wifi 设备作为客户端进行管理。现在您可以禁用/停止该wpa_supplicant
服务,而不必担心它会自动启动:
systemctl disable wpa_supplicant
systemctl stop wpa_supplicant
请注意,NM 可能仍在管理用于 wifi 连接的活动网络接口。要消除这个问题,只需nmcli c
查看接口,然后:
nmcli c d wlan0
...对于名为 的 wifi 接口wlan0
。
答案4
这里真正令人烦恼的并不是 systemd,而是 NetworkManager。您可以告诉 NetworkManager 忽略 wlan0。
该线程中已经有一些好主意。我想我应该将我所做的添加到这个列表中。
- @GChuf 的方法 - 通过删除 systemd 文件来强制 NetworkManager 失败。删除文件让NetworkManager对着虚空喊叫。我不确定此方法是否可以在软件包更新后继续存在。
- @Habibie 的方法 - 通过屏蔽 wpa_supplicant 强制 NetworkManager 失败。这使得 NetworkManager 尝试了几次然后放弃。
- @ChalkTalk 的方法 - 通过关闭无线电强制 NetworkManager 失败。看起来它运行 systemd-rfkill.service。
检查默认设置
默认的 NetworkManager 设置是尝试管理它能得到的任何东西。 NetworkManager 运行 wpa_supplicant 来管理 WIFI 接口 wlan0。它位于进程列表中。
[nick@rpi4 ~]$ ps -fC wpa_supplicant
UID PID PPID C STIME TTY TIME CMD
root 593 1 0 14:36 ? 00:00:00 /usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -u -s
[nick@rpi4 ~]$
Wlan0 无法连接,NetworkManager 不断尝试。类似这样的消息每隔几分钟就会出现在日记中。
[nick@rpi4 ~]$ journalctl -f
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info> [1615822023.9272] device (wlan0): set-hw-addr: set MAC address to AA:9D:10:50:87:5B (scanning)
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info> [1615822023.9359] device (wlan0): supplicant interface state: disconnected -> interface_disabled
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info> [1615822023.9362] device (p2p-dev-wlan0): supplicant management interface state: disconnected -> interface_disabled
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info> [1615822023.9367] device (wlan0): supplicant interface state: interface_disabled -> inactive
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info> [1615822023.9369] device (p2p-dev-wlan0): supplicant management interface state: interface_disabled -> inactive
wlan0 的状态为断开连接。
[nick@rpi4 ~]$ nmcli device status
DEVICE TYPE STATE CONNECTION
wlan0 wifi disconnected --
告诉 NetworkManager wlan0 不受管理
编辑 NetworkManager 配置并告诉 NetworkManager 忽略 wlan0。
停止服务。
systemctl stop NetworkManager
systemctl stop wpa_supplicant
将这些行添加到配置文件 /etc/NetworkManager/NetworkManager.conf
.如果你想要什么的描述非托管设备就是,跑man NetworkManager.conf
。
[keyfile]
unmanaged-devices=interface-name:wlan0
然后跑systemctl start NetworkManager
。
设备状态从断开连接到不受管理的。 wpa_supplicant 进程不会再次启动,即使它没有被屏蔽。
[nick@rpi4 ~]$ nmcli device status
DEVICE TYPE STATE CONNECTION
wlan0 wifi unmanaged --
...
[nick@rpi4 ~]$ ps -fC wpa_supplicant
UID PID PPID C STIME TTY TIME CMD
[nick@rpi4 ~]$