本期为服务器操作系统常见问题第二篇,介绍系统启动时进入紧急模式(emergency模式),打印Failed to start Switch Root报错的应对策略。
问题描述
系统启动时进入紧急模式(emergency模式),打印Failed to start Switch Root报错,具体如下:
过程分析
(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被清空。
问题根因
/boot/grub2/grubenv文件被清空或者损坏。
解决方案
步骤一:通过修复模式进入系统;
步骤二:根据如下方法修复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
步骤三:检查grubenv文件是否生成kernelopts=<paramater>参数。
步骤四:执行reboot重启系统。
编辑于 2024-07-25 16:28・IP 属地山东