如何在启动时在图形之后(或并行)进行网络加载

如何在启动时在图形之后(或并行)进行网络加载

我想加快启动速度。我检查了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 支持服务依赖性,如果禁用核心服务,您的系统可能无法以正确的方式启动。

相关内容