Mit mondjak? Halogattam a unionfs megvalósítást is, aztán amikor már tisztán látszott, hogy ebből nem lesz semmi, halogattam az írást is... meg is látszik a havi termésen - ez a negyedik post ebben a hónapban, pedig Joee is segített. :)
Nem vagyok az az ember, aki könnyen feladja a dolgokat, de ez a Unionfs és Ubuntu az volt. Odáig eljutottam nagyon hamar (amit anno írtam is anno), hogy egy kernel oops után bebootol, és teljesen jól működik a unioinfs része a dolognak, csakhogy
1. ne legyen kernel oops
2. amikor elértem az x-edik bootolást és ellenőrizni kellett a fájlrendszert, akkor valahogy úgy érezte, neki most az ext3 a "/" (tehát a kiinduló állapot), holott neki igenis a unionfs volt a "/". Ha futtatni akartam egy fsck-t az igazi "/"-re, azt mondta, hogy fel van mountolva; de nem volt a /proc/mounts alatt és ha umountolni akartam, akkor azt írta, hogy nincs mountolva. A boot scriptekhez meg nem akartam nyúlni, hiszen a lényeg az lett volna, hogy ne kelljen.
Lehet hogy most nem tűnök minden bagjok legjobbikának, de főleg miután egy mini-linux kísérletemen simán megoldottam a kérdést, úgy éreztem hogy nem érdemes több energiát keccsölni a dologba. Tanulságképpen, a mini-linuxon kb. így oldottam meg (ez nem csak a unionfs rész, hanem az egész boot script):for x in $(cat /proc/cmdline); do
Az Ubuntus, kissé beteges Unionfs-es rész (ha valaki rájön a megoldásra, pls írja meg!):
case $x in
root=*)
ROOT=${x#root=}
;;
init=*)
init=${x#init=}
;;
esac
done
[ -d /dev ] || mkdir -m 0755 /dev
[ -d /root ] || mkdir --mode=0700 /root
[ -d /sys ] || mkdir /sys
[ -d /proc ] || mkdir /proc
[ -d /tmp ] || mkdir /tmp
mkdir -p /var/lock
mount -t sysfs none /sys -onodev,noexec,nosuid
mount -t proc none /proc -onodev,noexec,nosuid
if ! mount -t ext2 -o ro $ROOT /ro; then
echo "Csak olvashato fajlrendszer nem talalhato!"
/bin/busybox sh
fi
if ! mount -t ext3 -o rw /dev/sda5 /rw; then
echo "Irhato-olvashato fajlrendszer csatolasa sikertelen! Fajlrendszer ellenorzese..."
chroot /ro /bin/e2fsck /dev/sda5
exit 0
fi
mount -t unionfs -o dirs=/rw=rw:/ro=ro unionfs /unionfs
if [ $? -ne 0 ]; then
echo "Fajlrendszer egyesites sikertelen!"
/bin/busybox sh
fi
mount --move /ro /unionfs/ro
umount -l /rw
mount --move /unionfs /root
exec run-init ${ROOT} ${init} "$@" <${ROOT}/dev/console >${root}/dev/console 2>&1#!/bin/sh
Ubuntu alatt így "installáltam":
case $1 in
prereqs)
exit 0
;;
esac
IRHATO="sda5"
for x in $(cat /proc/cmdline); do
case $x in
root=*)
ROOTNAME=${x#root=}
;;
unionfs=*)
unionfs=${x#unionfs=}
;;
esac
done
if [ "$unionfs" != "yes" ]; then
# nem kell unionfs-t hasznalni, snapshot/karbantartas miatt
# kilepes
exit 0
fi
modprobe -Qb unionfs
if [ $? -ne 0 ]; then
echo UNIONFS HIBA: Nem sikerult betolteni a unionfs modult!
exit 0
fi
# A jelenlegi root fajlrendszeren (azaz az initramfs-en) letrehozzuk a
# szukseges konyvtarakat
mkdir /unionfs
mkdir /rw
mkdir /ro
# Felmountoljuk az irhatot, es a jelenlegi "/"-t atmozgatjuk az /ro-ba
mount /root/dev/$IRHATO /rw
if ! mount --move ${rootmnt} /ro; then
echo "UNIONFS HIBA: A root -> /ro mozgatas sikertelen!"
exit 0
fi
# Felmountolt fajlrendszerek, egyesuljetek!
if ! mount -t unionfs -o dirs=/rw:/ro=ro,delete=whiteout none /unionfs; then
echo UNIONFS HIBA: Konyvtarak egyesitese sikertelen!
exit 0
fi
[ -d /unionfs/ro ] || mkdir /unionfs/ro
[ -d /unionfs/rw ] || mkdir /unionfs/rw
if ! mount --move /ro /unionfs/ro; then
echo "UNIONFS HIBA: /ro -> /unionfs/ro mozgatas sikertelen"
exit 0
fi
if ! mount --move /rw /unionfs/rw; then
echo "UNIONFS HIBA: /rw -> /unionfs/rw mozgatas sikertelen"
exit 0
fi
# 2. Az fstab a felcsatolando fajlrendszereket irja le. Hogy ertheto
# legyen: Most nem a rendes fajlrendszerunket latjuk, az a /root alatt
# van. A mostani "/" minden egyes bootkor ujra es ujra elolrol letrejon.
# Az init processz az fstab es mtab alapjan mountol; viszont nekunk nem
# a /dev/xxx fajlrendszer kell, ami eddig a "/" volt, hanem a unionfs-t
# kell root fajlrendszerre' varazsolnunk. Kovetkezeskeppen meg kell
# ganyolni kicsit az fstab-ot es az mtab-ot is, hogy ne akarja
# ramountolni a /dev/sda3-at a unionfs-re, de a bebootolt rendszer azert
# lassa.
# 2.1 Kikommentezzuk a tenyleges root fajlrendszert (a unionfs-en), es
# a swap-et is; kulonben az init rossz helyrol szedne ezeket
cat /unionfs/ro/etc/rc.local|sed 's/\(.*\)exit/\1\#exit/' >/unionfs/etc/rc.local
echo "cat /ro/etc/fstab | sed 's/$ROOTNAME/#$ROOTNAME/' | sed 's/$resume/#$resume/' >/etc/fstab" >>/unionfs/etc/rc.local
echo "echo $ROOTNAME /ro ext3 relatime 0 0 >>/etc/fstab" >>/unionfs/etc/rc.local
echo "echo /dev/sda5 /rw ext3 rw,relatime,errors=remount-ro 0 0 >>/etc/fstab" >>/unionfs/etc/rc.local
echo "echo none / unionfs rw,dirs=/rw:/ro=ro,delete=whiteout 0 0 >>/etc/fstab" >>/unionfs/etc/rc.local
# 2.3. Rendbe kell vagnunk az mtab-ot is
echo mount -f /ro >>/unionfs/etc/rc.local
echo "echo none / unionfs rw,dirs=/rw:/ro=ro,delete=whiteout 0 0 >>/etc/mtab" >>/unionfs/etc/rc.local
echo "echo /dev/sda5 /rw ext3 rw,relatime,errors=remount-ro 0 0 >>/etc/mtab" >>/unionfs/etc/rc.local
echo exit 0 >>/unionfs/etc/rc.local
mount --move /unionfs /root
if [ $? -ne 0 ]; then
echo "UNIONFS HIBA: A unionfs mozgatasa sikertelen!"
exit 0
fi
exit 0root@aranyhal:~# cp unionfs-mount.sh /etc/initramfs-tools/scripts/init-bottom/unionfs
Ezzel kész is lenne, csak, ahogy mondtam, nem az igazi. Újabb csalódás az Ubuntuban, mindent iszonyatosan túlbonyolítanak... :-( Lehet, hogy az alap felhasználónak jó, de semmilyen változtatást nem tolerál. Nekem, ahogy mondtam, konkrétan nem is működik, hiszen mindig fájlrendszert akarna ellenőrizni.
root@aranyhal:~# chmod 0755 /etc/initramfs-tools/scripts/init-bottom/unionfs
root@aranyhal:~# update-initramfs -u
(Ja, persze a grub "kernel" sorána végére kell egy unionfs=yes, ha történetesen ki akarnátok próbálni, tesztelgetni.)
Bagoj visszatér
2008.05.29. 17:50 bagoj ur
1 komment
Címkék: ubuntu hogyan hardy heron unionfs
A bejegyzés trackback címe:
https://bagojur.blog.hu/api/trackback/id/tr73612290
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.
bagoj.ur 2008.05.29. 22:10:31
Amúgy tök vicces, találtam egy aufs-es megvalósítást, itt:
help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash
Kipróbáltam, nekem ez sem működik - semmit sem csinál. :-(
help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash
Kipróbáltam, nekem ez sem működik - semmit sem csinál. :-(