Temat: [idée fixe] extroot wielowarstwowy
W skrócie:
Chciałbym stworzyć extroot z trzech warstw:
lower1 - squashfs (readonly)
lower2 - /dev/mtdblock3 (readonly)
upper - np. pendrive /dev/sda2 (writable)
Zysk:
1. zmiany poczynione pierwotnie (na /dev/mtdblock3) będą gotowe do użycia po wykonaniu extroot z użyciem pendrive.
2. zmiany wykonanie na extroot z pendrive NIE popsują konfiguracji tej z /dev/mtdblock3 (gdyż ta warstwa będzie readonly).
Aktualnie aby wykorzystać pierwotną konfigurację trzeba należy ją skopiować (więcej "Skopiowanie bieżącej konfiguracji" https://eko.one.pl/?p=openwrt-externalroot).
Extroot realizowany jest za pomocą overlayfs, który od kernela 3.19 pozwala na użycie wielu warstw (https://www.phoronix.com/scan.php?page= … px=MTg1Nzg).
Aktulanie extroot wyglada mniej więcej tak:
/dev/sda2 on /overlay type ext4 (rw,relatime,data=ordered)
overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work)Docelowo musiałby wyglądać to tak:
/dev/sda2 on /overlay type ext4 (rw,relatime,data=ordered)
/dev/mtdblock3 on /mnt/flash type jffs2 (rw,sync,relatime)
overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/mnt/flash/upper:/,upperdir=/overlay/upper,workdir=/overlay/work)Istotne jest tu dodanie:
overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/mnt/flash/upper:/,upperdir=/overlay/upper,workdir=/overlay/work)
Aby dołożyć warstwę (z /dev/mtdblock3) należałoby jakoś zmusić LEDE aby
1. (przed wykonaniem extroot z pendrive) zamonotować /dev/mtdblock3 np. na /mnt/flash
Być może wystarczyłoby jakoś zmodyfikować skrypty preinit.sh w obrazie ?
2. wykonać extroot dokładając warstwę
Tu zachodzi pytanie jak i gdzie należałby to zrobić ?
Być może warto by wykorzystać konfigurację fstab i w sekcji mount użyć options
config mount
option target '/overlay'
option uuid '274d11cf-c48d-43c4-b433-a191f024ceb1'
option enabled '1'
option check_fs '1'
option options 'rw,noatime,lowerdir=/mnt/flash/upper:/,upperdir=/overlay/upper,workdir=/overlay/work'Ktoś ma jakieś doświadczenie lub pomysły gdzie i jak by to zrobić ?