`overlayroot`是一种使用OverlayFS实现的功能,可将根文件系统挂载为只读,并通过一个临时的写层实现对文件系统的修改。这种方法非常适合嵌入式设备或需要保持系统文件完整性和安全性的场景。下文以RK3568平台为例,介绍制作overlayroot的详细步骤。 1. 制作精简文件系统ramdisk1.1环境准备 1.目标系统:确保系统支持OverlayFS(内核版本≥3.18)。 2.工具和依赖:
1.2OverlayFS的基本原理 OverlayFS将文件系统分为以下两层:
1.3制作步骤 1.3.1创建OverlayFS配置结构 首先创建一个工作目录来组织文件系统结构。
将busybox和相关依赖文件复制到适当的目录 1.3.2配置挂载脚本 在ramdisk的脚本中配置相关的挂载和优化 2.ramdisk.img镜像打包和解包制作2.1打包脚本 创建脚本pack_ramdisk.sh,将RAMDisk内容打包为ramdisk.img: 2.2解包脚本 创建脚本unpack_ramdisk.sh,将ramdisk.img解包到工作目录: 通过上面打包解包脚本可以直接修改已经制作好的ramdisk.img镜像 3.打包到boot.img3.1配置项目文件 在项目defconfig文件中,添加以下内容: 在rk356x_bsp/device/rockchip/common/scripts/mk-kernel.sh文件中添加打包逻辑: 4.Kernel配置与设备树修改4.1设备树配置修改 修改设备树文件chosen节点,添加overlayroot参数: 4.2修改内核配置 确保内核启用了OverlayFS: 5.测试效果与优化将更新后的boot.img刷写到开发板,重启后执行: 输出类似以下内容: 添加完上面内容后,更新boot.img到开发板,执行df-h命令可以看到rootfs分区挂载为/root-ro变为只读分区,userdata分区挂载为overlayroot保存文件系统修改差异部分。若要重置系统状态,只需清空userdata内容即可。 6.总结通过以上步骤,您可以成功为RK3568平台配置overlayroot。这种设置使得系统文件更加安全,同时提供灵活的更新和重置能力,非常适合嵌入式场景。 |