当 CTyunOS 系统进入 紧急模式(Emergency Mode) 时,通常是由于关键系统组件(如文件系统、驱动、服务等)无法正常启动导致的。以下是详细的排查和解决方法:
1. 紧急模式常见原因
- 文件系统损坏(
/etc/fstab
配置错误或磁盘故障) - 关键服务启动失败(如
systemd
、sshd
、dbus
) - SELinux 策略冲突
- 硬件故障(如内存、磁盘错误)
- 内核崩溃或驱动问题
/
根分区空间不足- GRUB 引导损坏
2. 排查步骤
(1) 查看紧急模式日志
进入紧急模式后,系统通常会显示错误信息。按 Enter 进入 Shell,然后检查日志:
journalctl -xb # 查看完整启动日志
dmesg | grep -i error # 检查内核错误
systemctl --failed # 查看失败的服务
(2) 检查 /etc/fstab
文件
常见问题:
- 挂在点错误(如 UUID 错误)
- 文件系统损坏(
xfs_repair
/fsck
修复) - 依赖设备未就绪(如 NFS、iSCSI)
修复方法:
blkid # 查看正确的 UUID
vim /etc/fstab # 检查并修正错误
mount -a # 重新mount测试
(3) 检查文件系统
如果 /etc/fstab
没问题,可能是文件系统损坏:
# 检查 ext4 文件系统
fsck -y /dev/sdXN # 替换为实际分区(如 /dev/sda1)
# 检查 XFS 文件系统
xfs_repair /dev/sdXN
注意:
- 如果
/
根分区损坏,需用 光盘 启动修复。 - 如果
fsck
提示 “filesystem is mounted”,必须umount后修复(紧急模式可能已自动umount)。
(4) 检查磁盘空间
df -h # 查看磁盘使用情况
du -sh /var/log/* # 检查大日志文件
如果 /
根分区满,删除大文件:
rm -rf /var/log/*.log.* # 删除旧日志
journalctl --vacuum-size=100M # 清理 journal 日志
(5) 检查 SELinux
如果 SELinux 导致问题,可以临时禁用:
setenforce 0 # 临时关闭 SELinux
vim /etc/selinux/config # 永久设置 SELINUX=permissive
(6) 检查关键服务
systemctl list-units --state=failed # 查看失败服务
systemctl restart sshd dbus systemd # 尝试重启关键服务
(7) 检查内核和驱动
如果内核崩溃或驱动问题:
uname -r # 查看当前内核
yum list kernel # 查看可用内核
yum reinstall kernel # 重装内核
(8) 检查 GRUB 引导
如果 GRUB 损坏,可以修复:
grub2-mkconfig -o /boot/grub2/grub.cfg # 重新生成 GRUB 配置
grub2-install /dev/sdX # 修复引导(X 为磁盘,如 sda)
3. 常见错误及修复
错误 1:/dev/disk/by-uuid/XXXX does not exist
原因:/etc/fstab
中的 UUID 错误或磁盘未识别。
修复:
blkid # 查看正确 UUID
vim /etc/fstab # 修正 UUID
mount -a # 测试mount
错误 2:Dependency failed for /sysroot
原因:initramfs
损坏或根分区无法挂在。
修复:
dracut --force # 重建 initramfs
reboot
错误 3:Failed to start Login Service
原因:systemd-logind
服务崩溃。
修复:
systemctl restart systemd-logind
4. 终极解决方案
如果以上方法无效,可以尝试:
- 使用 光盘 启动,mount原系统分区并修复。
- 恢复备份(如果有)。
- 重装系统(最后手段)。
5. 总结
问题类型 | 排查命令 | 修复方法 |
---|---|---|
文件系统错误 | fsck /dev/sdXN |
修复文件系统或修正 /etc/fstab |
磁盘空间不足 | df -h |
清理大文件或扩容磁盘 |
服务启动失败 | systemctl --failed |
重启服务或重装软件包 |
SELinux 问题 | setenforce 0 |
临时禁用或调整策略 |
GRUB 引导损坏 | grub2-install /dev/sdX |
修复 GRUB |
如果仍然无法解决,请提供 journalctl -xb
完整日志 进一步分析!