Linux主机重启后报错:[FAILED] Failed to start Switch Root.

2024-04-29 19:20

本文主要是介绍Linux主机重启后报错:[FAILED] Failed to start Switch Root.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、问题描述

某次云主机因计费问题,导致批量重启,重启后发现某台云主机竟进入紧急救援模式(emergency模式),如下所示:
在这里插入图片描述

二、原因及处理

1)原因:加载根分区失败,导致无法读取引导区所在磁盘上的正确位置,报错root文件系统没有挂载或者系统缺少os-release文件,造成initrd-switch-root.service服务启动失败。比如:kernel启动参数,系统启动参数中没有包含“root=”,造成系统启动过程中无法挂载root文件系统;比如虽然有参数,但参数不正确或参数指向不正确,指向非根分区,依然无法读取到启动grub文件;/boot/grub2/grubenv环境变量文件被损坏;磁盘/分区的UUID冲突,导致启动时加载了非root分区;

#查看日志
vi /run/initramfs/rdsosreport.txt  #查看rdsosreport.txt日志,或
journalctl -xe
#查看GRUB引导区环境变量
grub2-editenv list  #如下saved_entry=6752e052c66d4923aeeb3f42f123175e-4.18.0-348.7.1.el8_5.x86_64  #当前设置的默认启动项为ID为"6752e052c66d4923aeeb3f42f123175e-4.18.0-348.7.1.el8_5.x86_64"的内核镜像
kernelopts=root=/dev/mapper/cl-root ro crashkernel=auto console=ttyS1,115200n8 printk.time=1 pci=hpiosize=0 ignore_loglevel resume=/dev/mapper/cl-swap iommu=pt rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet memmap=32G$0x2050000000,1M$0x100000 #内核启动参数包括根文件系统、内核日志打印级别、PCI总线相关设置、睡眠唤醒等配置。
boot_success=0   	  #最近一次引导成功的标志位,0表示引导失败。
boot_indeterminate=0  #未知引导状态的标志位,0表示已确定引导状态。
#查看启动参数:menuentry就是启动的入口
cat /boot/grub2/grub.cfg| grep menuentry
#判断是BIOS还是UEFI启动
ls /sys/firmware/efi  #如果该命令返回了目录列表,则说明系统是使用UEFI引导的。如果该命令返回“No such file or directory”或类似的错误信息,则说明系统是使用BIOS引导的
#GRUB(GNU GRand Unified Bootloader)相关文件
/boot/grub2/grub.cfg  #GRUB的主配置文件,用于定义引导菜单的内容和样式。
/boot/grub2/grub2-efi.cfg#  GRUB的EFI版配置文件,用于定义UEFI系统的引导菜单。
/boot/grub2/grubenv  #GRUB的环境变量文件,用于存储一些系统配置信息,例如默认引导项、超时时间等。GRUB 会将选择的启动项的编号存储在 next_entry 变量中。然后,当计算机重新启动时,GRUB 将自动加载该变量,并使用 set default="${next_entry}" 命令将默认启动项设置为该变量所存储的启动项编号;不建议直接修改 /boot/grub2/grubenv 文件中的内容,对该文件任意破坏都将导致OS的无法启动。#如果grubenv文件损坏,可创建一个
grub2-editenv /boot/grub2/grubenv create  #创建一个空的grubenv文件
grub2-editenv /boot/efi/EFI/实际系统路径/grubenv create  #UEFI引导下
ln -sf /boot/efi/EFI/实际系统路径/grubenv /boot/grub2/grubenv
#重新生产引导配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig -o /boot/efi/EFI/实际系统路径/grub.cfg  #UEFI引导下

2)现场属于UUID冲突导致的分区启动加载错误导致的;可在grub启动菜单ctrl+X进行多次重启,有概率切换到正确的磁盘上;否则,云控制台可临时卸载数据盘;处理如下

#1)重新进入系统后,重新挂载数据盘,检查数据盘UUID
#2)对数据盘冲突的UUID重新生成
uuidgen | xargs xfs_admin /dev/sdc1 -U  #xfs文件系统
uuidgen | xargs tune2fs /dev/sda2 -U  #ext的
#3)完成后重启即可。

