为x86_64架构的OpenWRT添加启动时自动磁盘检测fsck

问题

最近遇到了几次OpenWRT产生的启动问题,即在多次掉电重启后,OpenWRT的磁盘出现了数据错误的情况,导致无法正常运行。经过排查,发现x86_64版的OpenWRT提供的内核是不带initrd的,同时提供的磁盘镜像也是一样的。那如何在没有initrd的情况下配置磁盘启动时自动fsck呢?

解决方案

经过搜索,发现了how-to-force-fsck-at-boot 这篇文章。里面提到的方法,是通过重新挂载到只读模式,再进行fsck,然后再挂载回读写模式。

于是我按照上面的方法,做了些调整,没有使用sda之类的设备路径名,而是使用了/boot/grub.conf里的PARTUUID。

修改/lib/preinit/80_mount_root,调整后的脚本如下

验证

重启后,通过串口控制台看到成功输出了fsck的输出。问题解决。

发表评论

为防机器,验证码请直接输入4个数字1

*