当我想启动我的笔记本电脑时,它向我显示了这个错误信息:
[这就是发生的事情]
[FAILED] Failed to start Dispatcher daemon for systemd-networkd
[这就是发生的事情]
[FAILED] Failed to start Dispatcher daemon for systemd-networkd
[Service]
ExecStart=
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any
sudo systemctl daemon-reload
和sudo systemctl restart systemd-networkd-wait-online.service
命令可以立即告诉您它是否起作用。systemd-networkd-wait-online
命令中使用--interface=
和/或--ignore=
参数。这些参数可替代或与上述--any
参数一起使用。如果与--any
参数一起使用,则只会考虑通过--interface=
传递的那些接口,或者未明确忽略的接口(不使用--ignore=
参数)来确定计算机是否已达到联机状态。你的系统在启动过程中并没有冻结,而是进入了等待状态,等待网络设备完全配置完成后才继续进行。最终的修复方法将通过检查/etc/systemd/network
中的配置文件和由journalctl -xe | grep networkd
显示的服务日志来实现,重点关注报告中状态不为"configured"的任何链接。这种情况可能发生在IPv6不可用或配置错误时,但也可能出于其他各种原因。
你应该通过引导加载程序(GRUB、rEFInd等)以恢复模式重新启动系统,并从出现的菜单中选择根选项。从那里,你可以使用上述命令检查系统和/或通过创建一个新目录mkdir /etc/systemd/system/systemd-networkd.service.d
并在其中创建一个名为override.conf的新文件(例如sudoedit /etc/systemd/system/systemd-networkd.service.d/override.conf
),内容如下:
[Service]
Environment=SYSTEMD_LOG_LEVEL=debug
/usr/lib/systemd/systemd-networkd-wait-online && echo $?
来测试对/etc/systemd/network
文件的修改是否成功。如果问题已经解决,输出结果将为0。如果一切都无法解决,你可以使用sudo systemctl disable systemd-netword-wait-online.service
命令完全禁用该服务。
systemctl disable ...
应该可以解决。但是另一个systemd单元可能仍然作为依赖项启动它。如果你真的想强制阻止它启动,那么用systemctl mask systemd-networkd-wait-online.service
来屏蔽它。只要注意network-online.target
依赖于其中一个"wait-online"服务,并且network-online.target
可能用于确保在启动其他服务之前具备网络连接。 - WonderWoofy
ExecStart
? - daniel451systemctl help NetworkManager-wait-online.service
命令,然后会跳转到相应的 man 页面。(对于该服务来说,似乎实际的 man 页面是nm-online
。所以你也可以使用man nm-online
或者man 1 nm-online
。) - WonderWoofynm-online -s -q -t 30
,其中-s
(或--wait-for-startup
)使其在NetworkManager正常启动时报告成功,-q
是--quiet
的简写,-t 30
等同于--timeout=30
。因此,似乎删除-s
开关应该使其对网络连接状态做出反应,而不是NetworkManager.service
的状态。你也可以使用上面我描述的一个插入片段来实现这一点。 - WonderWoofysudo systemctl disable systemd-networkd-wait-online.service
完全禁用了它,这样就解决了问题。 - undefined