LiveCD Remasterize

De Wiki LOGre
Aller à : navigation, rechercher
Langue : Français

Aujourd'hui, pour installer un système Linux, on utilise un LiveCD. Enfin, on devrait plutôt dire un 'LiveDVD', parce qu'il est de plus en plus rare que sa taille tienne sur un CD. De plus, on ne l'utilise plus guère sous forme de disque, il est en effet beaucoup plus simple de créer une clef USB bootable avec. Et comme la taille des clefs USB a beaucoup augmenté, il est désormais possible d'avoir une clef USB avec plusieurs LiveCDs dessus et de choisir au démarrage celui qu'on va utiliser. Le problème c'est que parfois, pour effectuer des opérations de maintenance, on doive jongler avec plusieurs LiveCDs pour trouver celui qui a la bonne version du bon outil, booter et rebooter.

Cette page décrit comment modifier un LiveCD basé sur Ubuntu/Kubuntu/Lubuntu/LinuxMint, etc.. afin de lui ajouter des logiciels ou lui en retirer. On dit aussi remastériser un LiveCD. Ceci peut être utile pour faire une 'Install Party' où l'on sera amené à installer et mettre à jour beaucoup de machines, ou tout simplement pour avoir une clef USB bootable avec ses outils préférés à jour, et dans sa langue natale.

Marc BERLIOUX, dernière mise à jour le 13 mars 2018.

Distributions

Le tableau ci-dessous indique les distributions qui marchent une fois modifiées selon ce tutoriel et celles qui ne fonctionnent pas ou mal

Distribution ISO Oui/Non Motif
Ubuntu 18.04 "Bionic Beaver" (Daily) bionic-desktop-amd64.iso Oui
LinuxMint 18.3 "Sylvia" linuxmint-18.3-cinnamon-64bit.iso Oui
LinuxMint 18.1 "Serena" linuxmint-18.1-cinnamon-64bit.iso Oui
LinuxMint 18 "Sarah" linuxmint-18-cinnamon-64bit.iso Non Wifi instable

Prérequis

Pour mener à bien la construction de l'image iso du futur LiveCD, il y a quelques conditions indispensables :

  • Avoir un compte avec les privilèges du super-utilisateur.
  • Une liaison Internet.
  • Une dizaine de gigaoctets de disque disponibles.
  • Et bien sûr, les outils pour le faire.

Des outils, il en faut assez peu et certains peuvent être déjà installés sur votre système.

  • Ouvrez un terminal.
  • Installez les outils en tapant :
sudo apt-get install genisoimage squashfs-tools rsync

Notez qu'avec une souris 3 boutons, vous pouvez copier/coller facilement toutes les lignes de commandes dans un terminal sous Linux. Il suffit pour ça de :

  • sélectionner la ligne avec le bouton gauche de la souris
  • coller la ligne avec le bouton du milieu

Si votre souris n'a que deux boutons, il est souvent possible de remplacer le clic du bouton du milieu par un clic simultané sur les deux boutons droit et gauche. C'est un peu plus périlleux. Dans tous les cas, relisez bien ce que vous avez sur la ligne de commande avant d'appuyer sur <entrée>.

Installation

  • Créez un dossier (ici on utilisera un dossier livecd, sous-dossier de notre dossier utilisateur), et placez vous dedans :
mkdir ~/livecd && cd ~/livecd
  • Téléchargez une image .iso du LiveCD à modifier. Ici celui de la distribution LinuxMint 18.1 :
wget -c http://linuxmint.efemef.ovh/stable/18.1/linuxmint-18.1-cinnamon-64bit.iso

C'est l'opération la plus longue, mais on n'aura pas à la répéter à chaque fois si on doit modifier le même LiveCD plusieurs fois.

Créez les sous-dossiers qui vont servir à la modification du système :

mkdir oldcd newcd

Pour éviter d'avoir à taper sudo et son mot de passe à chaque fois on va s'autoproclamer super-utilisateur :

