systemd-analyze可定位并优化系统启动慢问题:一、用time/blame/critical-chain分析耗时与瓶颈;二、禁用非必要自启服务;三、精简依赖关系;四、启用异步挂载;五、精简initramfs。

如果您发现系统启动时间过长,无法快速进入桌面环境,则可能是由于部分服务启动耗时过高或存在依赖阻塞。以下是使用 systemd-analyze 工具定位并优化启动过程的步骤:
一、查看整体启动耗时与关键时间点
systemd-analyze 可以输出从固件启动到用户会话就绪的完整时间分布,帮助识别瓶颈阶段(如 firmware、loader、kernel、initrd、userspace)。
1、在终端中执行 systemd-analyze time,显示各阶段耗时总览。
2、运行 systemd-analyze blame,按启动耗时倒序列出所有已启动单元,定位最慢服务。
3、执行 systemd-analyze critical-chain,展示从初始化目标(default.target)向上追溯的关键路径及其延迟叠加。
二、禁用非必要开机自启服务
部分服务默认启用但实际使用频率极低,禁用它们可减少并行启动负载及依赖链长度。
1、根据 systemd-analyze blame 输出,筛选出耗时超过 500ms 且非核心功能的服务(如 bluetooth.service、ModemManager.service)。
2、对目标服务执行 sudo systemctl disable --now 服务名.service,立即停止并禁止开机启动。
3、验证禁用效果:重启后再次运行 systemd-analyze blame,确认该服务不再出现在列表中或耗时归零。
三、优化服务启动顺序与依赖关系
通过调整单元文件中的依赖声明(WantedBy、After、Before),可缩短关键路径长度,避免无关服务阻塞核心目标启动。
1、使用 systemctl cat 服务名.service 查看原始单元定义。
2、创建覆盖配置目录:sudo mkdir -p /etc/systemd/system/服务名.service.d。
3、新建覆盖文件:sudo nano /etc/systemd/system/服务名.service.d/override.conf,写入精简依赖项,例如只保留 After=network.target,移除冗余的 Wants=xxx.service。
网趣购物系统静态版支持网站一键静态生成,采用动态进度条模式生成静态,生成过程更加清晰明确,商品管理上增加淘宝数据包导入功能,与淘宝数据同步更新!采用领先的AJAX+XML相融技术,速度更快更高效!系统进行了大量的实用性更新,如优化核心算法、增加商品图片批量上传、谷歌地图浏览插入等,静态版独特的生成算法技术使静态生成过程可随意掌控,从而可以大大减轻服务器的负担,结合多种强大的SEO优化方式于一体,使
4、重载配置:sudo systemctl daemon-reload,并重启服务验证行为未异常。
四、启用并行初始化与异步挂载
默认情况下,某些挂载点(尤其是 NFS 或加密卷)会同步阻塞启动流程;启用异步挂载可使内核在后台处理,不中断其余服务启动。
1、编辑 fstab 文件:sudo nano /etc/fstab。
2、对非系统必需挂载项(如 /home、/data),在第四列选项中添加 x-systemd.automount 或替换为 noauto,x-systemd.automount。
3、对支持异步的块设备挂载,追加 x-systemd.device-timeout=30 防止超时卡死。
4、执行 sudo systemctl daemon-reload 并重启验证挂载是否按需触发而非启动时强制等待。
五、精简 initramfs 并跳过冗余模块加载
过大的 initramfs 会延长 kernel 到 userspace 的过渡时间;移除非必要驱动和工具可显著缩短该阶段。
1、检查当前 initramfs 大小:ls -lh /boot/initramfs-$(uname -r).img。
2、查看包含模块:lsinitcpio -l /boot/initramfs-$(uname -r).img | grep '\.ko'。
3、编辑 /etc/mkinitcpio.conf,从 MODULES 行删除明确不需要的硬件驱动(如 r8169、iwlwifi 若使用有线网络)。
4、从 HOOKS 行移除非必需钩子(如 encrypt、lvm2 若未使用全盘加密或 LVM)。
5、重新生成 initramfs:sudo mkinitcpio -P。









