在干净的 SSD 安装 (18.04) 上定期进行 dist 升级后,Ubuntu 加载/闪屏上的启动延迟很长

Bro*_*rde 27 boot plymouth snap 18.04

自从正式发布之日安装干净的 SSD 以来,我一直在运行 18.04,没有问题。
开机登录是秒(最多 10)

然后,今天早上做了一个定期升级

$ sudo apt update && sudo apt dist-upgrade
Run Code Online (Sandbox Code Playgroud)

安装/升级的软件包是

Install: linux-headers-4.15.0-24:amd64 (4.15.0-24.26, automatic), linux-headers-4.15.0-24-generic:amd64 (4.15.0-24.26, automatic), linux-modules-extra-4.15.0-24-generic:amd64 (4.15.0-24.26, automatic), linux-modules-4.15.0-24-generic:amd64 (4.15.0-24.26, automatic), linux-image-4.15.0-24-generic:amd64 (4.15.0-24.26, automatic)
Upgrade: gnome-control-center-data:amd64 (1:3.28.1-0ubuntu1.18.04.1, 1:3.28.1-0ubuntu1.18.04.2), linux-headers-generic:amd64 (4.15.0.23.25, 4.15.0.24.26), gnome-control-center:amd64 (1:3.28.1-0ubuntu1.18.04.1, 1:3.28.1-0ubuntu1.18.04.2), linux-image-generic:amd64 (4.15.0.23.25, 4.15.0.24.26), linux-signed-generic:amd64 (4.15.0.23.25, 4.15.0.24.26), gnome-control-center-faces:amd64 (1:3.28.1-0ubuntu1.18.04.1, 1:3.28.1-0ubuntu1.18.04.2), linux-generic:amd64 (4.15.0.23.25, 4.15.0.24.26)
Run Code Online (Sandbox Code Playgroud)

升级完成后我重新启动,并注意到Ubuntu 加载/启动屏幕(登录前)有 2-3 分钟的延迟(点上没有指示任何进度/活动)。

我关闭电源并尝试再次启动,但现在一直出现这种延迟。关闭也慢得多。

更新 #1 (2018-07-03):
对 systemd 的分析:

$ sudo systemd-analyze blame
3min 53.073s plymouth-quit-wait.service
    2min 20.699s snapd.seeded.service
         49.949s snapd.service
          6.186s NetworkManager-wait-online.service
          1.148s dev-sda2.device
          1.098s plymouth-start.service
Run Code Online (Sandbox Code Playgroud)

显示plymouth-quit-wait.service(我现在认为这与 Ubuntu 加载/启动屏幕有关)并且snapd.seeded.service是迄今为止启动时间最长的服务。所以我比较了之前dist-upgrade和之后的时间:

$ journalctl -u plymouth-quit-wait.service --since today
-- Logs begin at Fri 2018-04-27 13:01:30 BST, end at Tue 2018-07-03 12:38:05 BST. --
Jul 03 04:15:43 user-laptop systemd[1]: Starting Hold until boot process finishes up...
Jul 03 04:15:46 user-laptop systemd[1]: Started Hold until boot process finishes up.
-- Reboot --
Jul 03 04:21:17 user-laptop systemd[1]: Starting Hold until boot process finishes up...
Jul 03 04:24:52 user-laptop systemd[1]: Started Hold until boot process finishes up.
Run Code Online (Sandbox Code Playgroud)

升级plymouth-quit-wait.service3秒经过升级花了3分钟35秒

$ journalctl -u snapd.seeded.service --since today
-- Logs begin at Fri 2018-04-27 13:01:30 BST, end at Tue 2018-07-03 12:42:14 BST. --
Jul 03 04:15:43 user-laptop systemd[1]: Starting Wait until snapd is fully seeded...
Jul 03 04:15:43 user-laptop systemd[1]: Started Wait until snapd is fully seeded.
-- Reboot --
Jul 03 04:22:47 user-laptop systemd[1]: Starting Wait until snapd is fully seeded...
Jul 03 04:24:49 user-laptop systemd[1]: Started Wait until snapd is fully seeded.
Run Code Online (Sandbox Code Playgroud)

升级snapd.seeded.service0秒经过升级花了2分钟2秒。

更新 #2 (2018-07-06):
今天早上的开机看到了延迟回归
所以我想我们仍在等待 kernel/plymouth/snapd 更新

更新 #3 (2018-07-12):
问题似乎已解决,但我没有看到 snap 或 plymouth 的任何更新,而且我仍在运行 4.15.0-24 内核。所以我不确定哪个包更新解决了这个问题,或者它是否只是以某种方式自行解决。阅读启动板上的错误更新,我不清楚对什么包做了什么(或正在做什么)。如果有人可以澄清这将非常有用。

小智 15

这是一个内核相关的回归,launchpad bug 是:https : //bugs.launchpad.net/ubuntu/+bug/1779827

作为解决方法,请在启动时按下键和/或移动鼠标。

简而言之,使用 /dev/urandom 或 getrandom() 的服务现在会阻塞,直到有足够的熵可用。过去,/dev/urandom 所需的熵要少得多。

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1779961/comments/5的最新状态是:

元包已回滚,正在应用和上传修复程序。

snapd 团队也对此进行了研究,并与 bson 上游合作以确保启动时不需要 /dev/unrandom ( https://github.com/snapcore/snapd/pull/5464 )

所以这个问题应该很快通过内核或 snapd 更新来解决。


小智 12

您可以在系统中移动鼠标或增加熵。

sudo apt install haveged
Run Code Online (Sandbox Code Playgroud)

网站

适用于默认内核和 ukuu。这允许系统在内核 4.17.4 上正确启动。


小智 5

我有同样的问题 4.15.0-24-generic #26-Ubuntu SMP

user@nb:~$ systemd-analyze blame |head
         4min 2s plymouth-quit-wait.service
          1.440s systemd-udev-settle.service
           562ms dev-sda1.device
           313ms udisks2.service
           240ms systemd-rfkill.service
           231ms NetworkManager.service
           194ms networkd-dispatcher.service
           180ms systemd-backlight@backlight:acpi_video0.service
           179ms systemd-journal-flush.service
           147ms systemd-logind.service
Run Code Online (Sandbox Code Playgroud)

对于临时解决方法,您只需要在启动时移动鼠标/触摸板,即可获得“正常”启动时间;就我而言:

user@nb:~$ systemd-analyze blame |head
          1.440s systemd-udev-settle.service
           882ms plymouth-quit-wait.service
           562ms dev-sda1.device
           313ms udisks2.service
           240ms systemd-rfkill.service
           231ms NetworkManager.service
           194ms networkd-dispatcher.service
           180ms systemd-backlight@backlight:acpi_video0.service
           179ms systemd-journal-flush.service
           147ms systemd-logind.service
Run Code Online (Sandbox Code Playgroud)

修复来源:https : //ubuntuforums.org/showthread.php?t=2395451&p=13780509#post13780509


psi*_*i75 5

我在我管理的两个桌面上看到了这个清单。运行以下命令进行安装rng-tools为我解决了这个问题:

sudo apt install rng-tools
Run Code Online (Sandbox Code Playgroud)

来自 Arch wiki: rng-tools 是一组与内核中的随机数生成相关的实用程序。这主要用于增加内核中的熵量以使 /dev/random 更快。