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ć ?

TP-Link TL-WDR4300 v1, Reboot (17.01-SNAPSHOT, r3876-efb6ca1)

2

Odp: [idée fixe] extroot wielowarstwowy

extroot dwuwarstwowy nie ma żadnych zalet w stosunku do
jednowarstwowego, więc pewnie sam będziesz realizował
tą koncepcję.

3

Odp: [idée fixe] extroot wielowarstwowy

pasman napisał/a:

extroot dwuwarstwowy nie ma żadnych zalet w stosunku do jednowarstwowego

Zalety wypisałem wyżej.

Sprawa jest prosta - konfigurujesz router i nagle chcesz zrobić extroot,
robiąc musisz skopiować całą swoją dotychczasową konfiguracje.
Z warstwą pośrednią nie musiałbyś tego robić.
To nie jest zaleta ?

TP-Link TL-WDR4300 v1, Reboot (17.01-SNAPSHOT, r3876-efb6ca1)

4

Odp: [idée fixe] extroot wielowarstwowy

I to taki problem skopiować bieżącą konfigurację?

Skompiluj sobie sam system który domyślnie będzie miał to co chcesz i ustawione jak chcesz. Będziesz miał zapewniony punkt 1/2

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: [idée fixe] extroot wielowarstwowy

Cezary napisał/a:

I to taki problem skopiować bieżącą konfigurację?

Skompiluj sobie sam system który domyślnie będzie miał to co chcesz i ustawione jak chcesz. Będziesz miał zapewniony punkt 1/2

Cezary - to nie problem skopiować, skompilować itp ... tylko po co to robić jeśli mogłoby to być out of box ?
Chodzi o rozwiązanie docelowe stworzenie takiej funkcjonalności i przekazanie jej społeczności.
Jaki to ma sens że tworząc extroot - domyślnie wszystko się resetuje do ustawień fabrycznych ?
Czy z punktu widzenia użytkownika nie lepiej by zawsze po tworzeniu extroot zachowała się dotychczasowa konfiguracja ?

TP-Link TL-WDR4300 v1, Reboot (17.01-SNAPSHOT, r3876-efb6ca1)

6

Odp: [idée fixe] extroot wielowarstwowy

Nie wiem jak robisz, ale ja akurat zawsze robię extroota na czystym systemie. Bez sensu jest spędzić pół dnia na dopieszczaniu konfiguracji a później robieniu extroota żeby to wszystko stracić i konfigurować od nowa. Choć wtedy masz właśnie skopiowanie istniejącej konfiguracji.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: [idée fixe] extroot wielowarstwowy

Cezary napisał/a:

Nie wiem jak robisz, ale ja akurat zawsze robię extroota na czystym systemie. Bez sensu jest spędzić pół dnia na dopieszczaniu konfiguracji a później robieniu extroota żeby to wszystko stracić i konfigurować od nowa. Choć wtedy masz właśnie skopiowanie istniejącej konfiguracji.

No własnie, masz rację !

Dlatego przydałoby się umożliwić mając już exroota przy aktualizacji systemu wprowadzić taka funkcjonalność aby nie musieć ZNOWU konfigurowac wszystkiego od nowa - przecież ( dla mnie i jak sie okazuje nie tylko ) to powinno działać OUT OF BOX !!.
Teraz, kiedy aktualizuję system ( mam exroota) musze przed tym skasować plik uuid, potem musze ponownie instalowac moduły do obsługi systemu plików etc. To troche upierdliwie, w wypadku jak ma sie przecież pliki na nośniku pamięci,  WIĘC DLACZEGO nie zautomatyzować tego aby po aktualizacji systemu przy posiadanym exroocie mieć jueż wszsytko tak jak przed aktualizacją ?

Jasne, mogę sobie skompilować lede jak chcę, ale musiałbym każdą nową aktualizacje kompilowac za każdym razem.

Exroot daje mi dodatkową pamieć na stuff i ZAPAMIĘTUJE mój konfig i wszystko to co instalowałem wcześniej - ale przy aktualizacji NIE JEST to wykorzystywane - DLACZEGO ??

