如何验证?

如何验证?

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

环境:-

    Manufacturer: Dell Inc.
    Product Name: Precision 5820 Tower
    Ubuntu 18.04 
    4.15.0-29-generic 
    vendor   : NVIDIA Corporation
    model    : GP104GL [Quadro P4000]

以下是 systemd-analyse 输出片段

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

以下是启动日志的几个片段

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).

这是延迟

 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.

安装了来自 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

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

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

谢谢

答案1

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

它在启动过程开始时加载启动徽标,然后等待直到启动过程完成,以便卸载启动画面。也就是说全部确实如此,这就是为什么它必须并行运行并在整个过程中共存所有的启动过程。它不会延迟任何事情,只是等待

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

● plymouth-quit-wait.service -按住直到启动过程完成


如何验证?

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

systemctl list-dependencies --reverse plymouth-quit-wait.service

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

plymouth-quit-wait.service
● └─multi-user.target
●   └─graphical.target

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

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

systemctl list-dependencies plymouth-quit-wait.service

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

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

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


了解更多。

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

systemd-analyze plot > ~/SystemdAnalyzePlot.svg

然后,在你的主目录中查找SystemdAnalyzePlot.svg并在图片查看器或者网络浏览器。您可能需要放大图像才能读出进程名称。这值得检查,并能让您更好地了解启动过程的工作原理。


但是,你可以减少启动时间通过NetworkManager-wait-online.service禁用普利茅斯少等待一个进程。这确实可以减少启动时间。为此,请按照这个答案


哦...请不要打扰普利茅斯,它不是让你等待的人...而是等待你的人。

答案2

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

对我来说,最有效的解决方案是在 grub 中禁用 plumouth

sudo nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT并将行改为

GRUB_CMDLINE_LINUX_DEFAULT="noplymouth video=SVIDEO-1:d"

保存更改后,你必须使用以下命令更新 grub

sudo update-grub

然后重新启动机器。

答案3

您可以通过运行以下命令来禁用此服务:

sudo systemctl disable plymouth-quit-wait.service

来自服务描述:

按住直到启动过程完成

答案4

由于这个 plymouth 服务耗时 1 分 30 秒,我的启动时间长达 3-4 分钟。修复启动时间的方法是将 Ubuntu 20 中的内核从 5.4(我的默认版本)更新到 5.9。

更新内核

相关内容