File system compressé RW pour /usr

Dans l’optique d’acheter le EEEPC, j’ai cherché comment compresser le répertoire /usr de ma distribution linux favorite : Mandriva 2008.

Le problème de cette compression c’est que les file system compressés sont en lecture seule. J’ai donc combiné squashfs et unionfs pour conserver la possibilité d’écrire sur /usr et ainsi pouvoir installer de nouveaux logiciels. Ainsi la version actuelle du /usr sera compressée et tout nouveau logiciel sera créé dans unionfs sans compression. A tout moment on peut recréer l’image compressée et vider unionfs.
Tout d’abord, il faut installer les outils qui permettent de creer le file system squashfs :

# urpmi squashfs-tools

On créé ensuite l’image compressée du /usr actuelle. Avant de lancer cette commande, il est important d’avoir bien installé tous les logiciels qu’on souhaite utiliser.

# mksquashfs /usr /usr.sqfs
On créé les points de montage nécessaires pour squashfs et unionfs. Le fichier /usr.sqfs sera monté sur /sq/squashfs et les fichiers créés ou modifiés seront stockés dans /sq/unionfs.
# mkdir /sq/squashfs
# mkdir /sq/unionfs

On quitte le mode graphique pour pouvoir supprimer /usr ou renommer dans un premier temps.
# init 3
# mv /usr /usr.old

On monte manuellement le nouveau /usr
# mount /usr.sqfs /sq/squashfs -t squashfs -o loop
# mount /unionfs /usr -t unionfs -o dirs=/sq/unionfs=rw:/sq/squashfs=ro

On peut repasser en mode graphique

# init 5

La grosse difficulté a commencé ici. Trouver où placer le montage et le démontage de /usr dans les scripts de démarrage et d’arrêt.

Après de nombreux essais, j’ai placé le montage dans /etc/rc.sysinit et le démontage dans /etc/init.d/halt.

/etc/rc.sysinit ligne 411 :

modprobe loop
modprobe squashfs
modprobe unionfs
mount /usr.sqfs /sq/squashfs -t squashfs -o loop
mount /unionfs /usr -t unionfs -o dirs=/sq/unionfs=rw:/sq/squashfs=ro
/etc/init.d/halt ligne 136 :

umount -l /usr
umount -l /sq/squashfs

Cette solution n’est pas idéale car elle affiche des messages d’erreurs sans conséquences lors de l’arrêt ou le reboot de la machine. C’est toujours génant de voir des messages d’erreurs même s’ils sont normaux.

Si vous voyez une autre solution, je suis preneur.

Dans mon cas, mon /usr est passé de 2.3G à 800Mo. Un gain de place appréciable quand on n’a que 4G sur un EEEPC.

This entry was posted in EEE PC, Informatique and tagged , , . Bookmark the permalink.

One Response to File system compressé RW pour /usr

  1. Pingback: Blog sur l’EEE PC » J-? avant la livraison de la bête