{{tag>live_cd personnalisation}} ---- ====== Comment personnaliser son live CD Ubuntu ====== Dans ce tutoriel, nous vous expliquerons comment créer votre propre liveCD (ou liveDVD), en modifiant un liveCD ubuntu déjà existant afin qu'il corresponde à vos besoins. Vous pourrez par exemple installer les paquets que vous souhaitez, mettre dans le /home du liveCD les fichiers dont vous avez besoin, etc. ===== Méthodes assistées ===== Il existe plusieurs applications permettant de personnaliser votre liveCD : * [[:UCK]] * [[:Remastersys]] *[[ http://forum.ubuntu-fr.org/viewtopic.php?id=424373|ModCustom]] (plus optimisé pour Oneiric, évitez donc pour customiser Oneiric, j'essaie de faire une mise à jour dans quelques temps...) Il est recommandé d'utiliser la méthode manuelle ci-dessous pour des questions de fiabilité. ===== Méthode manuelle ===== ==== Prérequis ==== * Posséder une image CD (iso) d'Ubuntu Desktop. (l'[[:cd_ubuntu-fr|Edition Francophone]] par exemple) * Disposer d'environ 3Go d'espace libre sur votre Disque Dur. ==== Introduction : Généralités sur le liveCD ==== Comme vous le savez, un liveCD est un CD bootable, qui va charger un système Linux en mémoire vive. Cela permet de tester une distribution sans risquer de faire des dégâts sur les disques dur, par exemple.\\ Un liveCD Linux n'est donc rien d'autre qu'un système Linux classique, son but étant d'être en lecture seule et de ne pas tenir de place, il est compressé. Pour la compression, on utilise squashfs : un système de fichier (tel que ext3 ou reiserfs), qui ne permet que la lecture mais permet un gain de place très important.\\ Malheureusement, ce système seul ne permet pas de faire fonctionner un système Linux. On l'associe donc à un autre système de fichier, qui est entièrement placé en mémoire : ramfs.\\ Un dernier système de fichier permet d'associer les deux précédents : unionfs. Unionfs est utilisable grâce à l'initrd, qui permet de charger un mini-système en mémoire au boot, et d'agir sur le « vrai » système.\\ Le soft casper permet la mise en place du boot du liveCD a partir de l'initrd. ==== Extraction du système ==== On commence par extraire le squashfs de l'image ISO pour pouvoir lui apporter les modifications souhaitées.\\ Au cours du tutoriel, nous allons utiliser plusieurs dossiers. Créez-les avec les commandes suivantes (à passer dans votre terminal favori) : mkdir ~/livecd cd ~/livecd mkdir iso squashfs L'image ISO sera stockée dans le dossier iso, dans squashfs sera stocké un « vrai » système. === Copie de l'ISO === Il nous faut commencer par copier le contenu de l'image ISO sur le disque dur. * On va donc le monter : sudo mount -o loop ubuntu-desktop-xxx.iso /cdrom //Remplacez ubuntu-desktop-xxx.iso par le chemin de votre fichier ISO.// * Puis on copie son contenu dans le dossier iso : sudo cp -a /cdrom/. iso //l'option -a permet de conserver les droits des fichiers copiés// * Une fois celà fait, on peut le démonter : sudo umount /cdrom == Alternative n'utilisant pas de fichier ISO == On peut se passer d'une image ISO en utilisant l'utilitaire ([[:tutoriel:comment_installer_un_paquet|debootstrap]]) qui permet de télécharger les packages essentiels à Ubuntu. Cette méthode permet d'avoir la dernière version disponible avec les dernières mises à jour disponibles. Pour l'utiliser : sudo debootstrap --arch i386 hardy iso où iso est le répertoire allant accueillir les fichiers. Pour plus de détail sur cette méthode, voici un lien (en anglais): [[https://help.ubuntu.com/community/LiveCDCustomizationFromScratch]] === 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 plate-forme Windows. On peut donc supprimer sans souci ces répertoires FIXME //liste des fichiers à vérifier svp// ~/livecd$ cd iso ~/livecd/iso$ sudo rm -r bin pics autorun.inf usb-creator.exe wubi.exe ~/livecd/iso$ cd .. ~/livecd$ Remplacer ubuntu.ico par kubuntu.ico ou xubuntu.ico en fontion du fichier ISO téléchargé === Copie du squashfs === La version 4 de squashfs n'étant pas rétrocompatible avec la version 3.3 présente dans les noyaux Linux < 2.6.31, toutes les modifications touchant au squashfs pour Karmic Koala et supérieur devront être faîtes à partir d'un système hôte disposant d'un noyau Linux >= 2.6.31. Nous allons maintenant copier le squashfs (le système de fichier de notre liveCD) sur le disque dur afin de pouvoir le modifier. [[apt://squashfs-tools | apt-get install squashfs-tools]] si le type de fichier squashfs n'est pas reconnu. * On le monte de la même manière que n'importe quel système de fichier : ~/livecd$ sudo mount -t squashfs -o loop iso/casper/filesystem.squashfs /cdrom //En faisant ''ls /cdrom'', on observe l'arborescence de notre squashfs, qui est la même que celle de n'importe quel système linux : /etc ; /boot, etc.// * Comme nous l'avons dit au début, le squashfs est un système de fichier sur lequel on ne peut écrire. Il est donc impossible de modifier directement le squashfs que l'on vient de monter. Il faut le copier dans un autre emplacement, le dossier squashfs, que nous avons créé dans ce but : ~/livecd$ sudo cp -av /cdrom/. squashfs //Attention, cette opération prend un peu de temps.// * Pour finir, on le démonte : sudo umount /cdrom ==== Modification du système ==== Pour modifier le système que l'on vient de copier, nous utilisons alors un chroot. Pour en savoir plus, consultez man chroot. Petite parenthèse sur le chroot : En gros un chroot c'est un système dans le système. On va se loguer « dans » le chroot, et se retrouver dans un nouvel environnement, qui utilise les capacités physiques du système hôte (exemple : le noyau utilisé par le chroot, est le noyau du système hôte, en l'occurrence le noyau de votre Ubuntu). Nous pouvons ainsi ajouter supprimer des paquets, ainsi que mettre à jour le système disponible dans l'ISO de base. Au choix et bon vouloir de l'utilisateur. === Chroot === Ici nous allons donc faire un chroot dans le système que nous avons copié à partir du squashfs, ceci afin de pouvoir le modifier à notre convenance. * quelques réglages préalables pour que le chroot fonctionne correctement : ~/livecd$ sudo mount --bind /proc squashfs/proc ~/livecd$ sudo mount --bind /sys squashfs/sys ~/livecd$ sudo mount -t devpts none squashfs/dev/pts //ces deux lignes permettent d'utiliser les informations du système hôte// En cas d'erreur avec //apt-get update//: # apt-get update [...] 98% [Working]FATAL -> Could not set non-blocking flag Bad file descriptor E: Method http has died unexpectedly! Il peut être utile de mettre : ~/livecd$ sudo mount --bind /dev squashfs/dev En cas d'erreur "Can not write log, openpty() failed (/dev/pts not mounted?)" , monter aussi : sudo mount -B /dev/pts squashfs/dev/pts Peut aussi servir dans le cas d'erreurs remontées par apt-get (au moins avec Maverick). En cas d'erreur Failed to open connection to "system" message bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory il peut être utile de mettre : sudo mount --bind /var/run/dbus/ squashfs/var/run/dbus/ ~/livecd$ sudo cp /etc/resolv.conf squashfs/etc/resolv.conf //afin d'utiliser la connexion réseau du système hôte// ~/livecd$ sudo cp /etc/hosts squashfs/etc/hosts //si vous voulez pouvoir lancer un serveur PostgreSQL ou un LAMP dans le chroot (il faudra préalablement éteindre les serveurs sur la machine hôte pour éviter les conflits de port)// ~/livecd$ sudo cp /etc/apt/sources.list squashfs/etc/apt/sources.list //pour utiliser votre sources.list personnel// N'utilisez cette commande que si le liveCD que vous modifiez et le système à partir duquel vous le modifiez sont de la même version d'Ubuntu. Dans le cas contraire, vous n'installeriez pas sur le liveCD les bonnes versions des paquets. ~/livecd$ gksudo gedit squashfs/etc/apt/sources.list //éditez le fichier sources.list si besoin pour activer/désactiver certains dépôts// * Pour finir, on peut entrer dans le chroot : ~/livecd$ sudo chroot squashfs === Exemples de modifications === Faites attention à la taille ! Ne soyez pas trop gourmand, si la taille d'un CD (700 Mo) est dépassée, vous ne le saurez malheureusement qu'à la reconstruction du CD . Il est toutefois possible de faire un liveDVD, sur lequel vous aurez beaucoup plus d'espace, voire même un liveUSB. == Mise à jour du système == apt-get update apt-get dist-upgrade apt-get install console-data # (sélectionner le clavier français) //pas besoin de sudo, vous êtes en root//\\ Attention : la commande apt-get dist-upgrade peut amener une mise à jour du kernel, ce qui vous obligera à une manipulation supplémentaire à la fin. == Installation / Désinstallation de paquets == * Installez les paquets que vous souhaitez, à l'aide de la commande ''apt-get install *nom du paquet*'' * Désinstallez les paquets qui vous sont inutiles : dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less //Cette commande vous renvoie la liste des paquets installés, classés par taille.// Supprimez ceux qui ne vous servent à rien : apt-get remove --purge *nom du paquet* Supprimer des paquets peut, par inadvertance, désinstaller le paquet **ubuntu-desktop** qui est nécessaire au moment d'une mise à niveau de la distribution. Ce paquet devrait donc figurer sur tout liveCD destiné à être distribué à un certain nombre d'utilisateurs de différents niveaux de compétence. Il est donc bon, après avoir fini de faire les modifications, d'utiliser la commande **apt-get install ubuntu-desktop** pour s'assurer que le paquet est toujours installé. == Sortie du chroot == D'autres modifications peuvent se faire à l'extérieur du chroot. * On nettoie le système : apt-get clean //Supprime les .deb téléchargés via apt-get// * On sort du chroot : umount /sys umount /proc umount /dev rm /etc/resolv.conf rm /etc/hosts exit Si umount /proc indique une erreur, essayez ceci : umount -lf /proc == Insérer des fichiers == * Dans le répertoire utilisateur L'utilisateur par défaut du système chargé lorsque l'on utilise le liveCD n'existe pas dans le système compressé. Il est créé par casper pendant le boot. casper copie les fichiers se trouvant dans /etc/skel dans le dossier utilisateur qu'il crée au boot.\\ Placez donc tous les fichiers que vous voulez dans ce dossier, ils apparaîtront dans le répertoire personnel après le boot. ~livecd$ sudo cp *votre fichier* squashfs/etc/skel Nous allons pouvoir utiliser cette propriété un peu plus tard pour modifier l'apparence du bureau et utiliser par défaut des thèmes personnalisés. * Dans le système Vous pouvez recopier des fichiers au même emplacement que sur votre propre système, par exemple : * Des thèmes ~/livecd$ sudo cp -r /usr/share/themes/* squashfs/usr/share/themes * des fonds d'écran ~/livecd$ sudo cp -r /usr/share/backgrounds/* squashfs/usr/share/backgrounds/ == Rendre le boot explicite == Il est possible de supprimer l'option "quiet" du boot, afin que toutes les étapes soient détaillées.\\ Éditez le fichier isolinux.cfg qui se trouve dans le dossier iso : ~/livecd$ gksudo gedit iso/isolinux/isolinux.cfg Supprimez toutes les occurrences du mot "quiet".\\ Vous pouvez également supprimer le mot "splash", vous supprimerez ainsi le logo Ubuntu ainsi que la barre de chargement.\\ Enregistrez et quittez. == Utiliser le français par défaut == ~/livecd$ echo "fr" | sudo tee iso/isolinux/lang == Modifier l'utilisateur par défaut == L'utilisateur par défaut (ubuntu) est créé lors du boot par le programme casper. Pour modifier celui-ci, Il faut : - modifier les fichiers de configuration de casper - régénérer le fichier initrd dans le squashfs (en chroot) * Modifier le nom de l'utilisateur ~/livecd$ gksudo gedit squashfs/etc/casper.conf Ce fichier est court et explicite : > # This file should go in /etc/casper.conf > # Supported variables are: > # USERNAME, USERFULLNAME, HOST, BUILD_SYSTEM > > export USERNAME="ubuntu" > export USERFULLNAME="Live session user" > export HOST="ubuntu" > export BUILD_SYSTEM="Ubuntu" Modifiez les valeurs à votre convenance. Par défaut, cet utilisateur possède les droits d'administration sans qu'aucun mot de passe ne soit requis. Si vous voulez conserver cette propriété, ne modifiez que la première partie > export USERNAME="mon_utilisateur" > export USERFULLNAME="mon_utilisateur Live CD" > export HOST="ubuntu" > export BUILD_SYSTEM="Ubuntu" Et passez directement à la section suivante : régénération du fichier initrd Si vous voulez modifier ce comportement, éditez toutes les occurrences ubuntu et remplacez-les par mon_utilisateur > export USERNAME="mon_utilisateur" > export USERFULLNAME="mon_utilisateur Live CD" > export HOST="mon_utilisateur" > export BUILD_SYSTEM="mon_utilisateur" Et modifiez le mot de passe. * Modifier le mot de passe Commencez par créer un mot de passe crypté : //le mot de passe étant conservé dans un fichier accessible en lecture, il est nécessaire de le crypter pour préserver sa confidentialité// mkpasswd -s monmotdepasse U5dDh03hz1L6. Votre mot de passe est ici "monmotdepasse", il sera conservé sous la forme "U5dDh03hz1L6." dans le fichier de configuration. Et insérez-le dans le script de création de l'utilisateur ~/livecd$ gksudo gedit squashfs/usr/share/initramfs-tools/scripts/casper-bottom/10adduser Repérez la section suivante : > set passwd/root-password-crypted * > set passwd/user-password-crypted U6aMy0wojraho Insérez votre nouveau mot de passe : > set passwd/root-password-crypted U5dDh03hz1L6. > set passwd/user-password-crypted U5dDh03hz1L6. * Régénération du fichier initrd Pour que ces modifications soient prises en compte, il est impératif de recréer le fichier initrd qui est chargé au boot. Cette étape est réalisée en chroot (à l'intérieur du système du liveCD). ~/livecd$ sudo chroot squashfs update-initramfs -k all -u exit Ceci n'est qu'un aperçu des modifications que vous pouvez faire, il serait impossible de les lister toutes. ==== Reconstruction du Live CD ==== Maintenant que le système correspond à vos besoins, nous allons recréer un liveCD à partir de votre système personnalisé. === Reconstruction du squashfs === * Pour cette étape, nous aurons besoin du paquet **[[apt://squashfs-tools|squashfs-tools]]** : sudo apt-get install squashfs-tools * On efface l'ancien squashfs : ~livecd$ sudo rm iso/casper/filesystem.squashfs * Puis on crée le nouveau : Tout d'abord, il faut régénérer le fichier manifest pour qu'il prenne en compte les modifications dans les paquets. Attention, [[http://forum.ubuntu-fr.org/viewtopic.php?pid=4034692#p4034692|voir ceci]] si vous ne voulez pas d'Ubiquity ni gParted sur session installée. ~/livecd$ sudo chmod a+w iso/casper/filesystem.manifest ~/livecd$ sudo chroot squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > iso/casper/filesystem.manifest ~/livecd$ sudo chmod go-w iso/casper/filesystem.manifest ~/livecd$ sudo chmod a+w iso/casper/filesystem.manifest-desktop ~/livecd$ sudo chroot squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > iso/casper/filesystem.manifest-desktop ~/livecd$ sudo chmod go-w iso/casper/filesystem.manifest-desktop Il faut maintenant compresser le système de fichier du LiveCD pour pouvoir le mettre dans une image CD. ~/livecd$ cd squashfs ~/livecd/squashfs$ sudo mksquashfs . ../iso/casper/filesystem.squashfs -info //pour Hardy cette commande paraît plus apropriée, mais la commande précédente fonctionne pour Intrepid et supérieur :// ~/livecd/squashfs$ sudo mksquashfs . ../iso/casper/filesystem.squashfs -nolzma -info Comme toute compression, cela prend beaucoup de ressources et peut prendre du temps. On rajoute -info à la fin qui équivaut à un verbose... pratique pour voir l'avancement de la compression (la barre de progression reste visible) et aussi pour voir ce qui pourrait éventuellement bloquer. Une fois la procédure terminée, la taille de votre fichier s'affiche dans le terminal, vous savez donc si vous avez dépassé la taille maximale ou pas. Si c'est le cas, supprimez des applications/fichiers dans le système, et recommencez. === Création de l'ISO === * Si le noyau a été mis à jour, vous avez changé l'usplash ou que vous avez modifié le compte utilisateur, il va falloir remplacer deux fichiers essentiels sur l'image disque, que l'on trouve dans ~/livecd/iso/casper : vmlinuz et initrd.lz On les remplace par les fichiers vmlinuz-* et initrd-img* que l'on trouve dans le dossier ~livecd/squashfs/boot (* représente la version du noyau à jour) ~livecd$ sudo cp squashfs/boot/vmlinuz-2.6* iso/casper/vmlinuz ~livecd$ sudo cp squashfs/boot/initrd.img-2.6* iso/casper/initrd.lz * On régénère un nouveau hash MD5 afin qu'il reflète le nouveau contenu du CD. ~livecd$ cd iso ~livecd/iso$ sudo bash -c "find . -path ./isolinux -prune -o -type f -not -name md5sum.txt -print0 | xargs -0 md5sum | tee md5sum.txt" ~livecd/iso$ cd .. C'est terminé, il ne reste plus qu'à reconstruire une image ISO : ~/livecd$ 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 Cette commande crée un fichier ISO dans le répertoire courant, ~/livecd/custom-live-cd-i386.iso ==== Modifications de la configuration du compte utilisateur ==== Votre liveCD est prêt à l'emploi. Comme indiqué brièvement dans la section Modifications, il est possible de rajouter des fichiers dans le répertoire utilisateur. Cela est aussi valable pour les fichiers de configuration, nous allons donc exploiter cette possibilité pour modifier les réglages par défaut du compte utilisateur. Il est nécessaire de démarrer le CD, en le gravant, ou de préférence en utilisant un système de virtualisation, comme, par ordre de préférence, [[virtualbox]], [[vmware_server|vmware]] ou [[qemu]]. Une fois démarré, procédez à toutes les modifications requises, comme appliquer les thèmes rajoutés sur le CD, changer la page d'accueil de firefox ou lui rajouter des modules complémentaires, remanier les menus et la présentation de gnome-panel etc... Quand vous êtes satisfaits du résultat, ouvrez nautilus et remontez dans l'arborescence au niveau de /home. Créez une archive de votre répertoire utilisateur (clic droit > créer une archive) et sauvegardez-la par email ou par FTP. Vous pouvez maintenant éteindre la machine virtuelle. Récupérez l'archive et décompressez-la, par exemple dans ~livecd/profil Vous devez maintenant recopier les fichiers de cette archive dans le répertoire /etc/skel du squashfs. cd livecd ~/livecd$ sudo cp -r profil/. squashfs/etc/skel ~/livecd$ sudo chown -R root:root squashfs/etc/skel Vérifiez que les fichiers sont au bon emplacement avec ls. Vous devez voir les fichiers de configuration sous cette forme : ~/livecd$ ls -la squashfs/etc/skel ... drwxr-xr-x 2 root root 304 2008-03-21 08:25 .fontconfig drwx------ 4 root root 96 2008-03-21 08:25 .gconf drwx------ 2 root root 80 2008-03-21 08:25 .gconfd drwxr-xr-x 4 root root 112 2008-03-21 08:25 .gnome drwx------ 9 root root 272 2008-03-21 08:25 .gnome2 drwx------ 2 root root 48 2008-03-21 09:15 .gnome2_private drwxr-xr-x 2 root root 88 2008-03-21 08:25 .gstreamer-0.10 ... Si tout est OK, il ne reste qu'à recréer une image avec ce nouveau contenu. Recommencez à partir de [[#Reconstruction du liveCD]]. Au prochain démarrage de l'image, les fichiers de configuration seront installés et pris en compte. ===== Liens ===== * [[https://help.ubuntu.com/community/LiveCDCustomization]] * [[installation:custom_livecd_gnome]] * [[http://liveusb.info/dotclear/|Le script de frafa pour créer/customiser des liveCD/USB]] discuté sur ce [[http://forum.ubuntu-fr.org/viewtopic.php?id=276821|forum]] * [[http://forum.ubuntu-fr.org/viewtopic.php?id=424373 |Une solution pour personnaliser facilement viso iso de liveCD (Ubuntu/Kubuntu/Xubuntu/lubuntu/Edubuntu/...)]] * [[:projets:traduction_live_cd#iso_a_creer|Méthodes utilisées pour la création des Editions Francophones d'Ubuntu]] * [[http://forum.ubuntu-fr.org/viewtopic.php?id=360408| script de smo pour créer/customiser/cloner des distribs avec chroot graphique et export sur usb/iso]] ---- //Contributeurs : Elessor, [[utilisateurs:traaf|traaf]], Furious-therapy, Eric Buist, Gpocentek ([[projets:ecole|classroom Ubuntu-fr]] le 5/07/2007)//