Personnaliser un Live-cd (Ubuntu 9.10)
Je vous ai fait part, dans l’un de mes précédents articles, de mon intention de créer une distribution Live Ubuntu personnalisée orientée vers la récupération de données et le réseau. Voici donc la première étape, la personnalisation d’un Live-cd à partir de la version 9.10 d’Ubuntu, Karmic Koala.
Pour ceux qui ont l’habitude de ce genre de manipulations, je ne vais pas vous cacher que je me suis essentiellement servi de la documentation Ubuntu qui est d’ailleurs relativement complète à ce sujet. Vous retrouverez toutes les ressources utilisées en fin d’article. Ce tutoriel étant adapté à la personnalisation d’Ubuntu 9.10, certains éléments présentés ici ne sont pas encore dans la documentation officielle.
Récupération de l’image originale et création de la structure nécessaire:
mkdir /livecd
cd /livecd
mkdir iso squashfs
wget http://cdimage.ubuntu.com/releases/karmic/alpha-6/karmic-desktop-i386.iso
Montage et copie du contenu de l’iso:
mount -o loop karmic-desktop-i386.iso /cdrom
cp -av /cdrom/. iso
umount /cdrom
Suppression des éléments inutiles (présents pour Windows):
cd iso
rm Autorun.inf wubi.exe
rm -r pics
cd ..
Montage et copie du squashfs
C’est ici qu’intervient un premier problème, n’ayant pas installé Karmic Koala sur mon poste, je pensais tout de même pouvoir personnaliser le Live-cd en utilisant comme système hôte, Ubuntu 9.04. Or le squashfs présent sur Karmic Koala est en version 4, celui-ci est intégré au noyau Linux 2.6.31 et n’est pas rétrocompatible avec la version 3.3 présente dans les noyaux Linux plus anciens. Il est donc nécessaire d’utiliser un système hôte utilisant un noyau Linux >= 2.6.31. Ce qui m’a amené à effectuer toute la manipulation sur une machine virtuelle utilisant comme système le live-cd d’Ubuntu 9.10 lui-même.
Afin de compresser / décompresser le système squashfs, nous allons installer les outils nécessaires:
apt-get install squashfs-tools
Puis nous pouvons continuer la procédure:
mount -t squashfs -o loop iso/casper/filesystem.squashfs /cdrom
cp -av /cdrom/. squashfs
umount /cdrom
Préparation du chroot
mount –bind /proc squashfs/proc
mount –bind /dev squashfs/dev
mount –bind /sys squashfs/sys
cp /etc/resolv.conf squashfs/etc/resolv.conf
chroot squashfs
À partir de maintenant, nous allons effectuer des modifications directement sur le système en cours de personnalisation.
Mise à jour du système
Décommenter les lignes contenant universe dans /etc/apt/source.list afin d’activer les dépôts universe.
apt-get update
apt-get dist-upgrade
Une fois cette étape franchie, nous entrons dans le vif du sujet avec le choix des paquets à ajouter / supprimer. Les choix suivants correspondent à mes besoins, vous pouvez adapter les manipulations ci-dessous selon vos besoins.
Applications et ressources supprimées:
Suppression des langues, d’evolution et du paquet ubuntu-desktop(dépends d’evolution) afin d’alléger cette distribution.
apt-get remove –purge language* evolution pidgin ekiga
Le paquet ubuntu-desktop doit être réinstallé avant une mise à niveau vers une nouvelle distribution Ubuntu.
Applications et ressources ajoutées:
Ajout de la gestion du français et des outils sélectionnés:
apt-get install language-pack-fr language-pack-gnome-fr language-support-fr language-pack-kde-fr language-selector
apt-get install openssh-server x11vnc terminator localepurge
apt-get install foremost testdisk ntfsprogs gparted e2undel nfs-common
apt-get install thunderbird amsn iptux
Vérification des dépendances et nettoyage de la base des paquets disponibles et téléchargés:
apt-get -f install
apt-get autoremove
apt-get autoclean
apt-get clean
Sortie du chroot
rm /etc/resolv.conf
umount /sys
umount /dev
umount /proc
En cas d’erreur, ne pas en tenir compte, cela ne gênera pas la suite de la manipulation.
exit
De nombreuses autres modifications sont possibles sans rentrer dans le chroot, notamment tous ce qui concerne la modification de thèmes graphiques, les fichiers de configurations par défaut, …
Il est possible d’ajouter tout ce que l’on veut simplement en le copiant à l’endroit souhaité dans le répertoire squashfs.
Ainsi, afin de modifier plus facilement l’aspect graphique, le plus simple est de reconstruire l’iso puis de lancer celui-ci dans une machine virtuelle et d’effectuer les modifications souhaitées. Il suffira ensuite d’ajouter les fichiers modifiés au répertoire squashfs (au bon emplacement), par exemple dans squashfs/etc/skel pour que cela soit présent dans le home de tout utilisateur, puis reconstruire à nouveau l’iso.
Voici la manipulation permettant de reconstruire l’image iso:
Mettre le français en langue par défaut:
echo « fr » | sudo tee iso/isolinux/lang
Prise en compte de toutes les modifications:
chroot squashfs update-initramfs -k all -u
Reconstruire le système squashfs:
rm iso/casper/filesystem.squashfs
chmod a+w iso/casper/filesystem.manifest
chroot squashfs dpkg-query -W –showformat=’${Package} ${Version} ’ > iso/casper/filesystem.manifest
chmod go-w iso/casper/filesystem.manifest
chmod a+w iso/casper/filesystem.manifest-desktop
chroot squashfs dpkg-query -W –showformat=’${Package} ${Version} ’ > iso/casper/filesystem.manifest-desktop
chmod go-w iso/casper/filesystem.manifest-desktop
Compression du système squashfs:
cd squashfs
mksquashfs . ../iso/casper/filesystem.squashfs -info
cd ..
Et pour finir, la génération de l’iso:
cp squashfs/boot/vmlinuz-2.6* iso/casper/vmlinuz
cp squashfs/boot/initrd.img-2.6* iso/casper/initrd.gz
cd iso
bash -c « find . -path ./isolinux -prune -o -type f -not -name md5sum.txt -print0 | xargs -0 md5sum | tee md5sum.txt »
cd ..
mkisofs -r -V « Libre-Astux Live CD » -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o libre-astux-live-cd-i386.iso iso
Vous voici à présent avec un Live-cd Ubuntu personnalisé. Je suis passé ici un petit peu vite sur la personnalisation de la distribution au niveau graphique car je ne m’y suis pas vraiment attardé. Je préciserai certainement ce point à la suite de billet lorsque j’y aurai regardé de plus près.
Ceux qui connaîtraient d’autres outils interressant concernant la récupération de données ou le test du matériel, n’hésitez pas à laisser ceux-ci en commentaire.
Ressources utilisées:
La documentation Ubuntu sur la personnalisation de live-cd
Documentation sur une personnalisation plus poussée (thèmes, grub, …)