Linux系统启动卡在三个点
这是一个非常经典的 Linux 启动故障排错案例。整个过程跌宕起伏,从最初的“卡在三个点”到发现磁盘丢失,再到遭遇 CentOS 9 特有的 BLS 引导机制陷阱,最后解决 SELinux 权限问题,堪称教科书级别的排错流程。
阶段一:初诊与定位问题
现象:Linux 启动时一直卡在“三个点”的动画界面,无法进入系统。1. 发现报错线索
[***] 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。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 标签,导致最后报权限错误。你做得非常棒,一步步排除了所有障碍!这台服务器现在应该非常健康了。