2021/6/16

overlay fs

用 pi 來測試功能一下,google 說 pi 的 raspi-config 就有 overlay fs 功能,給 kisok 用。

新 raspios 開啟console uart好像不用 dtoverlay disable_bt 了。
ref: uart configuration

改用 enable_uart=1
就會顯示了。(2021-1-11 的 image)
console 開到一半(通常是 usb hub init 後,就會變成亂碼...最後查到是 micro-usb power 線材的問題。
換上沒有 core 的線材就 OK 了。

用 raspi-config 開啟 overlay 功能,然後 read-only root 回答 Yes。
重開機後, / 就是 overlay 了:
mount:
overlay on / type overlay (rw,noatime,lowerdir=/lower,upperdir=/upper/data,workdir=/upper/work)
boot cmd:
$ cat /proc/cmdline 
coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  boot=overlay console=ttyS0,115200 console=tty1 root=PARTUUID=3661545e-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwai
大概是:boot=overlay, root=UARTUUID...,rootfstype=ext4 之類。

raspberry pi 使用 overlayfs 作為 rootfs 可以參考overlayroot,有一堆都是寫 init script,取代 init,開機後重新 mount root。
raspberry pi 的 script 好像是 /etc/initramfs-tools/scripts/overlay

以前 raspi-config 還沒有 overlayfs 選項時,大概是用這一篇:overlay filesystem raspi 來做。
這一篇:easy change on a read only reaspberry pi 也有說明手動更改跟使用 raspi-config 修改的兩種方法。
這一篇 setting up overlay fs on raspberry pi還提供在 power off 時,把 upper layer 寫回 lower layer 的 方法,聲稱這樣可以大大個減少 sd card write 的次數 (增加壽命)

有關 overlayfs 的使用,可以參考play with overlay filesystem
任何兩個 目錄都可以疊成一個 overlay filesystem (目錄)。
以上面 ref 的例子來看。
有 upper, lower 兩個目錄:
charles-chang@beaver:~/test$ tree upper/
upper/
├── dir
│   └── g
├── e
└── f

1 directory, 3 files
charles-chang@beaver:~/test$ tree lower/
lower/
├── a
├── b
├── dir
│   ├── c
│   └── d
└── test
用 mount command 把 upper 疊在 lower 之上,最後成為 'merged' 目錄:
sudo mount -t overlay overlay -olowerdir=./lower,upperdir=./upper,workdir=./work merged
看看 merged 目錄:
tree merged/
merged/
├── a
├── b
├── dir
│   ├── c
│   ├── d
│   └── g
├── e
├── f
└── test
可以看到 upper 跟 lower合併在一起了。
因為 overlayfs 的 lower 是不能更動的,只能藉由 upper 來更動。
所以可以修改 merged 下的 file ,然後去 upper, lower 看看變化。
有一點要注意: lower 的內容在 mount 之後,就不要更動了,否則會有不可預知的問題。


在busybox 1.32.1
enable build static
make && sudo make install

沒有留言:

張貼留言