转载一篇关于虚拟机断电导致的generating /run/initramfs/rdsosreport.txt问题优秀解决方案

物理断电,有时候会出现
generating “/run/initramfs/rdsosreport.txt”
entering emergencymode.
exit the shell to continue
type “journalctl” to view system logs.
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。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原作者连接
其中处理步骤中的2
2、xfs_repair /dev/mapper/centos-root 或者xfs_repair /dev/mapper/centos-root -L
两个命令不一定哪个能成功,第一个不行就试下第二个。
最后reboot就行了

<think>我们正在处理一个关于Linux系统启动时进入紧急模式的问题。根据引用[1],系统在生成"/run/initramfs/rdsosreport.txt"文件时遇到了I/O错误(设备fd0,扇区0),然后进入了紧急模式。用户需要帮助分析该问题并了解如何处理。 首先,我们需要理解这个错误信息: - `blk_update_request: I/O error, dev fd0, sector 0`:这表示在访问设备fd0(即软盘驱动器)的0号扇区时发生了I/O错误。系统可能试图从软盘驱动器读取数据,但由于没有软盘或软盘驱动器故障而失败。 在Linux启动过程中,如果系统配置为尝试从软盘驱动器启动,而软盘驱动器中没有介质或驱动器出现故障,可能会导致此类错误。特别是在初始化ramdisk(initramfs)阶段,系统可能会尝试加载额外的驱动或配置,如果配置不当,就会引发错误。 接下来,我们考虑如何解决这个问题: 1. **检查系统硬件**:确认软盘驱动器是否连接正常,或者是否有不必要的软盘驱动器在系统中。如果不需要,可以在BIOS/UEFI设置中禁用软盘驱动器。 2. **检查启动参数**:在启动过程中,系统可能配置了从软盘驱动器加载某些模块或配置。我们可以通过修改启动参数来避免尝试访问软盘驱动器。 引用[3]提供了一个修改启动参数的例子(在安装引导界面按e键进入参数修改界面)。我们可以尝试在启动参数中移除对软盘驱动器的依赖或忽略错误。 例如,在启动参数中添加: ``` nousb nofloppy ``` 或者忽略特定的错误(例如,`libata.nofloppy=1`)以禁止软盘驱动器。 3. **进入紧急模式后的操作**:在紧急模式下,系统会提供一个shell环境。我们可以执行以下操作: - 检查日志:使用`journalctl`查看系统日志,定位错误。 - 检查文件系统:使用`fsck`检查并修复文件系统。 - 检查软盘驱动器:使用`dmesg | grep floppy`查看相关错误信息。 4. **保存rdsosreport.txt文件**:在紧急模式下,系统已经生成了`/run/initramfs/rdsosreport.txt`文件。这个文件包含了启动过程中的重要信息,有助于诊断问题。但是,由于`/run`目录是内存中的临时文件系统(tmpfs),重启后文件会丢失。因此,我们需要在重启前保存该文件。 保存方法: - 如果系统有其他可用的存储设备(如USB驱动器),可以挂载并复制文件。 - 或者,将文件复制到持久性存储设备(如硬盘)上。但注意,在紧急模式下,根文件系统可能以只读方式挂载,需要重新挂载为可写。 具体步骤(在紧急模式的shell中): ```bash # 创建一个目录用于挂载(如果不存在) mkdir /mnt/sda1 # 挂载硬盘分区(假设sda1是硬盘分区) mount /dev/sda1 /mnt/sda1 # 复制报告文件 cp /run/initramfs/rdsosreport.txt /mnt/sda1/ # 卸载 umount /mnt/sda1 ``` 5. **修复启动配置**:如果问题是由于启动配置引起的,我们需要修改启动配置文件(如GRUB配置文件)。在正常启动后,编辑`/etc/default/grub`文件,添加或修改参数(如`GRUB_CMDLINE_LINUX`行添加`libata.nofloppy=1`),然后运行`grub2-mkconfig`更新GRUB配置。 综上所述,解决步骤可以归纳为: 1. 在紧急模式下,保存`rdsosreport.txt`文件到持久存储。 2. 修改启动参数,尝试在启动时跳过软盘驱动器(例如添加`libata.noflppy=1`或`nofloppy`)。 3. 重启系统,观察是否解决问题。 4. 如果问题仍然存在,检查硬件(软盘驱动器)或进一步分析日志。 §§相关问题§§ 1. 如何修改Linux系统的启动参数? 2. 在Linux紧急模式下,如何挂载硬盘分区并保存文件? 3. 如何禁用Linux系统中的软盘驱动器? 4. 如何分析Linux启动日志以诊断启动问题?</think>### Linux 紧急模式生成 rdsosreport.txt 问题分析 #### 问题原因分析 根据错误信息 `blk_update_request: I/O error, dev fd0, sector 0`: 1. **设备识别**:`fd0` 表示系统尝试访问 **软盘驱动器**(Floppy Disk) 2. **核心错误**:系统在初始化阶段(initramfs)尝试读取软驱时发生 I/O 错误 3. **紧急模式触发**:当内核无法挂载根文件系统或关键设备时,会进入紧急模式并生成诊断报告 `rdsosreport.txt`[^1] #### 解决步骤 **1. 紧急模式基础操作** ```bash # 检查挂载点 lsblk mount | grep -i root # 查看完整错误日志(重点检查设备初始化部分) dmesg | grep -i error journalctl -xb ``` **2. 禁用软盘驱动(临时方案)** 在 GRUB 启动菜单按 `e` 编辑内核参数,在 `linuxefi` 行末尾添加: ``` libata.nofloppy=1 nousb.storage ``` 按 `Ctrl+X` 启动测试。若成功,需永久配置 GRUB[^3] **3. 永久修复 GRUB 配置** ```bash # 编辑 GRUB 配置 sudo nano /etc/default/grub # 在 GRUB_CMDLINE_LINUX 行添加 GRUB_CMDLINE_LINUX="... libata.nofloppy=1 nousb.storage" # 更新 GRUB sudo grub2-mkconfig -o /boot/grub2/grub.cfg ``` **4. 硬件检测与处理** ```bash # 检查软驱状态 sudo lshw -C disk | grep -A5 fd0 # 物理处理建议: # 若无需软驱,断开主板上的软驱数据线 # 在 BIOS/UEFI 中禁用 Floppy Controller ``` **5. 保存诊断报告** ```bash # 挂载外部存储(如 USB) mkdir /mnt/usb mount /dev/sdb1 /mnt/usb # 替换为实际设备 # 复制诊断报告 cp /run/initramfs/rdsosreport.txt /mnt/usb/ ``` #### 预防措施 1. 在服务器/虚拟机中删除无用硬件模拟设备 2. 定期检查系统日志:`sudo grep -i 'error\|fail' /var/log/messages` 3. 更新 initramfs:`sudo dracut -f` > 关键提示:`/run/initramfs/` 是内存虚拟文件系统,重启后诊断报告会丢失,务必在紧急模式中及时保存[^1]
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值