Linux开机卡在服务表明已进入systemd用户空间阶段,需定位卡点、分析原因并修复;可切TTY登录后用systemd-analyze blame/critical-chain排查耗时服务,禁用NetworkManager-wait-online等高频卡点服务,或通过GRUB添加systemd.unit=multi-user.target等参数跳过问题服务。

Linux开机卡在某个服务,说明系统已进入用户空间(systemd阶段),但某个单元启动失败或长时间无响应。重点不是“能不能进系统”,而是“卡在哪、为什么卡、怎么绕过或修复”。
确认是否真卡住,还是只是慢
有些服务启动耗时较长(比如网络等待、远程挂载、加密卷解锁),系统其实仍在运行,只是没输出新日志。可尝试:
- 按 Ctrl + Alt + F2~F6 切换到 TTY 终端,看能否登录;能登录说明 systemd 已就绪,只是图形或某个服务阻塞了默认目标
- 登录后立即执行 systemd-analyze blame,查看各服务实际耗时(单位:ms);重点关注超过 5000ms 的条目
- 用 systemd-analyze critical-chain 查看从 default.target 到卡点的依赖链,定位瓶颈路径
常见卡点服务及处理方式
以下服务在实际环境中高频导致启动卡顿:
- NetworkManager-wait-online.service:等待网络连通,默认超时 90 秒。若网线未插、DHCP 响应慢或 DNS 不可达,会直接卡住。临时解决:运行 sudo systemctl disable NetworkManager-wait-online.service
- bluetooth.service:老旧蓝牙芯片或驱动异常时可能 hang 在初始化。可禁用:sudo systemctl mask bluetooth.service(mask 比 disable 更彻底,防止被其他服务间接激活)
- lvm2-monitor.service 或 mdmonitor.service:LVM/RAID 监控服务在磁盘响应迟缓或设备离线时易卡。检查物理磁盘状态:sudo smartctl -a /dev/sdX,再决定是否禁用
- remote-fs.target 相关服务(如 nfs-client.target、cifs-mount@xxx.service):挂载远程文件系统失败时默认重试多次。检查 /etc/fstab 中对应行,临时注释掉并运行 sudo mount -a 测试是否报错
快速跳过问题服务进入系统
不想改配置也能先恢复可用性:
- 重启,在 GRUB 菜单按 e 编辑启动项,在 linux 行末尾添加 systemd.unit=multi-user.target(跳过图形界面)或 systemd.unit=rescue.target(进入最小化救援环境)
- 若已知具体服务名(如 xxx.service),可加参数 systemd.mask=xxx.service,该服务将被强制屏蔽且不启动
- 进系统后,用 journalctl -u xxx.service -b 查看该服务本次启动的完整日志,找 failure 或 timeout 关键词
检查底层依赖是否异常
服务卡住常因上游依赖未就绪,例如:
- DNS 解析失败:检查 /etc/resolv.conf 是否指向可用 DNS(如 114.114.114.114),并临时停用 systemd-resolved:sudo systemctl stop systemd-resolved
- 磁盘 I/O 延迟高:运行 iostat -x 1 5 观察 %util 和 await;若某设备持续 100% 或 await > 100ms,可能是硬盘故障或坏道
- 内核模块缺失或冲突:用 dmesg -T | grep -i "failed\|error\|firmware" 查看模块加载失败记录;某些硬件(如 Realtek 网卡、Conexant 声卡)需额外固件包










