由于 plymouth-quit-wait.service + ubuntu 18.04 导致启动缓慢问题

use*_*980 23 boot dual-boot plymouth systemd 18.04

这是新安装的机器,在 Win 10 上作为双启动运行。由于某些原因,由于 plymouth 服务无法启动,每次重新启动机器都会挂起 15 秒。

环境:-

    Manufacturer: Dell Inc.
    Product Name: Precision 5820 Tower
    Ubuntu 18.04 
    4.15.0-29-generic 
    vendor   : NVIDIA Corporation
    model    : GP104GL [Quadro P4000]
Run Code Online (Sandbox Code Playgroud)

以下是 systemd-analysis 输出片段

sudo systemd-analyze blame
     14.405s plymouth-quit-wait.service
      8.843s dev-sdb4.device
      8.049s NetworkManager-wait-online.service
      5.305s bolt.service
      4.889s snapd.service
      4.243s udisks2.service
      4.092s grub-common.service
      3.806s networking.service
      3.780s ModemManager.service
      3.325s dev-loop10.device
      3.295s apparmor.service
      3.190s dev-loop13.device
      3.162s accounts-daemon.service
Run Code Online (Sandbox Code Playgroud)

这是启动日志的几个片段

Feb 18 11:37:42  polkitd[876]: started daemon version 0.105 using 
authority implementation `local' version `0.105'
Feb 18 11:37:42  dbus-daemon[820]: [system] Successfully activated service 'org.freedesktop.PolicyKit1'
Feb 18 11:37:42 systemd[1]: Started Authorization Manager.
Feb 18 11:37:42  accounts-daemon[801]: started daemon version 0.6.45
Feb 18 11:37:42  systemd[1]: Started Accounts Service.
Feb 18 11:37:42  systemd[1]: Received SIGRTMIN+20 from PID 394 (plymouthd).
Run Code Online (Sandbox Code Playgroud)

这是延迟

 Feb 18 11:37:57  nvidia-persistenced: The daemon no longer has 
 permission to remove its runtime data directory /var/run/nvidia- 
 persistenced
 Feb 18 11:37:57  nvidia-persistenced: Shutdown (1206)
 Feb 18 11:37:57  systemd[1]: Stopped NVIDIA Persistence Daemon.
 Feb 18 11:37:58  gdm3: Child process -1088 was already dead.
 Feb 18 11:37:58  systemd[1]: Stopping User Manager for UID 121...
 Feb 18 11:37:58 systemd[1]: Received SIGRTMIN+21 from PID 394 (plymouthd)

sudo systemctl status plymouth-quit-wait.service
? plymouth-quit-wait.service - Hold until boot process finishes up
 Loaded: loaded (/lib/systemd/system/plymouth-quit-wait.service; static; vendor preset: enabled)
 Active: inactive (dead) since Mon 2019-02-18 11:37:58 +04; 7min ago
Main PID: 943 (code=exited, status=0/SUCCESS)

Feb 18 11:37:43  systemd[1]: Starting Hold until boot 
process finishes up...
Feb 18 11:37:58  systemd[1]: Started Hold until boot 
process finishes up.
Run Code Online (Sandbox Code Playgroud)

安装了最新版本的图形驱动程序 - 来自 ppa 存储库的 415

ii  nvidia-compute-utils-415                   415.27-0ubuntu0~gpu18.04.2          amd64        NVIDIA compute utilities
ii  nvidia-dkms-415                            415.27-0ubuntu0~gpu18.04.2          amd64        NVIDIA DKMS package
ii  nvidia-driver-415                          415.27-0ubuntu0~gpu18.04.2          amd64        NVIDIA driver metapackage
ii  nvidia-kernel-common-415                   415.27-0ubuntu0~gpu18.04.2          amd64        Shared files used with the kernel module
ii  nvidia-kernel-source-415                   415.27-0ubuntu0~gpu18.04.2          amd64        NVIDIA kernel source package
ii  nvidia-prime                               0.8.8.2                             all          Tools to enable NVIDIA's Prime
ii  nvidia-settings                            415.27-0ubuntu0~gpu18.04.1          amd64        Tool for configuring the NVIDIA graphics driver
ii  nvidia-utils-415                           415.27-0ubuntu0~gpu18.04.2          amd64        NVIDIA driver support binaries
ii  xserver-xorg-video-nvidia-415              415.27-0ubuntu0~gpu18.04.2          amd64        NVIDIA binary Xorg driver
Run Code Online (Sandbox Code Playgroud)

你能告诉我为什么由于 plymount-quit 服务而发生延迟吗?请让我知道您是否需要任何其他信息来进行故障排除?

是否与硬件/软件/grahics 驱动程序问题有关?

谢谢

Raf*_*ffa 33

普利茅斯不会减慢您的启动过程!Plymouth 负责启动启动画面。请阅读普利茅斯

