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, 5 avril 2017.

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

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 dans le dossier oldcd :

mount -o loop 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 audex audacity lame
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 :

apt-get purge simple-scan

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 

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 et nom_image):

mkisofs -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.
Au passage, vous pouvez créer facilement une clef USB contenant plusieurs LiveCDs avec l'excellent outil MultiSystem