sudo su

Montez l'image .iso du LiveCD à modifier, en lecture seule, dans le dossier oldcd :

mount -o loop,ro linuxmint-18.1-cinnamon-64bit.iso oldcd/

On ne pourra pas modifier directement oldcd qui est en lecture seule. Créez l'arborescence de la future image dans le dossier newcd :

rsync --exclude=/casper/filesystem.squashfs -a oldcd/ newcd

On décompresse à part l'archive squashfs et on la renomme :

unsquashfs oldcd/casper/filesystem.squashfs && mv squashfs-root workdir

Ça peut prendre un peu de temps, surtout sur une machine peu puissante..

Le dossier livecd contient donc maintenant 3 sous-dossiers :

livecd/
├── newcd      # arborescence du nouveau LiveCD
├── oldcd      # image iso d'origine montée en lecture seule
└── workdir    # arborescence de travail


Configuration

Pour utiliser le réseau dans l'arborescence de travail, il faut impérativement y ajouter les adresses des serveurs DNS. Ici les adresses IP (212.27.40.240 et 212.27.40.241) sont celles des DNS de free.fr. Remplacez les par celles de votre fournisseur au besoin.

echo -e "nameserver 212.27.40.240\nnameserver 212.27.40.241" > workdir/etc/resolv.conf

Il faudra aussi avoir accès aux périphériques du système hôte. Montez votre /dev dans l'arborescence de travail :

mount --bind /dev/ workdir/dev

La configuration de base est terminée, on va maintenant utiliser workdir comme nouvelle racine. On parle de 'chroot'. Chrootez vous dans l'arborescence de travail :

chroot workdir

Votre prompt a certainement changé, c'est normal. À partir de maintenant, vous travaillez comme utilisateur root dans le système en construction.

Réglages du système chrooté

Pour que le système chrooté fonctionne correctement il faut monter quelques arborescences supplémentaires :

mount -t proc none /proc && mount -t sysfs none /sys && mount -t devpts none /dev/pts

et définir quelques variables d'environnement :

export HOME=/root && export LC_ALL=C

L'environnement chrooté dans lequel on se trouve est maintenant utilisable et prêt à être modifié

Ajout-Suppression de Logiciels

Pour installer de nouveaux outils, il faut d'abord mettre à jour la liste des paquets. Ça permet aussi de vérifier que le réseau fonctionne correctement :

apt-get update

On ajoute les paquets désirés. Exemples :

apt-get install mc testdisk partimage clamav arj unrar dbview odt2txt
apt-get install language-pack-fr language-pack-kde-fr
apt-get install kate k3b kstars amarok
apt-get install gimp gimp-help-fr gimp-data-extras gimp-gap ufraw gimp-ufraw darktable
apt-get install inkscape scribus xsane
apt-get install firefox firefox-locale-fr filezilla
apt-get install thunderbird thunderbird-locale-fr enigmail
apt-get install vlc kdenlive audacity lame audex
apt-get install librecad meshlab qelectrotech

Quand on demande d'installer un paquet qui l'est déjà, il est mis à jour

Pour enlever des paquets on utilisera purge plutôt que remove, afin de supprimer aussi leurs fichiers de configuration.

Exemple, enlever 'simple-scan' qui ferait doublon avec 'xsane' que l'on vient d'installer :

apt-get purge simple-scan

Ou si on veut enlever à jamais le bouton-lien vers amazon du bureau de Ubuntu :

apt-get purge ubuntu-web-launchers

Si apt ne trouve pas tous les paquets, il est possible que ceux-ci se se trouvent dans les sections des dépôts 'universe' ou 'multiverse' et que ces sous dossiers ne soient pas configurés dans les sources des dépôts. Pour cela il faut les ajouter en fin de ligne dans /etc/apt/sources.list :

nano /etc/apt/sources.list

