yocto 上的只读文件系统

Mih*_*Pop 5 linux filesystems arm cortex-a yocto

我对 yocto 项目中的“只读 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).
Run Code Online (Sandbox Code Playgroud)

他们说某些区域可以成为 rw,但他们没有提供有关这方面的额外信息。

我想要实现的是所有要加载到 RAM 中的操作、进程和内容,而 SD 卡应该保持不变,就像在烧毁之后一样,而不是在上面写一个位。但是用户应该有可能在需要时打开 sd 卡 rw 上的特定文件夹(内存区域)并写入一些内容,然后再次将系统转为只读。

有人有机会这样做吗?你会帮我很多。

g0h*_*l1n 4

默认情况下,Yocto 应该将所有需要的 RW 挂载创建为 tmpfs。它们位于 RAM 中,因此是易失性的(在关机/重新启动时删除)。

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

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

可能还有其他方法可以实现相同的目的,但该解决方案多年来一直毫无困难地工作;-)