當 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 完整日志 進一步分析!