yocto 上的只读文件系统

Read-only file-system on yocto

我对 yocto 项目的 "read-only-rootfs" 功能有一些疑问,不幸的是文档没有那么有用。

因此,将其添加到 EXTRA_IMAGE_FEATURES 会使 yocto fs 只读,但在:

5.15.3. Areas With Write Access

With the read-only-rootfs feature enabled, any attempt by the target to
write to the root filesystem at runtime fails. Consequently, you must make
sure that you configure processes and applications that attempt these types
of writes do so to directories with write access (e.g. /tmp or /var/run).

他们说可以将某些区域设置为 rw,但他们没有提供有关此的额外信息。

我想要实现的是所有操作、进程和东西都加载到RAM中,SD卡应该保持原样,就好像它是在烧录之后一样,而不是在上面写一个位。但是用户应该可以随时将sd卡上的特定文件夹(存储区)rw写入并写入一些东西,然后再次将系统设为只读。

有人偶然这样做了吗?你会帮到我很多。

默认情况下,Yocto 应将所有需要的 RW 安装创建为 tmpfs。 它们位于 RAM 中,因此易失(在 shutdown/reboot 处删除)。

为了持久存储数据,我实施了以下方法:

  • RootFS 位于持久内存的 RO 安装分区上。此分区在运行时保持 "untouched"。
  • 在运行时需要 changed/written 的数据(如配置、日志等)存储在持久内存的第二个分区中。此分区已挂载 RW。
  • 默认情况下在 RootFS 上但需要更改的配置被移动到第二个分区并替换为这些文件的符号链接。
  • 第二个分区是使用自定义 fstab 文件自动挂载的,该文件是通过 base-files_*.bbappend.
  • 添加的

可能还有其他方法可以实现相同的目的,但这个解决方案多年来一直没有遇到任何困难;-)

meta-readonly-rootfs-overlay,其中“(...) 提供了必要的脚本和配置,以在只读根文件系统之上设置可写根文件系统覆盖层。”