Xiaomi 3G Cezarego (!), Xiaomi 4 i 4A z Openwrt by Obsy i Pandorabox 19.2, modem fiber ZTE 660, NAS Qnap 453mini, net 250/25Mb/s, hackintosh

8

Odp: [idée fixe] extroot wielowarstwowy

alossek napisał/a:
Cezary napisał/a:

I to taki problem skopiować bieżącą konfigurację?

Skompiluj sobie sam system który domyślnie będzie miał to co chcesz i ustawione jak chcesz. Będziesz miał zapewniony punkt 1/2

Cezary - to nie problem skopiować, skompilować itp ... tylko po co to robić jeśli mogłoby to być out of box ?
Chodzi o rozwiązanie docelowe stworzenie takiej funkcjonalności i przekazanie jej społeczności.
Jaki to ma sens że tworząc extroot - domyślnie wszystko się resetuje do ustawień fabrycznych ?
Czy z punktu widzenia użytkownika nie lepiej by zawsze po tworzeniu extroot zachowała się dotychczasowa konfiguracja ?

Przyłązzam sie do prośby smile

Xiaomi 3G Cezarego (!), Xiaomi 4 i 4A z Openwrt by Obsy i Pandorabox 19.2, modem fiber ZTE 660, NAS Qnap 453mini, net 250/25Mb/s, hackintosh

9

Odp: [idée fixe] extroot wielowarstwowy

Cezary napisał/a:

Nie wiem jak robisz, ale ja akurat zawsze robię extroota na czystym systemie. Bez sensu jest spędzić pół dnia na dopieszczaniu konfiguracji a później robieniu extroota żeby to wszystko stracić i konfigurować od nowa. Choć wtedy masz właśnie skopiowanie istniejącej konfiguracji.

Cezary,

Pytanie czemu robisz od razu konfigurację na extroot ?
Pewnie dlatego iż wiesz że zmarnujesz czas robiąc to podwójnie,
gdyby było to out of box nie przejmowałbyś się tym tylko od razu zaczynał bez extroot.
Poza tym pewnie od razu wiesz że będziesz używać extroot, co jednak gdy na początku tego nie zakładasz ?
Gdy decyzja zapadanie o migracji na extroot - musisz kopiować konfigurację.

Wygodniej by było aby po czasie gdy okaże się że musisz dopiero dokładasz extroot i nadal masz wszystko jak do tej pory.

Dołożę jeszcze jedną malutką zaletę to tego pomysłu- powierzchnia extroot = /dev/mtdblock3 + /dev/sda2/
czyli to co jest już zainstalowane na /dev/mtdblock3 nie musi być instalowane (kopiowane) na  /dev/sda2/.

TP-Link TL-WDR4300 v1, Reboot (17.01-SNAPSHOT, r3876-efb6ca1)

10

Odp: [idée fixe] extroot wielowarstwowy

Jeśli tak potrzebujecie tego fiuczera, to najprościej jest dołączyć do obrazu luci-app-command oraz w jego konfigu skrypt montujący.

11

Odp: [idée fixe] extroot wielowarstwowy

(dla zainteresowanych i ewentualnie chętnych pomóc)
Pozwólcie że potraktuje ten wątek jako "Work In Progress" w którym będę się dzielił swoimi tropami
i przemyśleniami (podlegającymi ewentualnym korektom przez masterów typu Cezary)
Stąd podpowiedzi i komentarze nadal mile widziane.

Krok 0:

Szukam i zdaje się że że całą robotę montującą JFFS2 na /overlay i/lub extroot robi mount_root (więc chyba należałby by przerobić jego źródła).

Tak wynikałby to z:
https://wiki.openwrt.org/doc/techref/fi … caldetails
https://wiki.openwrt.org/doc/techref/preinit_mount
https://wiki.openwrt.org/doc/howto/extr … oot.theory
https://wiki.openwrt.org/doc/techref/process.boot

TP-Link TL-WDR4300 v1, Reboot (17.01-SNAPSHOT, r3876-efb6ca1)

12 (edytowany przez alossek 2018-05-03 15:42:08)

