我有一个使用 initramfs 生成的 buildroot 生成的嵌入式 Linux 系统(x-86 geode 处理器),但使用 中指定的默认安装选项/var
安装/etc
到紧凑型闪存设备上fstab
。我的文件系统是ext3。
我在这个系统上运行一个控制器应用程序,它会不时地生成一些自定义活动日志记录到在/var
分区上创建的文件。最近,我的一台嵌入式设备报告无法打开日志文件,因为 /var 分区是只读分区。我使用 进行了验证mount
。我的问题是这到底是怎么发生的?我的控制器应用程序当然不会执行此操作,但是在 Linux 系统上运行的其他进程是否可以请求将 /var 重新挂载为只读?
我的设备确实在嘈杂的工业环境中运行,因此这是否有可能因电磁干扰而导致系统损坏?
在数百小时的测试之前从未发生过这种情况,但这是一个严重错误,我需要找到原因,因此非常欢迎任何关于可能导致此问题或如何确定导致此问题的原因的建议。
编辑鉴于这个问题收到的批评,我添加了用于挂载 /var 分区的 fstab 的相关行:
/dev/sda3 /var ext3 defaults 0 3
inittab
以及负责安装的函数内的行
null::sysinit:/bin/mount -a
/proc/mounts
这也是相关的输出行/var
/dev/sda3 /var ext3 rw,relatime,errors=continue,user_xattr,scl,barrier=1,data=writeback 0 0
我可能还应该提到该系统使用busybox
init 系统。
答案1
需要考虑两件事:
原因一定在某处的日志文件中。一个棘手的可能是“dmesg”。查看嵌入式系统是否有“dmesg”命令。如果没有,请在 /var 或 /tmp 中查找同名日志文件。
另外(在黑暗中刺伤)但是SD卡还有剩余可写空间吗?这比用“df”显示的内容要复杂一些。看:https://raspberrypi.stackexchange.com/questions/169/how-can-i-extend-the-life-of-my-sd-card
从上面:“如果您全天候 24/7 全速写入 [SD 卡],则 16GB 将持续大约 30 天。”