在我迁移到 Ubuntu 20.04 的最初几天里,一切都进展顺利,现在是时候
systemd-analyze time
Startup finished in 17.732s (firmware) + 9.357s (loader) + 10.604s (kernel) + 2min 13.861s (userspace) = 2min 51.555s
graphical.target reached after 2min 13.331s in userspace
以及责任
systemd-analyze blame
2min 857ms systemd-udev-settle.service
6.461s NetworkManager-wait-online.service
2.869s plymouth-quit-wait.service
1.379s snap.lxd.activate.service
1.334s snapd.service
1.078s cloud-init-local.service
这是它在关键链中的样子
systemd-analyze critical-chain systemd-udev-settle.service
The time when unit became active or started is printed after the "@" character.
The time the unit took to start is printed after the "+" character.
systemd-udev-settle.service +2min 857ms
└─systemd-udev-trigger.service @421ms +121ms
└─systemd-udevd-kernel.socket @410ms
└─system.slice @405ms
└─-.slice @405ms
任何帮助表示感谢
答案1
您systemd-udev-settle.service
显然可以毫无问题地禁用它。
来自手册页:
此服务调用udevadm 解决等待 udev(7) 排队的所有事件都处理完毕。这是一种粗暴的方式,等待“所有”硬件都被发现。服务可能会拉入此服务,然后命令自己等待 udev 队列为空。
不建议使用此服务。 无法保证硬件在任何特定时间都能被完全发现,因为内核异步进行硬件检测,某些总线和设备需要很长时间才能准备就绪,而且可能随时插入其他硬件。相反,服务应该订阅 udev 事件并在发现任何新硬件时做出反应。根据配置预期某些设备出现的服务可能会在超时后发出警告或报告故障。此超时应根据硬件类型进行量身定制。等待 systemd-udev-settle.service 通常会显著减慢启动速度,因为这也意味着要等待所有不相关的事件。
您可以通过输入来禁用它
sudo systemctl disable systemd-udev-settle
答案2
最后,解决方法 sudo systemctl mask systemd-udev-settle 完成了工作
systemd-analyze time
Startup finished in 21.799s (firmware) + 8.493s (loader) + 18.186s (kernel) + 13.149s (userspace) = 1min 1.628s