当前位置:首页>Linux>Linux系统启动卡在三个点

Linux系统启动卡在三个点

  • 2026-10-23 10:12:14
Linux系统启动卡在三个点
这是一个非常经典的 Linux 启动故障排错案例。整个过程跌宕起伏,从最初的“卡在三个点”到发现磁盘丢失,再到遭遇 CentOS 9 特有的 BLS 引导机制陷阱,最后解决 SELinux 权限问题,堪称教科书级别的排错流程。
以下是我们共同完成的故障排错全过程复盘:

阶段一:初诊与定位问题

现象:Linux 启动时一直卡在“三个点”的动画界面,无法进入系统。

1. 发现报错线索

你的操作:按 Esc 键查看后台信息。
系统反馈:
[***] A start job is running for /dev/disk/by-uuid/ac8abe53... (no limit)
诊断结论:系统在无限期等待挂载一个不存在的磁盘分区(UUID: ac8abe53...),通常是 Swap 分区丢失或变动导致的。

阶段二:尝试进入救援模式(遭遇显卡与参数问题)

我们尝试进入单用户模式修改配置文件,但遇到了 vSphere 虚拟机的显示问题。

2. GRUB 参数位置错误

你的操作:尝试添加 rd.break 进入救援模式。
系统反馈:
error: ... invalid file name 'rd.break'
以及后来的 ...512Mrd.break(缺少空格)
解决方法:调整参数位置,必须加在 linux 行的末尾,且必须有空格。

3. vSphere 显卡卡死

你的操作:参数加对了,但启动后黑屏。
系统反馈:
Booting a command list 后无反应。
诊断结论:内核已加载,但显卡驱动导致画面没切过去。
解决方法:组合拳参数 —— 删除 rhgb quiet(关闭动画),删除 resume=UUID=...(临时移除坏分区引用),添加 nomodeset(防显卡卡死)。

阶段三:成功绕过服务,进入系统修改配置

常规救援模式依然会有 Systemd 等待磁盘的问题,我们采用了更底层的 init=/bin/bash 方案。

4. 成功进入命令行

操作:在 GRUB 中添加 rw init=/bin/bash。
结果:成功获得了 root 权限的命令行。

5. 修复 /etc/fstab

系统反馈:
cat /etc/fstab 显示 UUID=ac8abe53... 在第 11 行。
解决方法:使用 vi 编辑器将该行注释掉(加 #)。同时建议注释掉 /swapfile 行以防万一。

6. 修改 GRUB 模板

操作:修改 /etc/default/grub,删除了 GRUB_CMDLINE_LINUX 中的 resume=UUID=... 参数。
操作:运行 grub2-mkconfig 和 dracut -f 重新生成引导。
系统反馈:命令执行成功,无报错。

阶段四:遭遇“僵尸”配置(CentOS 9 BLS 机制陷阱)

这是最折磨人的一步。明明配置文件改了,重启后依然去抓那个坏掉的磁盘。

7. 问题复现与真相大白

现象:重启后依然报错 A start job is running...。
你的操作:进入 /boot/loader/entries/ 目录查看。
系统反馈:
grep "resume" *.conf 显示 3 个启动项文件里,依然赫然写着 resume=UUID=ac8abe53...。
诊断结论:CentOS 9 使用 BLS 引导。修改 /etc/default/grub 只是改了模板,并没有自动更新旧的内核启动项文件。
解决方法:手动编辑这 3 个 .conf 文件,删除了里面的 resume=UUID=... 参数。

阶段五:最后的权限修复(SELinux)

重启后终于跳过了磁盘检查,但又报了新错误。

8. 权限拒绝

系统反馈:
Failed to parse fstab: Permission denied
诊断结论:在 init=/bin/bash 模式下编辑文件,导致 /etc/fstab 的 SELinux 安全标签或文件权限丢失。

9. 路径与工具缺失

你的操作:在 Emergency Mode 下输入 chmod 644 /etc/fstab。
系统反馈:
No such file or directory
诊断结论:急救模式下,系统根目录挂载在 /sysroot。
解决方法:命令改为 chmod 644 /sysroot/etc/fstab。

10. touch 命令缺失

你的操作:尝试 touch /sysroot/.autorelabel 修复标签。
系统反馈:
sh: touch: command not found
解决方法:使用重定向命令替代 —— echo > /sysroot/.autorelabel。

阶段六:大功告成

11. 系统自愈

系统反馈:
SELinux-autorelabel: Relabeling could take a very long time...
最终结果:系统检测到了 .autorelabel 文件,自动开始重置安全标签。等待片刻后,系统自动重启,完美进入登录界面。

总结:本次故障的核心原因链

起因:Swap 分区变动/丢失,但 /etc/fstab 和 GRUB 参数里还有残留。
难点 1:虚拟机环境导致看不到报错(卡在三个点),且容易在启动时黑屏。
难点 2:CentOS 9 的 BLS 机制导致修改 GRUB 模板后,旧的启动项文件没有同步更新(这是重启无效的元凶)。
难点 3:救援模式下修改文件破坏了 SELinux 标签,导致最后报权限错误。
你做得非常棒,一步步排除了所有障碍!这台服务器现在应该非常健康了。

最新文章

随机文章