[SOLVED] unionfs, aufs static

 ( bAndie9100 | 2014. június 22., vasárnap - 1:28 )

van egy hálózatról (PXE) boololós live Linux rendszerem, kernel 3.7.8.
az initrd-ben benne van nem csak a kezdeti fájlrendszer, hanem minden, amit futásidő alatt használ (>300MB).

egy kisebb initrd-vel akarom indítani, és át akarom írni az init scriptet, hogy a hálózat felkonfigurálása után netről vegye a root fájlrendszert.
ez sikerült is egy statikusan linkelt nbd-client -tel. az nbd server címet és port számot kernelparaméterben adom át.

a következő dolog, hogy írható is legyen az új rootfs, először az nbd copyonwrite funkciójával próbálkoztam, de egyre másra fájlrendszer (ext) hibákat dobott kliens oldalon.
jobban szeretném aufs, unionfs-sel megvalósítani, tehát hogy a r/o hálózati fs fölé egy r/w ramfs-t csatolok.

van ötletetek, hol találok, vagy hogyan csinálok olyan mount.unionfs-t, ami fut ebben a környezetben?
az aufs-t kernel szinten kell támogatni, és http://aufs.sourceforge.net/ -ből úgy értem, ehhez a kernel verzióhoz nincs támogatás.

unionfs-ből van unionfs-fuse verzió, ezt próbaltam statikusan fordítani, de számomra elég mély linkelési hibákat dobott. LDFLAGS = -static nélkül lefordul.
a debián 7-tel szállított unionfs-fuse olyan lib-ekre hivatkozik, ami nincs a tárgyalt image-ben. pl. libc.so.6 helyett libc.so.0 van. átnevezős trükknek nem dőlt be.

plusz kérdés a témához: mivel érem el, hogy boot-oláskor automatikusan töltse be a hálókrtyához megfelelő modult a kernel?
jelenleg "modprobe tg3" parancsot kell kiadnom hogy legyen nic, de ezt a kernel is ki tudja találni valahogyan.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Nemrég bohóckodtam magam is unionfs-sel, mert azt akartam, hogy squashfs read only filerendszeren legyen a /usr, a frissítések pedig egy alkönyctárba menjenek. Az az igazság, jól működő, támogatott megoldást nem találtam. Valamiért ez nem kedvenc a mai kernelekben.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

akkor kéne aufs-támogató kernelt fordítanom alá?

~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack

Attól tartok. Azt sem tudom, hogy a mainline kernelben támogatott-e vagy patch-elni kell, ha ez utóbbi, a 3.15.1-es patch-elhető, vagy sem. Jobban szeretem azokat a megoldásokat, amelyekben van hivatalos, tartósan fennmaradó támogatás mindenféle szögelés nélkül.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

úgy tűnik, sikerült az unionfs-fuse -t statikusan linkelni.
LIB += -lm -ldl -lrt -lpthread
kellett hozzá.

a cél rendszeren is működik, végzi a dolgát:
unionfs -o stats -o statfs_omit_ro -o allow_other /mnt/ramfs=RW:/mnt/nbd0=RO /mnt/newroot

~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack

Nekem ezzel az volt a bajom, hogy a SELinux labeleket nem támogatta, legalább is nekem így tűnt. Az meg nekem nem jó.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

ebben az esetben most nem játszik a SELinux
(nálam sose játszik, mert nem ismerem :)

de még itt is kiderülhet, h valamit nem támogat, ami kell...

~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack

ez végzi a megfelelő fajlrendszer környezet beállítását:

modprobe nbd
nbd-client "$NBD_HOST" "$NBD_PORT" /dev/nbd0

for d in ram nbd root; do mkdir /mnt/$d; done
mount -t tmpfs none /mnt/ram
mount /dev/nbd0 /mnt/nbd

modprobe fuse
unionfs -o cow -o stats -o statfs_omit_ro -o allow_other -o fsname=unionfs /mnt/ram=RW:/mnt/nbd=RO:/=RO /mnt/root

mkdir /mnt/root/dev
mount -t tmpfs none /mnt/root/dev
cp -a /dev /mnt/root

mkdir /mnt/root/tmp
mount -t tmpfs -o nodev,nosuid,mode=1777 none /mnt/root/tmp

ezután jöhet a chroot vagy switch_root ...

~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack