我们的产品配置如下: iMx6处理器、2GB eMMC、512 MB内存、两个以太网端口和USART端口。这将是一个24/7,365天的工作装置。
我们计划在7到10 MB左右构建一个最小的Linux映像(Kernel + RFS),将我们的主应用程序和自定义内核驱动程序保存在大小为2MB的单独的squashfs分区中(因为这是我们希望将此分区保持独立和小的字段中经常更新的内容)。
另一个ext4读写数据分区来存储我们的持久数据。除了数据分区,我们希望所有其他的都是只读分区。
我的疑问是
既然我们有一个更小的Linux映像(kernel+RFS),那么整个RFS可以作为initramfs吗?
将RFS作为initramfs是否有任何含义?(内存消耗会更多,我想大概在20到30 MB左右,考虑到内存的数量,我觉得这不应该是个问题)
另一种解决方案是将RFS作为squashfs,这样可以节省空间。与initramfs相比,上面还有什么其他优势吗?
如果我们有squashfs,那么我们还需要有联合挂载,以便同时挂载只读应用程序分区和读写数据分区。
如果我们使用initramfs,那么我想我们不必实现联合挂载。这种理解对吗?
这是我们在linux中的第一个项目,因此我想从使用过这种RFS的有经验的人那里得到反馈。
发布于 2015-02-18 11:55:43
@我们能够在不使用unionfs或union挂载的情况下实现该解决方案。尽管我们在ext4下挂载/run分区时使用了squashfs文件系统(只读RFS),但它允许我们读写。Linux检测到挂载的分区是一个R/W分区,允许我们执行适当的操作,即使RFS是一个只读文件系统。我相信,只有当您想要更新只读RFS内容本身的部分时,您才需要使用unionFS或union挂载。
发布于 2014-11-22 06:50:53
我认为,如果您想将RFS的某些部分放在RAM中,您应该非常仔细地考虑您将放置在其中的内容(例如/var/log/目录用于日志记录,这将减少每次写入任何日志文件时的RAM )。
而且,据我所知,对于具有类似于您的体系结构的嵌入式系统,有许多解决方案:例如,看看无状态系统,或者您可能希望将UnionFS用于您的目的。
https://stackoverflow.com/questions/27062063
复制相似问题