在 Linux 中,OverlayFS 是一种强大的联合文件系统,可以将多个目录层叠在一起,形成一个统一的视图。以下是 Linux OverlayFS 的部署流程:
创建一个工作目录来组织文件系统结构。例如:
mkdir -p /tmp/ramdisk/{bin,sbin,etc,proc,sys,dev,tmp}
将 busybox 和相关依赖文件复制到适当的目录。
在 RAMDisk 的脚本中配置相关的挂载和优化选项,例如:
root_rw/userdata # 读写挂载点 root_ro/root-ro # 只读文件系统挂载点 ROOTMNT {rootmnt} # 使用全局名称表示在除此之外创建 OVERLAYROOT_DEBUG0 # 优化 userdata分区自动修复 e2fsck -y /dev/disk/by-partlabel/userdatatune2fs -O has_journal /dev/disk/by-partlabel/userdata
创建脚本 pack_ramdisk.sh
,将 RAMDisk 内容打包为 ramdisk.img
:
#!/bin/bash cd /tmp/ramdisk_contents find . cpio -o -H newc ../ramdisk.cpiogzip ../ramdisk.cpio mv ../ramdisk.cpio.gz ../ramdisk.img
解压脚本:创建脚本 unpack_ramdisk.sh
,将 ramdisk.img
解压到工作目录:
#!/bin/bash mkdir ramdisk_contents cd ramdisk_contents gunzip -c ../ramdisk.img cpio -idv ramdisk.cpiocpio -idv ramdisk.cpio
打包到 boot.img
。
在项目 defconfig
文件中,添加以下内容:
RK_USE_FIT_IMG=y RK_BOOT_FIT_ITS="bootramdisk.its" RK_RAMDISK_IMG="ramdisk.img"
chosen
节点,添加 overlayroot
参数。创建挂载点目录:
sudo mkdir /mnt/overlay_roots sudo mkdir /mnt/overlay_root/lowerdirs sudo mkdir /mnt/overlay_root/upperdirs sudo mkdir /mnt/overlay_root/workdir
挂载文件系统:
sudo mount --bind /etc /mnt/overlay_root/lowerdirs sudo mount --bind /path/to/temporary/fs /mnt/overlay_root/upperdirs sudo mkdir /mnt/overlay_root/workdirs sudo chown -R 1000:1000 /mnt/overlay_root/workdirs sudo overlay mount -o lowerdir=/mnt/overlay_root/lowerdir,upperdir=/mnt/overlay_root/upperdir,workdir=/mnt/overlay_root/workdir /mnt/overlay_root
验证挂载:挂载成功后,可以在 /mnt/overlay_root
目录下访问合并后的文件系统。
卸载 OverlayFS:要卸载 OverlayFS 挂载点,请使用以下命令:
sudo umount /mnt/overlay_root
请注意,进行任何更改之前,务必备份重要数据。以上步骤详细说明了 OverlayFS 的启动过程。需要注意的是,示例中使用了 ext4 文件系统,您可以根据实际情况选择其他文件系统。