Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Mon Jan 08, 2007 5:58 pm Post subject: [HOWTO] Paludis et squashfs |
|
|
Paludis utilisant le même arbre que portage, il dispose des même problème d'espace disque utilisé. Tout comme pour portage nous pouvons compresser l'arborescence portage dans une archive squashfs.
- Activer le module squashfs dans le noyau
- installer les utilitaires squashfs et unionfs
Code: | paludis -i squashfs-tools unionfs |
Charger le modules squashfs et unionfs
Code: | modprobe squashfs
modprobe unionfs |
Créer un répertoire gentoo dans le ram disque
Code: | mkdir /dev/shm/gentoo |
Déplacer le répertoire distfiles pour qu'il ne soit plus dans l'arborescence des ebuilds et penser à changer dans le fichier de configuration des répertoire : /etc/paludis/repositories/*.conf les références distdir pour qu'elles pointent vers le nouveau répertoire.
Supprimer les cache et les mettre ailleurs, /var/cache/paludis par exemple, penser à modificier les fichiers de configuration en conséquence :
Code: |
names_cache = /var/cache/paludis/gentoocache/names
|
Compresser l'arborescence gentoo
Code: | mksquashfs /var/paludis/repositories/gentoo /var/paludis/repositories/gentoo.sqfs -check_data |
Faire une sauvegarde de l'arborescence gentoo :
Code: | mv /var/paludis/repositories/gentoo /var/paludis/repositories/gentoo-old
mkdir /var/paludis/repositories/gentoo |
Faire un hook qui va recréer le squashfs à la prochaine mise à jour
Créer le répertoire /etc/paludis/hooks/sync_all_post :
Code: | mkdir -p /etc/paludis/hooks/sync_all_post |
créer un fichier update_squahfs.bash :
Code: | #!/bin/bash
source ${PALUDIS_EBUILD_DIR}/echo_functions.bash
einfo "Updating squashfs"
mksquashfs /var/paludis/repositories/gentoo /var/paludis/repositories/gentoo-new.sqfs >/dev/null
einfo "Remounting squashfs"
umount /var/paludis/repositories/gentoo
umount /var/paludis/repositories/gentoo
mv /var/paludis/repositories/gentoo-new.sqfs /var/paludis/repositories/gentoo.sqfs
mount /var/paludis/repositories/gentoo
mount -t unionfs -o dirs=/dev/shm/gentoo=rw:/var/paludis/repositories/gentoo=ro unionfs /var/paludis/repositories/gentoo
|
Charger les modules au démarrage :
Code: | echo squashfs >> /etc/modules.autoload.d/kernel-2.6
echo unionfs >> /etc/modules.autoload.d/kernel-2.6
echo loop >> /etc/modules.autoload.d/kernel-2.6 |
Renseigner la fstab :
Code: | echo "/var/paludis/repositories/gentoo.sqfs /var/paludis/repositories/gentoo squashfs loop 0 0" >> /etc/fstab |
Rajouter le montage unionfs au démarrage :
Code: | echo "mkdir -p /dev/shm/paludis" >> /etc/conf.d/local.start
echo "mount -t unionfs -o dirs=/dev/shm/gentoo=rw:/var/paludis/repositories/gentoo=ro unionfs /var/paludis/repositories/gentoo" >> /dev/local.start |
ajouter local au démarrage :
Code: | rc-update add local default |
tout utiliser :
Code: | mount /var/paludis/repositories/gentoo
/etc/init.d/local start
|
Désormais chaques synchronisation fera une mise à jour de l'archive.
Mon arborescence gentoo est passé de 573Mo à 41Mo
TODO: rendre le hook plus propre, faire en sorte qu'il ne se déclenche que pour le répertoire gentoo. |
|