LiveCD Remasterize

De Wiki LOGre
Aller à la navigation Aller à la recherche
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 une image iso de LiveCD basé sur Ubuntu (Ubuntu, Kubuntu, Xubuntu, Lubuntu, LinuxMint) afin de lui ajouter des logiciels ou de 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 16 février 2022.

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
LinuxMint 20.3 "Una" - Cinnamon (64-bit) linuxmint-20.3-cinnamon-64bit.iso Oui
LinuxMint 20.1 "Ulyssa" - Cinnamon (64-bit) linuxmint-20.1-cinnamon-64bit.iso Oui
LinuxMint 20 "Ulyana" - Cinnamon (64-bit) linuxmint-20-cinnamon-64bit.iso Oui
Ubuntu "Focal Fossa" ubuntu-20.04-desktop-amd64.iso Oui
Kubuntu "Bionic Beaver" bionic-desktop-amd64.iso Oui
Linuxmint 19 "Tara" linuxmint-19-cinnamon-64bit-v2.iso Oui
Ubuntu 18.04 "Bionic Beaver" 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 est assez souhaitable de travailler avec un système Linux déjà basé sur Ubuntu, ainsi les outils nécessaires seront les mêmes. Il y a aussi 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 et copiez la dans votre dossier 'livecd'. Vous pouvez trouver les images des distributions basées sur Ubuntu (Ubuntu, Kubuntu, Lubuntu, Xubuntu) ici :

http://cdimage.ubuntu.com/

Celles de LinuxMint sont accessibles ici :

https://mirror.crexio.com/linuxmint/isos/

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 (Modifiez 'nom_du_fichier.iso' dans la ligne ci-dessous pour qu'il corresponde à celui de votre image iso) :

mount -o loop,ro nom_du_fichier.iso oldcd/

On ne pourra pas modifier directement oldcd qui est en lecture seule, du coup on crée 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 configurer les adresses des serveurs DNS de votre Fournisseur d'Accès Internet (FAI). Ci-dessous la ligne de commande à taper pour les adresses IP 212.27.40.240 et 212.27.40.241 des DNS primaire et secondaire 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

Si vous ne connaissez pas par coeur les DNS de votre fournisseur (ceux-ci peuvent changer avec le temps), recherchez les plus récents sur l'Internet. On trouve aussi des pages Web qui regroupent ceux des principaux FAI comme celle-ci :

https://www.malekal.com/liste-des-serveurs-dns-des-principaux-fai/


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 gimp-plugin-registry darktable hugin
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 audacity lame twolame flac kdenlive
apt-get install freecad librecad meshlab qelectrotech

Notes :

  • 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

Ajout/Modification des dépôts

Si apt ne trouve pas tous les paquets, il est possible que ceux-ci se se trouvent dans d'autres sections, comme les dépôts 'universe' ou 'multiverse', 'backports' ou 'partner' 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/ focal main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse

les branches backports et partner :

deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal partner

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

apt-get update

Il est naturellement possible d'ajouter des logiciels provenant d'autres dépôts, quand on veut par exemple avoir la toute dernière version. Voici pour KiCad 6 :

add-apt-repository --yes ppa:kicad/kicad-6.0-releases
apt update
apt install --install-recommends kicad
# If you want demo projects
apt install kicad-demos

ou pour un Freecad daily-built (frais du jour..) :

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


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 ..

Si vous en avez définitivement terminé avec la remastérization vous pouvez supprimer toute l'arborescence livecd/

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.