Ceci est une ancienne révision du document !
Ce howto provient de http://lenerve.free.fr/dotclear/index.php?2006/08/14/20-customisation-du-livecd-ubuntu qui se base sur https://help.ubuntu.com/community/LiveCDCustomization/6%2e10 http://www.atworkonline.it/~bibe/ubuntu/custom-livecd.htm http://lichota.net/~krzysiek/projects/ubuntu-livecd-customization/ pour la partie francisation Le script de montage des partitions au boot du live cd est basé sur celui disponible ici: http://www.ubuntulinux.nl/files/diskmounter
0.Prérequis
Il nous faut les paquets suivants : squashfs-tools mkisofs xdialog qemu pour tester et faire les ultimes customisations
sudo apt-get install squashfs-tools mkisofs xdialog
et il faut environ 5 Go de disponible.
1. Télécharger le liveCD
wget http://fr.releases.ubuntu.com/xubuntu/6.06.01/release/xubuntu-6.06-desktop-i386.iso
2. Création de la variable (WORK) pointant vers le répertoire de travail
(ici : mylivecd à la racine de mon répertoire home)
export WORK=~/mylivecd mkdir -p $WORK
3. Montage de l'iso du liveCD
sudo mount -t iso9660 -o loop /repertoire vers/xubuntu-6.06-desktop-i386.iso /cdrom
4. Copie de l'image
Maintenant, on va copier l'intégralité de l'image vers un nouveau répertoire, lui réglé avec les permissions d'écriture, et pour finir, démontage de l'iso.
cd $WORK mkdir ubuntu-livecd cp -a /cdrom/. ubuntu-livecd chmod -R u+w ubuntu-livecd sudo umount /cdrom
5. Suppression des programmes pour Windows
Commençons à faire de la place. Le LiveCD original est fourni avec quelques programmes windows, on peut donc supprimer sans souci ce répertoire (95MB d'économisé) :
rm -rf $WORK/ubuntu-livecd/programs
6. Décompression de l'image
Les répertoires et fichiers du Live CD que vous pouvez voir dans $WORK/ubuntu-livecd/ sont nécessaires pour le boot du cd. Le système ubuntu est stocké dans un fichier image compressé $WORK/ubuntu-livecd/casper/filesystem.squashfs. Pour décompresser cette image et pouvoir travailler dessus pour la customisation, il faut le module squashfs. On va donc charger ce module, et monter l'image dans un nouveau répertoire $WORK/old
sudo modprobe squashfs mkdir $WORK/old sudo mount -t squashfs -o loop,ro $WORK/ubuntu-livecd/casper/filesystem.squashfs $WORK/old
Si vous regardez dans le répertoire $WORK/old, vous pouvez reconnaître le système de fichiers standard d'une Ubuntu.
7. Création de l'image
On va créer une image de 2 Go (taille maximum décompressée du LiveCD, ça nous permet de contrôler la taille de notre customisation sans risquer de dépasser la taille maximum) On crée donc un fichier de 2 Go :
sudo dd if=/dev/zero of=$WORK/ubuntu-fs.ext2 bs=1M count=2147
On le formate en EXT2 :
sudo mke2fs $WORK/ubuntu-fs.ext2
mke2fs va nous prévenir que ubuntu-fs.ext2 n'est pas disque réel, on clique sur yes. On crée un nouveau répertoire, qu'on lie au système de fichiers que l'on vient de créer :
mkdir $WORK/new sudo mount -o loop $WORK/ubuntu-fs.ext2 $WORK/new
On copie l'ancien système de fichiers afin de le modifier :
sudo cp -a $WORK/old/. $WORK/new
On peut maintenant démonter $WORK/old :
sudo umount $WORK/old
8. Chroot customisation du système
Il faut bien copier /etc/resolv.conf dans notre système de fichiers, sinon on n'aura pas accès au réseau, et le téléchargement sera donc impossible. On peut aussi copier le sources.list utilisé habituellement pour avoir accès au dépôts que vous utilisez habituellement.
sudo cp /etc/resolv.conf $WORK/new/etc/ sudo cp /etc/apt/sources.list $WORK/new/etc/apt/sources.list sudo mount -t proc -o bind /proc $WORK/new/proc sudo chroot $WORK/new /bin/bash
Nous sommes maintenant root du système de fichiers, on peut donc faire toutes les modifications désirées (apt-get remove, install…). Voir la liste des paquets supprimés et installés.
apt-get update apt-get remove...
On fini par un :
apt-get clean dpkg-reconfigure console-data # (Sélectionner le clavier français)
Une fois que l'on a fini la customisation, on sort du chroot :
exit
Le LiveCD ne monte pas automatiquement les partitions que vous avez sur votre disque local, il faut passer par l'utilitaire Système > Administration > Disques Si vous voulez qu'elles soient montée au boot du livecd, il faut utiliser ces scripts automounter / diskmounter disponible ici :
http://lenerve.free.fr/download/automounter.tar.gz
A modifier selon vos besoins, dans l'état il monte les partitions NTFS, FAT et HFS en readonly. La source est disponible dans l'archive.
sudo cp /rep ou est automounter/automounter $WORK/new/usr/bin sudo mkdir $WORK/new/local/share/diskmounter sudo cp /rep ou est automounter/diskmounter/diskmounter $WORK/new/local/share/diskmounter
Par défaut, les partitions détectées seront montées dans le répertoire /media/nomdelapartion Il faudra le rendre exécutable au démarrage dans un deuxième temps (cf point 12).
On finit de nettoyer avant de sortir du système.
sudo umount $WORK/new/proc sudo rm $WORK/new/etc/resolv.conf
On est de retour dans notre propre système.
9. Ultimes modifications
Tout d'abord, il faut régénérer le fichier manifest pour qu'il prenne en compte les modifications dans les paquets.
sudo chroot $WORK/new dpkg-query -W --showformat='${Package} ${Version}\n' > $WORK/ubuntu-livecd/casper/filesystem.manifest
Maintenant, il faut nettoyer l'espace libre sur le disque. En effet, même si nous avons enlevé des paquets, l'espace disque qu'ils occupaient conserve toujours les données. On n'a modifié que la TOC, il faut remplir l'espace avec des zéros afin de les supprimer complètement (il se peut que cela échoue en indiquant qu'il n'y a plus d'espace libre). Puis, on supprime le fichier zero.
sudo dd if=/dev/zero of=$WORK/new/dummyfile sudo rm $WORK/new/dummyfile
Ainsi les blocs de data sont remplis de zéros. Une fois compressé, tout cela ne tiendra sur quasiment rien.
10. Fabrication du système de fichiers compressé
sudo rm $WORK/ubuntu-livecd/casper/filesystem.squashfs cd $WORK/new sudo mksquashfs . $WORK/ubuntu-livecd/casper/filesystem.squashfs
Cela prend extrêmement de temps, soyez patient.
On peut maintenant démonter $WORK/new
cd $WORK sudo umount $WORK/new
Si vous voulez refaire une petite customisation esthétique, voir point 12, ne démontez pas la partition.
11. Fabrication du nouveau LiveCD
On regénère un nouveau hash MD5 afin qu'il réflète le nouveau contenu du CD.
cd $WORK/ubuntu-livecd sudo find . -type f -print0 |xargs -0 md5sum |sudo tee md5sum.txt
On fabrique la nouvelle ISO, ubuntu-new.iso:
cd $WORK sudo mkisofs -o customLivecd.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -r -V "CustomLiveCD" -cache-inodes -J -l ubuntu-livecd
Une fois que l'iso est crée, vous pouvez la tester en utilisant QEMU.
12. Ultimes customisations
Montez votre nouvelle iso avec qemu. Une fois que vous êtes dans le LiveCD, faites toutes les modifications que vous voulez (fond d'écran, raccourcis sur le bureau, programmes à lancer au démarrage). Une fois que vous avez fini, déloguez-vous en cochant la case "sauvegarde des données". Une fois que vous vous êtes delogué, passez en session console (CTRL + ALT + F1) et créez un TAR du dossier home/ubuntu.
sudo tar cvf fichierdesauvegarde.tar /home/ubuntu
Copiez le contenu de ce tar dans $WORK/new/etc/skel et reprenez à partir du point 9.
13. Francisation de l'iso
Pour ce faire, on peut utiliser ce script : http://lichota.net/~krzysiek/projects/ubuntu-livecd-customization/uck-1.1.tgz (dépend de Xdialog, à lancer en console avec un sudo)
14. Tester avec Qemu, graver l'iso
Tapez la commande
qemu -cdrom customLivecd.iso