我正在开发一个嵌入式 Linux,使用 u-boot 作为引导加载程序和 systemd init 系统。这些工具仅限于标准 busybox。
在分析一些问题时,我发现根文件系统是只读的,这导致了问题。原因是某些服务和程序依赖于可写的根文件系统,导致故障。
经过一段时间的研究,我发现根文件系统只有在断电时才是只读的。(当遇到某些错误时,主单元会触发电源回收。)我怀疑当根文件系统尝试写入某些关键文件或更新某些服务/进程时,在电源故障时会在文件系统上设置错误标志。下次启动时,fsck 会读取该标志并将根目录安装/重新安装为只读,或者 fsck 强制进入某种恢复模式(我不知道是否存在任何恢复模式)。
我的假设正确吗?如果是这样,那么错误时在 FS 上设置的 fs 标志是什么?如何防止 root 作为 RO 启动?
笔记:
根文件系统使用“errors=continue”挂载。因此,如果 fsck 读取重新安装选项的超级块,它应该忽略该错误并重新安装为 RW。
我尝试重现该情况,在运行 dd 命令时关闭电源,但从未能够重现。
附加问题:哪个 udev/systemd 魔法挂载 root fs?