我目前正在运行 Debian 测试,目前该测试已经很出色了。这是场景:
我特别有两个服务,lighttpd
和chrony
,启动后将无法正常启动。奇怪的是它们会正常启动除非tty1
我通过虚拟控制台以身份登录root
。以非 root 用户身份登录有时也能正常工作,但不一致。除非我这样做,否则lighttpd
将无法完成其启动过程。当我检查 systemd 服务时,它只显示 2 个 php-cgi 分叉进程,而不是通常显示的 5-6 个进程,虽然状态显示该进程处于活动状态并已启动,但我无法访问网络服务器。在这种情况下,chrony
它将超时并失败。
我可以通过 SSH 连接到机器,没有任何问题,但一些与 systemd 相关的命令也会挂起,即如果我尝试禁用或重新启动任一服务,它将挂起或超时。一旦我通过 登录tty1
,它将恢复。我只需要登录一次,然后就可以退出。从那里一切正常,即使通过 SSH 也是如此。只有在启动后才会出现此问题。如果我tty1
在启动后一可用就登录,这两个服务都会正常启动。
就故障排除而言,我所做的事情是卸载lighttpd
,php*
包括chrony
依赖它们使用的任何软件包apt purge
,并确保删除所有剩余文件,然后重新安装。对于lighttpd
和,我还为和的chrony
systemd 单元文件添加了覆盖,但没有效果。After=
Wants=
network-online.target
network.target
我还启动了两个已卸载的服务。如果我尝试chrony
通过 SSH 再次安装,它将挂在 systemd 创建符号链接以启用 systemd 单元文件的位置。当我tty1
此时登录时,它将继续并完成设置。因此,在我看来,systemd 正在执行的引导过程存在某种问题,导致了这种情况,就好像引导过程不知何故没有完全完成一样。
我查看了一些日志,但找不到任何信息可以为我指明解决此问题的正确方向。
答案1
在进一步挖掘日志后,我看到消息kernel: random: crng init done
出现,服务很快就会启动。事实证明这是 Linux 内核的一个错误,根据 4.16 引入这是对有关同一消息的问题的回答。
鉴于它urandom
被阻止了,即使它不应该被阻止,通过虚拟控制台登录似乎足以收集额外的熵并让服务继续启动。
我安装了haveged
,问题解决了。