常见问题二打印Failed-to-start-Switch-Root错误,导致系统进入紧急模式的解决方法
【常见问题(二)】打印Failed to start Switch Root错误,导致系统进入紧急模式的解决方法
目录
本期为服务器操作系统常见问题第二篇,介绍系统启动时进入紧急模式(emergency模式),打印Failed to start Switch Root报错的应对策略。
1 问题描述
系统启动时进入紧急模式(emergency模式),打印Failed to start Switch Root报错,具体如下:
2 过程分析
(1)根据提示,执行vi /run/initramfs/rdsosreport.txt命令查看rdsosreport.txt日志。
从日志中看,系统进入emergency模式的原因是:root文件系统没有挂载或者系统缺少os-release文件,造成initrd-switch-root.service服务启动失败。
查看kernel启动参数,系统启动参数中没有包含“root=”,造成系统启动过程中不会挂载root文件系统。
(2)重启系统,在grub界面按e键编辑当前系统启动选项,linux行中的root启动参数缺失。
(3)按Esc回到grub界面,按e键进入修复模式启动选项的编辑模式,root启动参数存在,按Ctrl+x键通过当前修复模式进入系统。
(4)进入系统后,检查/boot/grub2/grubenv文件,发现grubenv被清空。
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=
4.4 步骤四
执行reboot重启系统。