我的 Debian 桌面已配置为使用 systemd-networkd、dhcpcd、pppoe 等服务启动,以便为多个设备提供互联网服务。我的问题是它偶尔无法完全启动。我检查了 journalctl 的日志。结果发现 systemd-networkd 服务从未执行过。启动过程只是卡在了这次启动的某个时刻。包括 systemd-networkd 在内的所有需要 network.target 或 network-online.target 的服务从未执行过。如以下日志所示,不完全启动在执行 systemd-networkd 之前就停止了。我设置了一个 shell 脚本,以便在网络出现故障时重新启动系统,但许多其他服务(如 crontab)也没有执行,所以这并不能解决问题。
什么可能阻碍 Debian 继续启动?
我想强调的是,systemd-networkd 服务确实不是启动失败,根本没启动,因为 systemd-networkd 没有日志,包括信息和错误。故障应该发生在执行之前,并阻碍系统继续启动。
编辑: 系统已经顺利运行了数周。问题始于两次意外重启。这两次重启都不完整,并且有一个MCE 活动第二次重启时出现。据说这与 ucode 更新有关,但我不确定是否有必要,因为这个错误只发生过一次。相关日志显示:
Nov 03 16:57:14 server kernel: mce: [Hardware Error]: Machine check events logged
Nov 03 16:57:14 server kernel: mce: [Hardware Error]: CPU 0: Machine Check: 0 Bank 27: baa000000000080b
Nov 03 16:57:14 server kernel: mce: [Hardware Error]: TSC 0 MISC d012000100000000 SYND 5d000000 IPID 1002e00000500
Nov 03 16:57:14 server kernel: mce: [Hardware Error]: PROCESSOR 2:870f10 TIME 1667465832 SOCKET 0 APIC 0 microcode 8701021
我确信重启不是由电源故障引起的。原因尚待查明。我还想知道内核是否能够识别不完整的启动并自动重置。软件看门狗应该能够帮助摆脱崩溃,而检查网络的 crontab 任务可以确保连接。将这两者结合起来应该可以实现我想要的效果,但是却没有。我不明白启动卡在某个地方的情况。如果发生崩溃,看门狗应该会引发重置。如果没有,其他不受依赖的单元应该继续初始化,但实际上并没有。这真的很令人困惑…… 结束编辑
我尝试分析日志,但未发现任何有用信息。我希望找出这种偶尔失败的原因及其解决方案。任何想法都将不胜感激,提前感谢大家!
我的平台
Linux 5.10.0-18-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) x86_64 GNU/Linux
编辑2:
问题已经变得很严重了,因为我失去了通过 LAN ssh 配置计算机的最后机会。在这场斗争中,我确认没有一个网络接口被启动,因为 ping 在所有接口上都不起作用。这可以证明我的理论,即 networkd 从未在启动过程中执行过。如果可能的话,我会尝试获取更多信息。
答案1
原来是硬件故障,可能是内存插槽的问题。开机时连自检都进不了,进不了BIOS。换主板后就正常了。谢谢大家帮忙。