Ceci est une ancienne révision du document !
Inroduction
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
Tutoriel
Prérequis
Il nous faut les paquets suivants : squashfs-tools mkisofs xdialog et qemu pour tester et faire les finalisations
Installez les paquets squashfs-tools mkisofs xdialog
Finalement, assurez vous d'avoir environ 5 Go de disponible.
Télécharger le liveCD
Pour télécharger la version 7.04 de Ubuntu :
wget http://fr.releases.ubuntu.com/7.04/ubuntu-7.04-desktop-i386.iso
Pour télécharger la version 7.04 de Kubuntu :
wget http://fr.releases.ubuntu.com/kubuntu/7.04/kubuntu-7.04-desktop-i386.iso
Pour télécharger la version 7.04 de Xubuntu :
wget http://cdimage.ubuntu.com/xubuntu/releases/7.04/release/xubuntu-7.04-desktop-i386.iso
Création d'une variable pointant vers le répertoire de travail
On considère que le répertoire de travail sera le répertoire mylivecd à la racine de mon répertoire home. Pour travailler plus facilement, on va créer une variable d'environnement pointant vers le chemin /home/monlogin/mylicecd.
export WORK=~/mylivecd mkdir -p $WORK
Le ~ est un raccourci pointant vers /home/monlogin.
Montage de l'ISO du liveCD
Il va falloir maintenant monter l'image du LiveCD pour pouvoir le manipuler, pour cela on va utiliser la commande mount en spécifiant le répertoire /cdrom/ pour point de montage.
sudo mount -t iso9660 -o loop /repertoire vers/monimagelivecd.iso /cdrom
Copie de l'image
Maintenant, on va copier l'intégralité de l'image vers le répertoire de travail créer précédemment (en utilisant la variable WORK), lui mettre les droits d'écriture, et pour finir, démonter l'ISO.
cd $WORK mkdir ubuntu-livecd cp -a /cdrom/. ubuntu-livecd chmod -R u+w ubuntu-livecd sudo umount /cdrom
Suppression des programmes pour Windows
Commençons à faire de la place. Le LiveCD original est fourni avec quelques programmes Windows permettant de promouvoir Ubuntu quand on utilise le LiveCD sur une plateforme Windows.
On peut donc supprimer sans souci ce répertoire (95MB d'économisé)
rm -rf $WORK/ubuntu-livecd/programs
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 personnalisation, 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 reconnaitre le système de fichiers standard d'une Ubuntu.
Création de l'image
On va créer une image de 2 Go (taille maximum décompressée du LiveCD), ceci nous permettra de contrôler la taille de notre personnalisation 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 seek=2146 count=1
On formate l'image précédemment créee en ext2 :
sudo mke2fs $WORK/ubuntu-fs.ext2
mke2fs va nous prévenir que ubuntu-fs.ext2 n'est pas disque réel (c'est une image), on clique sur yes. On crée un nouveau répertoire, et on monte cette nouvelle image dedans :
mkdir $WORK/new sudo mount -o loop $WORK/ubuntu-fs.ext2 $WORK/new
On copie l'ancien système de fichiers (se trouvant dans le répertoire old) dans le nouveau afin de le modifier :
sudo cp -a $WORK/old/. $WORK/new
On peut maintenant démonter $WORK/old :
sudo umount $WORK/old
Chroot personnalisation 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 connecté en root (grâce au chroot) au système de fichiers du LiveCD. On peut donc faire toutes les modifications désirées (apt-get remove, install…). Voir la liste des paquets supprimés et installés.
On commence donc par la mise à jour des programme installé dans le LiveCD :
apt-get update
Et si on le souhaite, on supprime ou on installe les programme de nos choix.
On fini par un :
apt-get clean dpkg-reconfigure console-data # (Sélectionner le clavier français)
Finalement, on peut mettre le LiveCD en français. Pour ce faire, on télécharge ce ce script : http://lichota.net/~krzysiek/projects/ubuntu-livecd-customization/uck-1.1.tgz
Et on l'exécute en console avec les droit d'administration (avec un sudo).
Une fois que l'on a fini la personnalisation, on sort du chroot :
exit
Le LiveCD ne monte pas automatiquement les partitions que vous avez sur votre disque local, il faut passer par 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 /repertoire ou est automounter/automounter $WORK/new/usr/bin sudo mkdir $WORK/new/local/share/diskmounter sudo cp /repertoire 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 plus loin dans le tutoriel).
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.
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
Fabrication du système de fichiers compressé
Il faut maintenant compressé le système de fichier du LiveCD pour pouvoir le mettre dans une image CD.
sudo rm $WORK/ubuntu-livecd/casper/filesystem.squashfs cd $WORK/new sudo mksquashfs . $WORK/ubuntu-livecd/casper/filesystem.squashfs
Cela dure extrêmement longtemps, soyez patient.
On peut maintenant démonter $WORK/new
cd $WORK sudo umount $WORK/new
Si vous voulez refaire une petite personnalisation esthétique, (détaillé plus loin), ne démontez pas la partition.
Fabrication du nouveau LiveCD
On régénère un nouveau hash MD5 afin qu'il reflè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 portant le nom 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 le fichier ISO crée, vous pouvez la tester en utilisant qemu.
Modification esthétique du LiveCD
Montez votre nouvelle ISO avec qemu.
qemu -cdrom ubuntu-new.iso
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
Quittez qemu puis copiez le contenu de ce tar dans $WORK/new/etc/skel et refaite une image ISO en reprenant à partir de ce point.