目录

常见问题二打印Failed-to-start-Switch-Root错误,导致系统进入紧急模式的解决方法

【常见问题(二)】打印Failed to start Switch Root错误,导致系统进入紧急模式的解决方法

目录


本期为服务器操作系统常见问题第二篇,介绍系统启动时进入紧急模式(emergency模式),打印Failed to start Switch Root报错的应对策略。

1 问题描述

系统启动时进入紧急模式(emergency模式),打印Failed to start Switch Root报错,具体如下:

https://i-blog.csdnimg.cn/blog_migrate/b153221ad582784695bee9618442e070.png

2 过程分析

(1)根据提示,执行vi /run/initramfs/rdsosreport.txt命令查看rdsosreport.txt日志。

从日志中看,系统进入emergency模式的原因是:root文件系统没有挂载或者系统缺少os-release文件,造成initrd-switch-root.service服务启动失败。

https://i-blog.csdnimg.cn/blog_migrate/9e82862a4d257ffae7f55745f17b1e0e.png

查看kernel启动参数,系统启动参数中没有包含“root=”,造成系统启动过程中不会挂载root文件系统。

https://i-blog.csdnimg.cn/blog_migrate/045290792b1a28794c4a3506ff467500.png

(2)重启系统,在grub界面按e键编辑当前系统启动选项,linux行中的root启动参数缺失。

https://i-blog.csdnimg.cn/blog_migrate/4b95f801600bee22219605222e436d5b.png

(3)按Esc回到grub界面,按e键进入修复模式启动选项的编辑模式,root启动参数存在,按Ctrl+x键通过当前修复模式进入系统。

https://i-blog.csdnimg.cn/blog_migrate/9f78659ce29a7c2c14507eb7bbfda3cd.png

(4)进入系统后,检查/boot/grub2/grubenv文件,发现grubenv被清空。

https://i-blog.csdnimg.cn/blog_migrate/73c76345a03983afa88e34dc440b31e3.png

3 问题根因

/boot/grub2/grubenv文件被清空或者损坏。

4 解决方案

4.1 步骤一

通过修复模式进入系统;

4.2 步骤二

根据如下方法修复grubenv文件:

Legacy模式:

(1)创建一个空的grubenv文件。

  # grub2-editenv /boot/grub2/grubenv create

(2)重新生成grub.cfg文件,在生成grub.cfg的同时会自动写入grubenv文件。

 # grub2-mkconfig -o /boot/grub2/grub.cfg

UEFI模式:

(1)创建一个空的grubenv。

  # grub2-editenv /boot/efi/EFI/实际系统路径/grubenv create

(2)创建 /boot/grub2/grubenv和 /boot/efi/EFI/实际系统路径/grubenv的软链接。

# ln -sf /boot/efi/EFI/实际系统路径/grubenv /boot/grub2/grubenv

(3)重新生成grub.cfg文件,在生成grub.cfg的同时会自动写入grubenv文件。

  # grub2-mkconfig -o /boot/efi/EFI/实际系统路径/grub.cfg

4.3 步骤三

检查grubenv文件是否生成kernelopts=参数。

https://i-blog.csdnimg.cn/blog_migrate/09432d5aeb39008e5745d73129bb5358.png

4.4 步骤四

执行reboot重启系统。

https://i-blog.csdnimg.cn/blog_migrate/03ee825f2cfdb8f65226c03e80044ed6.png