CentOS7启动卡进度条?别急着重装,按这份排查思路五分钟救活服务器
CentOS7排查启动卡在进度条的思路

机器重启后,进度条死活不走,远程连不上,机房又远,心里是不是瞬间凉半截?别慌,CentOS7启动卡住并不等于系统报废,多数时候只是某个服务或驱动在耍脾气。把下面这套思路过一遍,基本能定位问题,省得来回跑机房。
一、先别断电,看一眼屏幕到底卡在哪
进度条不动时,按一下ESC键,CentOS7会把花哨的进度条切回详细滚动日志。这一步零成本,却能看到最后一条挂起的日志,比如“Started Network Manager”或“A start job is running for…”。记住这个关键词,后面搜日志、搜论坛都靠它。
二、单用户模式进去,把“凶手”揪出来
如果ESC看不出门道,直接进单用户模式:重启,在GRUB菜单选中内核,按e,把ro后面加“systemd.unit=rescue.target”,Ctrl+x启动。进去后先systemctl --failed,红色标出的服务就是启动失败的嫌疑人。再journalctl -xb | grep -i fail,时间戳对照,基本能锁定哪一步超时。
三、90秒魔咒:NetworkManager等待DHCP

最常见场景是网卡等待DHCP,默认90秒超时。进度条就卡在这90秒。单用户里vi /etc/sysconfig/network-scripts/ifcfg-xxx,把ONBOOT=yes改成no,或者加NM_CONTROLLED=no,重启network服务,机器立刻继续走条。后续再慢慢调IP,不耽误上线。
四、挂载失败:fstab写错一行,系统就傻等
另一个高发点是/etc/fstab。UUID写错、磁盘被拔、NAS断网,系统都会原地等挂载,进度条一动不动。单用户下mount -a,看哪一行挂不上,先注释掉,再reboot,系统秒过。磁盘修复完再取消注释,数据一样不少。
五、SELinux标签损坏:audit日志疯狂刷
强制重启容易把SELinux标签弄乱,系统会无限重新标记。进度条卡在“Starting Relabel”时,在GRUB行末加enforcing=0,临时关闭SELinux,先进系统,再touch /.autorelabel,重启让它安静重标,一晚就完事。
六、initramfs缺驱动:raid卡、nvme找不到根

换完raid卡或内核升级后,initramfs里缺驱动,系统找不到根分区,进度条直接卡死。用安装U盘进救援模式,chroot /mnt/sysimage,dracut --force --add-drivers "megaraid_sas nvme",重新生成initramfs,重启立刻识别。
七、systemd循环依赖:自定义服务写崩了
自己写的服务如果After=network-online.target,又Wants=network-online.target,容易形成死循环。单用户里systemd-analyze plot > boot.svg,sz出来用浏览器打开,哪个服务时间条最长一眼看穿。把依赖改成After=network.target,重启就顺了。
八、终极兜底:让systemd别藏错误
在GRUB行末加systemd.loglevel=debug systemd.logtarget=kmsg console=tty0,所有调试信息直接刷在本地显示器,卡在哪一行全屏打印,拍照发给同事也能秒懂。排完错再把参数去掉,日志量立刻降下来。
九、事后复盘:写个检查脚本,下次不抓瞎
把上面步骤写成脚本放到/root/bootcheck.sh:检查fstab UUID、检查网卡DHCP、检查failed服务、检查SELinux状态。每次更新配置跑一遍,提前发现雷点,比出事再跑机房省机票。
CentOS7启动卡在进度条,九成情况都能用这几步救回来。记住口诀:先看ESC,再进单用户,锁定失败服务,90秒网络、fstab、SELinux、initramfs挨个过。真遇到硬件损坏,那再考虑换盘也不迟。把思路装进口袋,下次进度条再耍赖,你就能端着咖啡远程搞定,再也不用深夜狂奔机房。
