ubuntu minimal启动速度慢怎么办
小樊
35
2025-11-26 18:40:27
Ubuntu Minimal 启动慢的排查与优化
一 定位瓶颈
- 使用 systemd 提供的工具查看启动耗时与依赖链:
- 总耗时与关键路径:systemd-analyze time、systemd-analyze critical-chain
- 各服务耗时排序:systemd-analyze blame
- 生成可视化时间图:systemd-analyze plot > startup.svg
- 若发现大量 dev-loop.device* 或 snapd.service 耗时明显,通常是 Snap 应用导致启动阶段挂载过多只读镜像所致。以上命令能快速确认问题所在。
二 常见原因与对应优化
- 启动服务过多或等待网络
- 精简开机服务:先列出并评估 systemctl list-unit-files --type=service
- 禁用不需要的服务:sudo systemctl disable .service;彻底阻断可用 sudo systemctl mask .service
- 若不是服务器场景,可关闭等待网络就绪的服务:sudo systemctl disable --now NetworkManager-wait-online.service
- 关闭开机动画等待:sudo systemctl mask plymouth-quit-wait.service(会直接进桌面,无动画)
- Snap 导致的大量 dev-loop 挂载
- 精简或移除不常用的 Snap 应用(如用 snap remove ),可显著降低 dev-loop.device* 数量与 snapd.service 耗时
- 若必须保留 Snap,可仅保留关键应用,定期清理无用版本
- 日志占用与磁盘 I/O
- 限制 journal 日志体积:sudo journalctl --vacuum-size=100M,避免开机与运行时日志膨胀拖慢 I/O
- GRUB 菜单等待过长
- 缩短菜单停留:sudo nano /etc/default/grub,将 GRUB_TIMEOUT=2(或更小),保存后执行 sudo update-grub
- 无图形需求却加载桌面
- 仅命令行多用户模式:sudo systemctl set-default multi-user.target;需要图形时再临时切回 sudo systemctl start graphical.target
- 硬件与基础配置
- 优先使用 SSD(启动与整体性能提升显著)
- 适度降低 vm.swappiness(如 sudo sysctl vm.swappiness=10),减少开机及早期运行时的交换倾向
- 保持系统与驱动为较新版本,修复潜在启动性能回归
三 建议的优化顺序
- 采集基线:执行 systemd-analyze time && systemd-analyze blame && systemd-analyze critical-chain,保存结果用于对比
- 快速收益项:缩短 GRUB_TIMEOUT、限制 journal 体积
- 精简服务:关闭 NetworkManager-wait-online、屏蔽 plymouth-quit-wait,按需禁用其他非必要服务
- 处理 Snap:移除不常用 Snap,观察 dev-loop.device* 是否明显减少
- 验证与回滚:每次调整后重启,若异常或影响功能,使用 sudo systemctl enable .service 或 sudo systemctl unmask .service 恢复
四 注意事项
- 禁用或屏蔽服务前,先确认其用途与依赖,避免影响网络、磁盘、账户登录等核心功能
- 使用 mask 会彻底阻止服务被启动(包括被其他服务拉起),比 disable 更“硬”,操作需谨慎
- 服务器或需要联网即用的环境,不宜关闭 NetworkManager-wait-online;桌面用户通常可以关闭以加快进入桌面