最近硬盘突然挂了,但是mango R3的板子还在用,不得不更新到最新的aodzip大佬的镜像。编译成功后发现问题,烧写IMG成功系统后能加载uboot也能进kernel,但是一旦reboot就报ETX4的文件系统checksum error。就再也无法开机了。
麻烦路过的大佬帮忙看看,这个问题吧。非常感谢。
源代码地址:
git clone https://github.com/aodzip/buildroot-tiny200.git
完整的dmsg日志:
dmesg.zip
离线
更新一下最近一周的调试情况:
1.回退了aodzip大佬的patch,回退到init记录,并且make clean后重新编译,还是会出现上述的问题。
2.对出故障的TF进行了fsck的修复。fsck -t ext4 /dev/sda3,但是很可惜的是,会导致文件丢失。也就无法boot系统了。
3.修改了Linux kernel的mount选项,强制rootfs挂载为read only模式,发现文件系统可以识别,也可以重启了。但是root目录RO了非常难调试,所以尝试在开机后remount了root目录,发现一旦remount后ext4的文件系统就报错,这时候reboot,问题又复现了。
通过以上调试发现,当前的问题是ext4的rootfs不能写入任何数据,一旦写入就会导致super block数据异常。
下一步分析方案:
1.校验TF卡镜像的rootfs起始地址,检查rootfs的挂载地址是否正确。
2.ext4文件系统调试,检查ext4_mount()函数在挂载过程中出现invalid superblock checksum的直接原因。但是aodzip大佬的开源镜像一直在用,按理说不应该到这一步的,应该是个小问题。所以该方向也被放到最后进行。
离线
先rootfs挂载为read only,备份rootfs,格式化rootfs所在分区,再恢复。
感谢回复,想请问下,你这样备份后又恢复rootfs的原因是什么啊?还请能否仔细描述下原因,非常感谢。
离线