这是新安装的机器,以 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。