Faites <Ctrl>-o, <entrée>, <Ctrl>-x pour sauvegarder et quitter.

Exemple d'un sources.list modifié avec les dépôts 'universe' et 'multiverse' :

deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse

À chaque fois qu'on touchera à la liste des dépôts, on devra mettre à jour la liste des paquets :

apt-get update

Il est naturellement possible d'ajouter des logiciels provenant d'autres dépôts. Exemple pour KiCad 4 :

add-apt-repository --yes ppa:js-reynaud/kicad-4
apt-get update
apt-get install kicad

ou pour un Freecad daily-built :

add-apt-repository --yes ppa:freecad-maintainers/freecad-daily
apt-get update
apt-get install freecad-daily freecad-daily-doc 

On peut aussi télécharger et installer un paquet 'manuellement'. Exemple avec GoogleEarth :

cd root/
wget -c https://dl.google.com/dl/earth/client/current/google-earth-pro-stable_current_amd64.deb
dpkg -i google-earth-pro-stable_current_amd64.deb
rm google-earth-pro-stable_current_amd64.deb
cd ..

Si, en installant un paquet comme ci dessus avec dpkg, celui-ci se plaint que des dépendances ne sont pas satisfaites, il faut installer les paquets manquants simplement en tapant :

apt-get -f install

Nettoyage du Chroot

Une fois terminées les installations et suppressions de paquets, il faut nettoyer derrière nous, rétablir la configuration réseau d'origine, et démonter les arborescences :

apt-get clean
echo -n "" > /etc/resolv.conf
rm -rf /tmp/* ~/.bash_history
umount /proc
umount /sys
umount /dev/pts

Il est temps de sortir du chroot :

exit

Une fois revenu dans le système hôte, on libère /dev :

umount workdir/dev

Génération de l'image iso

Si l'on a déjà généré une image, il faut dégommer le squashfs existant :

rm newcd/casper/filesystem.squashfs

On compresse notre workdir dans l'arborescence du nouveau LiveCD sous forme d'une image squashfs :

mksquashfs workdir newcd/casper/filesystem.squashfs

On recalcule la taille du système de fichiers :

printf $(du -sx --block-size=1 workdir | cut -f1) > newcd/casper/filesystem.size

Si on veut renommer notre distribution :

nano newcd/README.diskdefines

Faites <Ctrl>-o, <entrée>, <Ctrl>-x pour sauvegarder et quitter.

On calcule ensuite les nouveaux hashs md5sums :

cd newcd
rm MD5SUMS
find -type f -print0 | xargs -0 md5sum | grep -v isolinux/boot.cat | tee MD5SUMS
cd ..

On génère enfin l'image iso finale de notre LiveCD (ajustez NOM_DU_CD(32 caractères max) et nom_image):

genisoimage -r -V “NOM_DU_CD” -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../nom_image.iso newcd

Si on a besoin d'ajouter d'autres paquets ou de modifier certaines choses dans le LiveCD, pas la peine de tout recommencer, il suffit de repartir de l'étape 'Configuration'



Nettoyage final

Une fois qu'on a atteint le but désiré, pour démonter l'iso d'origine et tout effacer :

umount oldcd/
cd ..
rm -rf livecd/

Dernier détail, avant d'abandonner les privilèges du super-utilisateur : l'image iso du nouveau LiveCD a été créée par le super-utilisateur et donc lui appartient. Pour vous la réapproprier, remplacez user par votre nom d'utilisateur et nom_image par celui que vous lui avez donné :

chown user:user nom_image.iso
exit

Voilà !, c'est fini.
Vous pouvez maintenant graver votre LiveCD sur un DVD ou le mettre sur une clef USB.

MultiSystem

MultiSystem est un logiciel libre sous licence GPL-V3 qui vous permet de créer facilement une clef USB contenant plusieurs LiveCDs

MultiSystem vend des clefs USB pré-installées, mais peut également être installé librement sur toute clef USB.