在 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 文件系統,您可以根據實際情況選擇其他文件系統。