Unionfs

Bonjour,
Je suis en train d’installer debian etch sur un serveur amd64, j’ai mon système de base sur un CF 1go montée en IDE et 5HDD sata en raid5 avec un LVM dessus et 2LV: /home et /swap.
Je cherche à éviter au maximum les écritures sur la CF pour la préservée…
C’est pourquoi j’ai mis /swap sur un LV. en plus /swap ne servira pas beaucoup car j’ai 2GO de DDR2.
On m’a récemment entretenu de unionfs qui garde le système en lecture seule et qui copie les écritures (updates, conf, nouveaux paquets etc…) dans un répetoire sur un autre volume.
Quelqu’un en a t il fait usage et sais t il comment le mettre en oeuvre?
Cordialement!

Oui, j’utilise unionfs sans souci avec clefagreg mais je ne comprends pas ton message:
LV=Volume logique sur disque dur, bon
CF=??? Carte fausse, Credit Fossile, Canard farceur, Crétin Fini, Carbure à Flouze… mettons après reflexion que ça soit Compact Flash donc une carte mémoire.

Effectivement, il est pas mal d’utiliser unionfs pour ton problème, tu peux même gagner de la place en utilisant squashfs éventuellement. Le principe est de monter la racine sur ta carte en lecture seule ainsi qu’un RAMDISK en unionfs, les écritures se feront uniquement en RAM. À l’issue de ta session, tu répercutes en un seule fois les modifications sur ta carte. J’ai effectivement crammé 3 clefs USB avant de faire ce système avec le répertoire home donc les systèmes type clef USB et carte flash n’aiment pas les écritures fréquentes. C’est une bonne précaution.

Merci pour ton info.
:smt002 J’éviterai les abréviations à l’avenir…
Comment est ce que je met tout ça en œuvre lors de l’installation?
J’ai trouvé pour mettre le carte compact flash en lecture seule
Mais je ne sais comment mettre en place le ramdisk avec unionfs…
Je suppose qu’il faut faire tout cela lors de l’installation mais rien ne semble prévu dans le menu de partitionnement (cd d’installation etch de base)
Merci

Hum, non tu fais ton installation normalement et tu laisses ta carte flash en rw mais à la fini de l’initrd, avant de faire le run-init, tu fais

[code]# modprobe unionfs
(donc le mettre dans l’initrd)

umount /dev/pts

mv /dev /ramdisk

mount -t unionfs unionsfs /ROOT -o dirs=/ramdisk=rw:/carte_flash=ro

chroot /ROOT mount /proc

chroot /ROOT mount /sys

umount /proc/bus/usb

umount /proc

umount /sys

cd /

exec /bin/run-init /ROOT /sbin/init $* < /ROOT/dev/console > /ROOT/dev/console 2>&1

[/code]ou qque chose de ce genre

Merci beaucoup :smiley: !

J’ai regardé l’initrd usuel, le fichier init se termine par

maybe_break init exec run-init ${rootmnt} ${init} "$@" <${rootmnt}/dev/console >${rootmnt}/dev/console panic "Could not execute run-init."
Donc à ce stade, ${rootmnt} est ta carte.
Il te faut donc remplacer la ligne

exec run-init ${rootmnt} ${init} "$@" <${rootmnt}/dev/console >${rootmnt}/dev/console
par

modprobe unionfs mkdir /ramdisk mkdir /ramdisk/sys mkdir /ramdisk/proc mkdir /ROOT umount ${rootmnt}/sys umount ${rootmnt}/proc umount /dev/pts mv /dev /ramdisk mount -t unionfs unionsfs /ROOT -o dirs=/ramdisk=rw:${rootmnt}=ro chroot /ROOT mount /proc chroot /ROOT mount /sys cd / exec run-init /ROOT ${init} "$@" < /ROOT/dev/console > /ROOT/dev/console 2>&1

Ça devrait marcher en rajoutant juste le module unionfs dans les modules.