Messages étiquettés squashfs

Complément personnalisation d’un live-cd

J’ai récemment repris mon tutoriel pour la personnalisation d’un live-cd Ubuntu. Je désirai créer un live usb, une clé usb contenant une distribution Ubuntu live personnalisée, qui du coup dépasse la capacité d’un cd et contient les applications dont j’ai besoin.

Pour toute la partie concernant la modification du live-cd jusqu’à la reconstruction du squashfs, je vous renvoi au premier tutoriel.

Par contre je vais ici détailler la fin du processus avec notamment la personnalisation de l’interface et des applications au démarrage mais aussi donner quelques éléments utiles concernant la création de l’iso et l’installation de celui-ci sur une clé USB.

Rappel sur la reconstruction du squashfs:

Il faut systématiquement régénérer l’initrd avant le processus de reconstruction du squashfs via la commande:

update-initramfs -k all -u

et ce dans le chroot puis démonter /proc, /sys et /dev avant de sortir du chroot via exit.

sudo umount /dev

sudo umount /sys

sudo umount /proc

sudo rm /etc/resolv.conf

exit

Création de l’image iso:

La création de l’iso consiste en une commande mais doit être précédée de la copie de l’initrd.gz et de vmlinuz ainsi que de la régeneration de l’empreinte md5 du système:

sudo cp squashfs/boot/vmlinuz-2.6.31-20-generic iso/casper/vmlinuz

sudo cp squashfs/boot/initrd.img-2.6.31-20-generic iso/casper/initrd.gz

cd squashfs

sudo bash -c "find . -path ./isolinux -prune -o -type f -not -name md5sum.txt -print0 | xargs -0 md5sum | tee md5sum.txt"

cd ..

sudo mkisofs -r -V "Custom Ubuntu 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 custom-live-cd-i386.iso iso

Notre image iso ainsi crée se nomme « custom-live-cd-i386.iso« .

Personnalisation de l’interface et des applications au lancement du système:

Le moyen le plus simple pour personnaliser ces éléments est de lancer la distribution précédemment crée dans une machine virtuelle puis de personnaliser l’interface et les données du /home à son gout puis créer une archive de ce /home contenant toutes les modifications apportées:

tar -cvzf /tmp/perso-home.tar.gz /home/ubuntu

Il suffira ensuite de récupérer cette archive par quelque moyen que ce soit (mail, ftp, ssh, …) puis de l’extraire dans le dossier /etc/skel de votre squashfs:

scp /tmp/perso-home.tar.gz 192.168.0.1:/tmp

tar -xvzf /tmp/perso-home.tar.gz /livecd/squashfs/etc/skel/

Puis vérifier à l’aide de la commande:

ls -al /livecd/squashfs/etc/skel/

Vous devriez voir ce qui était tout à l’heure dans votre répertoire personnel.

Une fois toutes les modifications effectuées, il faut reprendre à l’étape « reconstruction du squashfs » puis régénérer l’iso.

Installer votre distribution sur une clé USB:

Formater votre clé usb:

sudo mkfs.vfat /dev/sdx1

L’installation d’une distribution sur clé usb se fait très facilement via l’utilitaire Unetbootin.

Il faut monter cette clé avant d’utiliser Unetbootin:

sudo mount /dev/sdx1 /mnt

sudo unetbootin

Il suffit de choisir l’iso et le disque de destination (clé usb). L’installation devrait se passer sans problème.

Une fois content de votre distribution, vous aimeriez certainement pouvoir l’installer plus rapidement sur d’autres clé usb. Il vous suffit de dupliquer cette clé dans un fichier qui vous servira à créer les autres clés.

Dupliquer une clé usb:

La ou les clés usb concernées ne doivent pas être montées:

sudo umount /dev/sdx1

La duplication se fait à l’aide de la commande « dd » qui permet d’effectuer des copies bloc par bloc, ici par bloc de 1024 kbits:

Dupliquer une clé vers un fichier:

dd if=/dev/sda | gzip -v9 | dd of=/emplacement/de/la/sauvegarde/ghost.gz bs=1024k

Dupliquer un fichier vers une clé: (opération inverse)

zcat /emplacement/de/la/sauvegarde/ghost.gz | dd of=/dev/sda bs=1024k

Dupliquer directement une clé usb sur une autre:

dd if=/dev/sdx of=/dev/sdy bs=1024k

Vous êtes maintenant en possession de tous les éléments permettant de personnalisation une distribution pour en faire un live-usb.

Tags: , , , , , , ,

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

infoC’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}\n’ > 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}\n’ > 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, …)

Tags: , , , , , , , ,