当CentOS系统在启动过程中停滞在那个熟悉的进度条界面时,许多用户会感到困惑和焦虑,这个读条,技术上称为Plymouth(或旧版本中的rhgb),其设计初衷是为了提供一个美观、无干扰的启动体验,当它不再前进时,这层美观的外衣反而成了诊断问题的障碍,读条卡住本身并不是问题,它只是一个表象,背后隐藏着系统在初始化过程中遇到的真正故障。
第一步:摆脱读条,直面真相
解决问题的首要步骤是获取被读条隐藏起来的关键信息,系统在后台实际上正在输出大量的日志,只是图形界面覆盖了它们,要看到这些信息,最简单的方法是在读条出现时按下键盘上的 Esc
键,这通常会立即切换到文本模式的启动日志界面,让你能看到系统正在执行哪一步,以及在哪一步停止了。
如果按下 Esc
键没有反应,或者你希望永久性地看到启动详情,那么就需要修改内核的启动参数,这需要一点额外的操作:
- 在开机引导菜单(GRUB界面)出现时,按下
e
键进入编辑模式。 - 找到以
linux
或linux16
或linuxefi
开头的那一行,在这一行的末尾,你会看到rhgb
和quiet
这两个参数。 - 将这两个参数删除。
rhgb
(Red Hat Graphical Boot) 就是启动图形界面的元凶,而quiet
则是抑制信息输出的指令。 - 按下
Ctrl + X
或F10
来使用修改后的参数启动系统。
这样做之后,你将不再看到进度条,而是完整的启动日志,卡住的位置和错误信息将一目了然。
常见原因与解决方案
一旦能够看到错误日志,我们就可以根据常见的错误信息进行针对性排查,以下是一些最频繁导致CentOS启动卡顿的原因及其解决思路。
文件系统检查 (fsck)
系统在进行磁盘检查时,可能会看起来像是“卡住”了,尤其是在大容量磁盘或存在坏道的情况下,日志会显示类似 fsck
或 A start job is running for /dev/disk/by-uuid/...
的信息。
- 现象:进度条长时间不动,但日志显示磁盘正在被检查,通常伴有百分比计数。
- 解决方案:耐心等待,这是系统为了确保数据一致性而进行的必要操作,如果这个过程异常漫长或反复出现,可能意味着硬盘存在物理坏道,建议使用Live CD/USB启动盘,进入救援模式后,手动运行
fsck -f /dev/sdXn
(将/dev/sdXn
替换为你的分区)进行强制检查和修复。
/etc/fstab
配置错误
/etc/fstab
文件定义了系统启动时需要自动挂载的文件系统,如果此文件中的某个条目配置错误(如设备名称、UUID不正确,或挂载选项不当),系统会因无法完成挂载而停滞。
- 现象:日志中明确提示
failed to mount /path/to/mountpoint
或Dependency failed for Local File Systems
。 - 解决方案:
- 系统可能会自动进入紧急模式,如果进入,输入root密码后可以获得一个shell。
- 使用
vi
或nano
编辑器打开/etc/fstab
文件。 - 找到可疑的条目,可以在其行首加上 号将其暂时注释掉。
- 保存文件后重启系统,如果能正常启动,说明问题确实出在被注释掉的条目上,你需要检查该设备是否存在,UUID是否正确(使用
blkid
命令查看),或者挂载选项是否合适。
Systemd 服务启动失败
Systemd是CentOS 7及以后版本的初始化系统和服务管理器,某个关键服务启动失败,且被配置为“阻塞”启动流程时,也会导致系统卡住。
- 现象:日志显示
Job for some-service.service failed because the control process exited with error code
。 - 解决方案:
- 进入系统后(无论是正常进入还是紧急模式),使用命令
systemctl status some-service.service
查看该服务的详细状态和最近的日志。 - 使用
journalctl -u some-service.service
可以查看更完整的该服务专属日志,从中定位错误原因。 - 根据错误信息修复服务的配置文件,或者如果该服务暂时非必需,可以使用
systemctl disable some-service.service
禁用其开机自启。
- 进入系统后(无论是正常进入还是紧急模式),使用命令
为了更清晰地梳理,下表小编总结了上述常见问题:
常见现象 | 可能原因 | 解决思路 |
---|---|---|
长时间停留在读条,无任何提示 | 文件系统检查 (fsck) | 耐心等待,或从Live CD手动检查 |
按Esc后显示“failed to mount” | /etc/fstab 配置错误或设备缺失 | 进入紧急模式,编辑/etc/fstab 并注释掉错误行 |
按Esc后显示服务启动失败 | 某个Systemd服务配置错误 | 使用journalctl 查看日志并修复或禁用服务 |
卡在加载驱动程序阶段 | 硬件驱动(尤其是显卡)不兼容 | 尝试不同内核,或在GRUB中添加驱动参数 |
相关问答FAQs
Q1: 我怎样才能永久禁用图形化启动画面,以便每次都能看到详细的启动日志?
A: 要永久禁用图形化启动,你需要修改GRUB的默认配置文件,以root权限打开 /etc/default/grub
文件,找到 GRUB_CMDLINE_LINUX
这一行,删除其中包含的 rhgb
和 quiet
参数,将其从 GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
修改为 GRUB_CMDLINE_LINUX="crashkernel=auto"
,保存文件后,运行 grub2-mkconfig -o /boot/grub2/grub.cfg
(对于UEFI系统,路径可能是 /boot/efi/EFI/centos/grub.cfg
) 来重新生成GRUB配置,下次重启时,系统就会默认以文本模式显示详细的启动过程。
Q2: 如果连紧急模式都进不去,我该怎么办?
A: 如果连紧急模式都无法进入,说明问题非常严重,可能根文件系统本身已损坏或关键内核模块丢失,最有效的工具是CentOS的安装光盘或USB启动盘,使用该介质启动你的计算机,并在启动菜单中选择“Troubleshooting” -> “Rescue a CentOS system”,救援模式会将你的系统挂载到 /mnt/sysimage
目录下,之后,你可以通过 chroot /mnt/sysimage
命令将环境切换到你硬盘上的系统,在这个环境中,你就可以自由地编辑 /etc/fstab
、回滚最近的软件包更新、检查和修复文件系统,或者重新安装内核,从而解决那些在系统自身环境下无法修复的问题。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复