它在启动过程开始时加载启动徽标,然后等待启动过程完成,以便卸载启动画面。这就是它所做的一切,这就是为什么它必须在整个启动过程中并行运行并共存。它不会延迟任何事情,它只是等待

这正是正在发生的事情。不多也不少。请查看您添加到问题中的输出并仔细阅读以下内容:

? plymouth-quit-wait.service -保持直到启动过程完成


如何验证?

您可以plymouth-quit-wait.service通过运行以下命令来验证除了图形登录屏幕之外没有任何阻碍:

systemctl list-dependencies --reverse plymouth-quit-wait.service
Run Code Online (Sandbox Code Playgroud)

这将输出所有依赖的服务plymouth-quit-wait.service(即延迟了 的服务plymouth-quit-wait.service)。在新安装的 Ubuntu 系统上,输出将如下所示:

plymouth-quit-wait.service
? ??multi-user.target
?   ??graphical.target
Run Code Online (Sandbox Code Playgroud)

这意味着只有图形登录屏幕被配置为等待plymouth-quit-wait.service没有别的

另一方面,如果您plymouth-quit-wait.service通过运行以下命令列出配置为等待的服务:

systemctl list-dependencies plymouth-quit-wait.service
Run Code Online (Sandbox Code Playgroud)

输出将是几乎所有应该在启动时运行的服务,输出将如下所示:

plymouth-quit-wait.service
? ??system.slice
? ??sysinit.target
?   ??apparmor.service
?   ??dev-hugepages.mount
?   ??dev-mqueue.mount
?   ??grub-initrd-fallback.service
?   ??keyboard-setup.service
?   ??kmod-static-nodes.service
?   ??plymouth-read-write.service
?   ??plymouth-start.service
?   ??proc-sys-fs-binfmt_misc.automount
?   ??setvtrgb.service
?   ??sys-fs-fuse-connections.mount
?   ??sys-kernel-config.mount
?   ??sys-kernel-debug.mount
?   ??systemd-ask-password-console.path
?   ??systemd-binfmt.service
?   ??systemd-hwdb-update.service
?   ??systemd-journal-flush.service
?   ??systemd-journald.service
?   ??systemd-machine-id-commit.service
?   ??systemd-modules-load.service
?   ??systemd-random-seed.service
?   ??systemd-sysctl.service
?   ??systemd-sysusers.service
?   ??systemd-timesyncd.service
?   ??systemd-tmpfiles-setup-dev.service
?   ??systemd-tmpfiles-setup.service
?   ??systemd-udev-trigger.service
?   ??systemd-udevd.service
?   ??systemd-update-utmp.service
?   ??cryptsetup.target
?   ??local-fs.target
?   ? ??-.mount
?   ? ??systemd-fsck-root.service
?   ? ??systemd-remount-fs.service
?   ??swap.target
?     ??swapfile.swap
Run Code Online (Sandbox Code Playgroud)

这证实了这plymouth-quit-wait.service不会减慢任何速度,而只是并行运行等待系统完全启动,然后它将隐藏启动闪屏以显示图形登录屏幕。


要了解更多。

请在终端中运行以下命令:

systemd-analyze plot > ~/SystemdAnalyzePlot.svg
Run Code Online (Sandbox Code Playgroud)

然后,SystemdAnalyzePlot.svg在您的主目录中查找并在图像查看器Internet 浏览器中运行它。您可能需要放大图像,以便您可以阅读进程名称。值得检查,它将让您更好地了解启动过程的工作原理。


但是,您可以通过禁用来减少启动时间NetworkManager-wait-online.service这样普利茅斯就少了一个等待的过程。这确实可以减少您的启动时间。为此,请按照此答案中的步骤操作。


哦……请别管普利茅斯,让你等待的不是那个……是等你的那个。

  • @GovindaSakare `NetworkManager-wait-online.service` 的目的是在继续启动过程之前等待网络上线。例如,对于依赖网络资源作为引导过程的一部分的服务器(例如安装远程驱动器)或在依赖网络正确引导的工作站(例如瘦客户端)的情况下,这是必需的。否则,桌面用户可以禁用`NetworkManager-wait-online.service`,网络将在启动完成减去不需要的等待时间后正常连接。在这种情况下禁用是安全的。 (2认同)
  • @Raffa 那么当我从 /etc/default/grub 的内核命令行中删除“splash”时,为什么我的机器会在几秒钟内启动? (2认同)

Mr.*_*lze 6

我不能说还有什么是必要的,但我可以为您提供一个解决方法,以便机器启动得更快。

对我来说,最有效的解决方案是禁用 grub 中的普利茅斯

sudo nano /etc/default/grub
Run Code Online (Sandbox Code Playgroud)

并将该行更改GRUB_CMDLINE_LINUX_DEFAULT

GRUB_CMDLINE_LINUX_DEFAULT="noplymouth video=SVIDEO-1:d"
Run Code Online (Sandbox Code Playgroud)

保存更改后,您必须使用以下内容更新 grub

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

然后重启机器。