我们的产品具有以下配置,iMx6处理器,2GB eMMC,512 MB RAM,几个以太网端口和USART端口。这将是一个24/7 365天的工作设备。
我们计划构建一个大约 7 到 10 MB 的最小 Linux 映像(内核 + RFS),将我们的主应用程序和自定义内核驱动程序保存在大小为 2 MB 的单独 squashfs 分区中(因为这是我们将在我们希望保持此分区独立和小的字段中经常更新的内容)。
另一个 ext4 读/写数据分区来存储我们的持久数据。除了数据分区,我们希望所有其他分区都是只读分区。
我的查询是
由于我们有一个较小的Linux操作系统映像(kernel+RFS),我们可以将整个RFS作为initramfs吗?
将 RFS 作为初始值是否有任何影响?(RAM 会消耗更多,我想最大大约 20 到 30 MB,考虑到我们拥有的 RAM 数量,我觉得这应该不是问题)
另一种解决方案是将RFS作为壁球,这样可以节省空间。以上与 initramfs 相比还有其他优势吗?
如果我们有 squashfs,那么我们还需要联合挂载,以便同时挂载只读应用程序分区和读/写数据分区。
如果我们使用 initramfs,那么我想我们不必实现联合挂载。这种理解是对的吗?
这是我们在 Linux 中的第一个项目,因此我想从使用过此类 RFS 的有经验的人那里获得反馈
,如果你想把RFS的某些部分放在RAM中,你应该非常认真地考虑你到底要放什么(例如/var/log/目录用于日志记录,每次写入任何日志文件时都会减少RAM)。
另外,据我所知,有许多嵌入式系统的解决方案具有像您这样的架构:例如,看看无状态系统,或者您可能想将 UnionFS 用于您的目的。
@all我们能够在不使用unionfs或unionmount的情况下实现解决方案。虽然我们在/run 下挂载 ext4 分区时使用了 squashfs 文件系统(只读 RFS),但它允许我们读写。Linux 检测到挂载的分区是 R/W 分区,即使 RFS 是只读文件系统,也允许我们进行适当的操作。我相信只有当您想更新只读 RFS 内容本身的部分时,您才必须使用 unionFS 或联合挂载。