这篇关于Linux主机重启后报错:[FAILED] Failed to start Switch Root.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/946946

相关文章

spring boot 启动FreeMarkerAutoConfiguration报错

问题呈现 搭建好springboot项目后启动,启动过程中出现如下报错: Cannot find template location(s): [classpath:/templates/] (please add some templates, check your FreeMarker configuration, or set spring.freemarker.checkTemplat

pl- 配置远程打印机,用linux命令行打印

问题来源: 实验室打印机认证过我台式机的IP,但是里面只有linux命令行界面,只当作服务器用…又不想每次用笔记本想打印都折腾换网线…so… 问题描述:如何用命令行连接网络打印机,并用命令行控制打印 工具:pladmin 配置, pl 打印 参考资料: 在 Oracle® Solaris 11.2 中配置和管理打印 极客学院happypeter1983 打印(可以看参数) 材料: 打印

linux ndk编译搭建测试

一、ndk下载 NDK 下载  |  Android NDK  |  Android Developers 二、ndk环境变量配置 ndk解压: unzip android-ndk-r26d-linux.zip  环境变量配置:  export NDK_HOME=/rd/own/test/android-ndk-r26d/  export PATH=$PATH:$NDK_HOME

dom4j处理xml在linux环境下中文乱码

最近在搞一个webservice 的soap接口数据同步,接口提供方就是个鸟人,两个接口来来回回写了2个月才调通,我也真是服了 ———**——– 好了吐槽到此结束,下面说说乱码的问题 dom4j 解析xml 就是一个把字符串、文件、输入流转换成文本(Document )再处理的过程;下面附上代码 InputStream in = new ByteArrayInputStream(fyxx.

【LinuxC++】Linux环境下C++编程

在阅读的过程中有任何问题,欢迎一起交流 邮箱:1494713801@qq.com   QQ:1494713801   在linux下,开发工具被切割成一个个独立的小工具。各自处理不同的问题。例如: 编辑器(emacs, vim)用来进行编辑程序的 调试器(gdb) 用来调试程序 编译器(GCC) 用来编译和链接程序的 性能分析工具(gcov, gprof) 用来优化程序的 文档生成器

Linux系统下qtcreator每次打开文件都要重新编码问题

在Linux系统下qtcreator每次打开windows系统下的.c文件都会提示编码问题, 提示错误:“Could not decode “xxx” with “UTF-8”-encoding. Editing not possible "中文显示乱码,不能编译,如下图: 解决: 1、点击上面错误提示条右边“Select Encodeeing”按钮 选GBK / windows-936…,按编

编译报错go: unsupported GOOS/GOARCH pair linux /amd64

目录 背景 解决 背景 在windows下交叉编译go程序,目标平台是linux、amd64。 执行指令: GOOS=linux GOARCH=amd64 go build -v或set GOOS=linux & set GOARCH=amd64 & go build -v 报错 go: unsupported GOOS/GOARCH pair linux /amd64

Linux搭建Tomcat+MySQL环境

以阿里云上最新安装好的Centos8为例,SSH工具是FinalShell 更新yum到阿里云的源 我这边安装好之后yum源已经是国内的了,所以实际上这一步可以省略,如果出现安装软件时下载速度很慢,可以通过这一步修改yum源 cd /etc/yum.repos.d 如下图所示 对着CentOS-Base.repo文件右键点打开,之后将https://mirrors.aliyun.com/re

python 脚本压缩文件linux 正常,windows 文件夹/文件名称 被加上了上级文件夹名

场景: php 在调用python 脚本,进行文件压缩(因为php的压缩大文件总是超时),linux/mac 环境文件/文件夹名压缩前后一致,windows 压缩后 文件/文件夹名被改变为 上级 文件夹+原名 原因: windows 和 mac、linux 文件路径的分隔符 不一样 解决: 使用php 自带的分隔符常量DIRECTORY_SEPARATOR,该常量会根据 不同系统,变化

Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓 前言文件结构与基本概念配置网络接口的常用参数高级网络配置技巧实用工具与调试技巧实战案例与最佳实践 前言 在我们的日常生活中,网络已经成为了不可或缺的一部分,而正确配置网络对于系统运行和通信至关重要。而 Linux