Odp: [idée fixe] extroot wielowarstwowy

Krok 1:

Wygląda na to że patch musiałby kręci się wokół kodu:
https://git.openwrt.org/?p=project/fsto … .c;hb=HEAD
https://git.openwrt.org/?p=project/fsto … .c;hb=HEAD
https://git.openwrt.org/?p=project/fsto … .c;hb=HEAD

Przy okazji pytanie ktoś wie czy lede korzysta własnie z tych źródeł dla fstools ?
Niby LEDE się odłączyło potem openwrt merge brał z LEDE już się pogubiłem ...

TP-Link TL-WDR4300 v1, Reboot (17.01-SNAPSHOT, r3876-efb6ca1)

13

Odp: [idée fixe] extroot wielowarstwowy

yabba235 napisał/a:
Cezary napisał/a:

Nie wiem jak robisz, ale ja akurat zawsze robię extroota na czystym systemie. Bez sensu jest spędzić pół dnia na dopieszczaniu konfiguracji a później robieniu extroota żeby to wszystko stracić i konfigurować od nowa. Choć wtedy masz właśnie skopiowanie istniejącej konfiguracji.

No własnie, masz rację !

Dlatego przydałoby się umożliwić mając już exroota przy aktualizacji systemu wprowadzić taka funkcjonalność aby nie musieć ZNOWU konfigurowac wszystkiego od nowa - przecież ( dla mnie i jak sie okazuje nie tylko ) to powinno działać OUT OF BOX !!.
Teraz, kiedy aktualizuję system ( mam exroota) musze przed tym skasować plik uuid, potem musze ponownie instalowac moduły do obsługi systemu plików etc. To troche upierdliwie, w wypadku jak ma sie przecież pliki na nośniku pamięci,  WIĘC DLACZEGO nie zautomatyzować tego aby po aktualizacji systemu przy posiadanym exroocie mieć jueż wszsytko tak jak przed aktualizacją ?

Jasne, mogę sobie skompilować lede jak chcę, ale musiałbym każdą nową aktualizacje kompilowac za każdym razem.

Exroot daje mi dodatkową pamieć na stuff i ZAPAMIĘTUJE mój konfig i wszystko to co instalowałem wcześniej - ale przy aktualizacji NIE JEST to wykorzystywane - DLACZEGO ??

Po aktualizacji system nie montuje automatycznie extroota bo... nie wiadomo co na nim masz. Przecież można zaktualizować na dowolną inną wersję, kompletnie nie kompatybilną ze sterownikami, modułami jądra, kernelem czy chociaż by ustawieniami. Nie ma automatu który by sprawdził czy to co jest na extroocie jest poprawne i można go zamontować ponownie po upgrade systemu. Ty to wiesz, system sam z siebie nie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

14

Odp: [idée fixe] extroot wielowarstwowy

@Cezary,
Mam już gotowy patch który "u mnie działa".
Wiem że sceptycznie podchodziłeś do tego pomysłu, ALE może zechciałbyś dodatkowo przetestować u siebie?
Patch powinien bez problemu wejść do ostatniej rewizji z Twoich obrazów (a jakby się spodobało to kto wie może dodać do swoich obrazów ... może chociaż społeczność eko.one.pl to zaakceptuje ?)
Będę chciał zgłosić patcha do lede/openwrt, ale nie wiadomo czy ten wynalazek się spodoba.
Pozdrawiam.

TP-Link TL-WDR4300 v1, Reboot (17.01-SNAPSHOT, r3876-efb6ca1)

15

Odp: [idée fixe] extroot wielowarstwowy

Więc udostępnij go publicznie wraz z opisem co i jak, kto będzie chciał to przetestuje.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

16

Odp: [idée fixe] extroot wielowarstwowy

Właśnie, to może być impuls aby samemu coś skompilować smile

Xiaomi 3G Cezarego (!), Xiaomi 4 i 4A z Openwrt by Obsy i Pandorabox 19.2, modem fiber ZTE 660, NAS Qnap 453mini, net 250/25Mb/s, hackintosh