并非每个 Linux 用户都纠结系统能多快启动,但我喜欢看“秒进桌面”的干净画面。
即便用上了固态盘,仍可能有“暗坑”拖慢启动。Systemd 自带一整套工具,能精确定位这些“卡点”并逐个击破。我只做了几处小调优,就把启动时间削掉一截,系统依旧稳如老狗。
真正的好处并不只是“秒表少走几格”。启动快的机器,用起来也更跟手,谁也不想每天盯着转圈发呆。
一、先找“慢”在哪
1. systemd-analyze 三件套
systemd-analyze– 给出内核 + 用户空间总耗时systemd-analyze blame– 按耗时倒序列出所有服务,真凶一目了然systemd-analyze critical-chain– 显示关键路径,谁堵了谁,一看就懂
多跑几次,区分“偶发 spike”和“惯犯”。先把最拖时间的干掉,投入产出比最高。
我习惯把原始输出存档,改完再对比,量化收益。
二、砍掉用不着的后台服务
1. 先查再杀
systemctl disable 服务名 禁止自启,手动还能开;
确定这辈子都用不上的,直接 systemctl mask 服务名,连“被依赖拉起来”的机会都不给。
常见可砍对象:
- 打印机守护(cups、hp 之类)——没打印机就拜拜
- 蓝牙(bluetooth.service)——台式机或航班模式用户常用
- Avahi、ModemManager、snapd 自动刷新……按需处理
2. 一条铁律
一次只改一处,重启验证;改之前备份系统或至少创建快照。
几天下来,你就能攒出一套“精干”启动配置,还不带副作用。
三、把 systemd 的并行优势用到极致
1. 理清依赖
systemctl list-dependencies 服务名 看依赖树;
unit 文件里乱写的 After= / Requires= 能精简就精简,别让服务“干等人”。
2. 套接字激活
支持 socket 激活的服务(如 CUPS、Avahi、甚至 ssh)可改成“用时才起”,启动阶段直接跳过。
做法:
systemctl disable 服务名
systemctl enable 服务名.socket
这样第一次访问套接字时才拉进程,既省启动时间又省常驻内存。
四、mask 大法——防止“死灰复燃”
禁用仍可能被更新或依赖再次拉起,mask 直接把服务链接到 /dev/null,谁也别想动。
systemctl mask 服务名
后悔药:systemctl unmask 服务名
mask 前务必确认没有别的关键服务硬依赖它;
搭配 list-dependencies 检查,可保系统长期保持“瘦身后”的身材。
五、桌面阶段也别放过
1. 显示管理器(GDM / LightDM / SDDM)
轻量硬件换 LightDM 比 GDM 启动快一截;
配置文件里把自动登录、游客会话等用不到的关掉。
2. 桌面自启动
GNOME/KDE/XFCE 的“开机启动”里,云同步、更新通知器、助手小程序……只保留刚需。
~/.config/autostart/ 和 /etc/xdg/autostart/ 都可以动刀。
3. target 切换小技巧
把非必需服务拖到 graphical.target 之后启动,让登录界面先出来,后台再慢慢补完。
做法:自定义一个 wanted-by=multi-user.target 的延后服务,或写 systemd 的 After=graphical.target。
六、总结——每天省几秒,长期省几小时
调优不是跑分自嗨,而是让机器每天少浪费你一点时间。
分析 → 禁用 → mask → 并行 → 桌面,五步走完,启动丝滑,系统依旧稳。
改错了?systemctl unmask / enable 随时还原,无压力。
把 Linux 调教成“该快就快”的专属系统,这些细碎的小胜,日积月累就是高效的生产力。