帮助理解和调试使用 systemd network-online.target 的缓慢启动

帮助理解和调试使用 systemd network-online.target 的缓慢启动

我在谷歌上花了一些时间,但我不想在这里快速修复,我想了解发生了什么。我有一个桌面,可以在 3 秒内启动到 Windows,并在 10 秒内启动较旧的 ubuntu,但使用 Kubuntu 15.10 需要 40 多秒才能启动,而且 KDE 登录也非常慢。

$ systemd-analyze critical-chain 

graphical.target @9.961s
└─multi-user.target @9.961s
  └─getty.target @9.961s
    └─[email protected] @9.961s
      └─rc-local.service @9.925s +3ms
        └─network-online.target @9.924s
          └─network.target @1.000s
            └─wpa_supplicant.service @1.772s +338ms
              └─basic.target @797ms
                └─sockets.target @797ms
                  └─avahi-daemon.socket @797ms
                    └─sysinit.target @795ms
                      └─networking.service @740ms +54ms
                        └─apparmor.service @416ms +323ms
                          └─local-fs.target @409ms
                            └─local-fs-pre.target @409ms
                              └─systemd-remount-fs.service @401ms +6ms
                                └─system.slice @128ms
                                  └─-.slice @128ms

所以很明显,延迟是由于等待上线造成的。这里有很多问题:

  1. 为什么会有 Ubuntu 桌面版堵塞我的启动和登录是否在等待网络连接?这些服务在我启动后不能启动吗?我想知道为什么有人认为这是合理的。即使对于服务器来说,让它启动然后启动需要网络的服务不是更好吗?

  2. 我如何调试哪些服务在网络上被阻止?我试过了$ systemctl show network-online.target,它只是显示 需要在线目标kerneloops.service。为什么该服务需要互联网才能启动?此外,这似乎是安装时的标准配置。我想我可以禁用它,但我不想花接下来的 3 个小时逐一禁用和重新启动。有没有更好的方法来查看 上所有被阻止的服务network-online.target?我可以推迟这些服务在登录后启动而不是禁用它们吗?

  3. 这对我来说是最不重要的,但是在通过以太网连接到路由器的台式机上,为什么需要将近 10 秒钟才能上网?

答案1

我(部分)解决了这个问题,所以我想发布一下解决方法,以防遇到类似问题的人发现这个问题。

概括After=network-online.target:我注释掉了中的行/lib/systemd/system/rc-local.service.d/debian.conf。请注意,这可能会破坏依赖于网络的 rc.local 脚本。

以下是我找到它的方法。首先,我阅读了一些资料这里

从我上面的帖子中,我知道它network-online.target很慢,通过谷歌搜索,我知道它是等待网络连接的东西。我运行systemctl list-dependencies network-online.target --before以确定哪些服务在网络启动后等待,然后看到它就rc-local.service在那里。此外,图形目标(我认为是打开登录屏幕的东西)依赖于rc-local.service。我运行systemctl cat rc-local.service并看到 Debian 已添加After对 online 的依赖,更多信息在这个错误中

思考这是安全的,只要 rc.local 中没有任何需要网络的东西,对于大多数正常的非服务器安装来说都是如此。

现在我的系统“启动”大约需要 3 秒,但在输入密码后需要很长时间才能登录,所以我可能已经失败了,但至少我取得了进步。

相关内容