Genericx86-64机器启动Yocto自定义镜像报错求解决方案
问题分析与修复方案
错误对应问题根源
blk_update_request: critical medium error, dev sr0:虚拟/物理光驱(sr0)读取介质失败,大概率是镜像文件损坏或挂载异常blk_update_request: I/O error on dev loop0:挂载镜像的loop设备出现读取错误,说明镜像内的文件系统存在损坏INIT: Id "S0" respawning too fast:S0对应的启动脚本反复崩溃,init进程不断尝试重启,根源是文件系统异常导致脚本依赖缺失或执行失败EXT4-fs warning ... error -5 reading directory block:镜像内的EXT4文件系统目录块损坏,索引节点读取失败cant create directory ... read-only file system:文件系统检测到损坏后,自动切换为只读模式以保护数据
修复步骤
1. 修复镜像内的EXT4文件系统
# 1. 将镜像文件关联到loop设备 losetup -fP /path/to/your/genericx86-64.img # 2. 查看关联的loop设备(比如/dev/loop0),执行文件系统检查 e2fsck -f /dev/loop0 # 按提示输入y确认修复,直到检查完成 # 3. 解除loop设备关联 losetup -d /dev/loop0
2. 验证镜像完整性
- 对比镜像文件的哈希值(MD5/SHA256)与制作时的源文件哈希,确认镜像未在生成/传输过程中损坏
- 虚拟机环境下,删除现有虚拟光驱,重新加载镜像文件;物理机则更换U盘/光驱介质重试
3. 排查INIT重启问题
文件系统修复完成后仍出现该错误时,需检查启动脚本:
- 挂载修复后的镜像,查看
/etc/inittab文件 - 找到
Id "S0"对应的启动项(格式类似S0:respawn:/path/to/startup-script) - 手动执行该脚本,排查是否存在路径错误、依赖缺失或权限问题
4. 临时恢复可读写挂载(仅应急)
若需临时切换为可读写模式(确保文件系统已修复后执行):
mount -o remount,rw /
内容的提问来源于stack exchange,提问作者ThomasEdition
相关产品推荐
相关产品推荐

