我想加快启动速度。我检查了systemd-analyze critical-chain
输出:
graphical.target @13.691s
└─multi-user.target @13.691s
└─cups-browsed.service @13.690s
└─org.cups.cupsd.service @13.419s +269ms
└─network.target @13.412s
└─[email protected] @5.850s +7.561s
└─basic.target @5.838s
└─sockets.target @5.838s
└─avahi-daemon.socket @5.838s
└─sysinit.target @5.837s
└─systemd-update-done.service @5.828s +8ms
└─ldconfig.service @5.183s +643ms
└─local-fs.target @5.180s
└─run-mount-extra.mount @3.333s +1.846s
└─systemd-fsck@dev-disk-by\x2duuid-abd2e996\x2db30b\x2d4e55\x2db52e\x2dccd74242221a.service @1.650s +1.680s
└─local-fs-pre.target @1.649s
└─lvm2-monitor.service @216ms +1.432s
└─lvm2-lvmetad.service @235ms
└─systemd-journald.socket @207ms
└─-.mount @181ms
└─systemd-journald.socket @207ms
└─...
[email protected]
需要 7 秒。但我在启动的前几秒实际上并不需要网络,并且可以在 WM 启动后等待几秒钟。我应该改变什么才能使它成为可能?
答案1
首先,我建议确定您要在哪个目标中启动:
systemctl list-units --type target
systemctl get-default
您可以尝试在哪个目标中启动。
然后,我更喜欢做的是禁用我在启动阶段不需要的服务以及开始他们通过@reboot计划任务。
举一个虚拟机的简单例子:
# systemctl status iptables | grep disabled
Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
# systemctl status ip6tables | grep disabled
Loaded: loaded (/usr/lib/systemd/system/ip6tables.service; disabled; vendor preset: disabled)
# crontab -l
@reboot systemctl restart iptables
@reboot systemctl restart ip6tables
但要小心,因为 systemd 支持服务依赖性,如果禁用核心服务,您的系统可能无法以正确的方式启动。