问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

【系统救援】CentOS7启动失败:进入紧急救援模式(emergency模式)

创作时间:
作者:
@小白创作中心

【系统救援】CentOS7启动失败:进入紧急救援模式(emergency模式)

引用
CSDN
1.
https://m.blog.csdn.net/avatar_2009/article/details/142765813

问题由来

如题,按照公司规定,节前需关机断电。节后启动虚拟机,未正常启动成功,进入了紧急救援模式(emergency模式)。极可能由节前强制断电关机导致,但并不能确定一定是该原因;后面,随着定位深入,发现是是因为/usr/lib/下所有的文件均丢失导致的。

报错信息:

blk_update_request:I/O error, dev fd0, sector 0
you might want to save “/run/initramfs/rdsosreport.txt“ to a USB stick or /boot
after mounting them and attach it to a bug report
Starting Switch Root...
Failed to switch root: Specified switch root path '/sysroot' does not seem to be an OS tree.os-release file is missing.
initrd-switch-root.service: Main process exited, code=exited, status=1/FAILURE
initrd-switch-root.service: Failed with result 'exit-code'.
Failed to start Switch Root.

问题定位

系统启动后进入紧急救援模式,在console窗口打印信息大致如上(未截图)。看到这些信息后,被
I/O error
给误导了【误导一】,认为是磁盘文件或者分区出现了异常。沿着上面的思路,我做了如下操作:

  1. 虚拟机做快照,避免修复失败导致无法挽回;
  2. 挂载ISO文件,修改引导DVD启动,进入到修复模式;
  3. 强制修复了根分区:xfs_repair -L /dev/mapper/centos-root
  4. 重启:问题未解决。

/dev/fd0属于软盘设备,通过查看虚机配置,并没有该设备【误导二】。接着做了如下操作:

  1. 删除了/dev/fd0设备;
  2. 备份并重新生成grub.cfg:grub-mkconfig -o /boot/grub/grub.cfg

在重新生成grub.cfg时,报错了:未找到/etc/os-release文件。这和进入紧急模式打印的日志相符:

Failed to switch root: Specified switch root path '/sysroot' does not seem to be an OS tree. os-release file is missing.

我擦~~难道一个os-release文件还能导致系统启动失败?还真能!

此时,如果单单将/etc/os-release补齐,系统则可以正常引导启动,不再进入emergency模式,但是会卡死!

进一步定位发现/mnt/sysimage/usr/lib/下是空的。因为/etc/os-release只是/usr/lib/os-release文件的软链接。(很难说该目录下的文件丢失是因为断电强制关机导致的,这也太齐整了。但,排除人为原因后,断电丢失的可能性很大)。

问题解决

  1. cp -a /usr/lib/* /mnt/sysimage/usr/lib/
  2. 退出救援模式,重启系统,正常启动了。

但是,此时ssh启动失败,说是没找到/etc/sysconfig/sshd环境变量文件;补齐该文件之后,服务仍然无法正常启动,所以果断重装了openssh-server

  1. 通过yum reinstall openss-server重装;
  2. 上述无法重装,则需卸载后重新install(离线或在线)。

其实,到这里基本上已经将系统救回来了。但是,身子仍然比较虚。可以通过yum upgrade将系统以及软件包都升级一下。这样以来,系统则基本脱胎换骨,焕发新机了。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号