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.
Il existe plusieurs applications permettant de personnaliser votre liveCD :
sudo apt-get install -y squashfs-tools schroot genisoimage xorriso usb-creator-gtk
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 à partir de l'initrd.
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é le « vrai » système live.
Il nous faut commencer par copier le contenu de l'image ISO sur le disque dur.
wget https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso
sudo mount -o loop ubuntu-18.04.6-desktop-amd64.iso /mnt
cp -av /mnt/. iso
sudo umount /mnt
Nous allons maintenant copier le squashfs (le système de fichier de notre liveCD) sur le disque dur afin de pouvoir le modifier.
sudo mount -t squashfs -o loop iso/casper/filesystem.squashfs /mnt
cp -av /mnt/. squashfs
Attention, cette opération prend un peu de temps.
sudo umount /mnt
Maintenant que nous avons notre système dans le dossier ~/livecd/squashfs
,
nous allons pouvoir le modifier à notre guise. Mais comment utiliser les logiciels
qui y sont présents, pour travailler proprement dessus ? C'est là que le chroot intervient.
~/livecd/squashfs
), en utilisant le noyau du système
hôte (votre jolie Ubuntu à vous chroot: failed to run command ’/bin/bash’: Exec format error
Vous pourrez modifier votre système hébergé (presque) comme s'il était installé en dur !
sudo mount --bind /proc squashfs/proc sudo mount --bind /sys squashfs/sys
Ces lignes permettent d'utiliser les informations du système hôte
apt-get
, il peut être utile de mettre :
sudo mount --bind /dev squashfs/dev sudo mount --bind /dev/pts squashfs/dev/pts
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 mkdir -p squashfs/var/run/dbus/ sudo mount --bind /var/run/dbus/ squashfs/var/run/dbus/
Failed to open connection to "system" message bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
il peut être utile de mettre :
sudo mkdir -p squashfs/run/dbus/ sudo mount --bind /run/dbus/ squashfs/run/dbus/
sudo cp /etc/resolv.conf squashfs/etc/resolv.conf
sudo cp /etc/hosts squashfs/etc/hosts
sudo cp /etc/apt/sources.list squashfs/etc/apt/sources.list
~/iso/squashfs/etc/apt/sources.list
et ~/iso/squashfs/etc/apt/sources.list.d/
pour rajouter des dépôts :sudo nano squashfs/etc/apt/sources.list
xhost +
Sans oublier une fois fini d'enlever cette autorisation avec :
xhost -
Pour finir, on peut entrer dans le chroot :
sudo chroot squashfs
sudo
, vous êtes connectés
en Root (super-utilisateur).
Vous pouvez, si vous avez lancé xhost +
,
lancer les applications graphiques présentes dans le LiveCD.
apt -y remove linux-generic-hwe-18.04 linux-headers-generic-hwe-18.04 linux-image-generic-hwe-18.04 linux-signed-generic-hwe-18.04 apt -y purge language-pack-* mkdir -p /etc/apt/keyrings/ wget https://packages.mozilla.org/apt/repo-signing-key.gpg -O /etc/apt/keyrings/packages.mozilla.org.asc echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" > /etc/apt/sources.list.d/mozilla.list cat > /etc/apt/preferences.d/firefox-deb-nosnap <<EOF Package: firefox* Pin: release o=Ubuntu* Pin-Priority: -1 Package: * Pin: origin packages.mozilla.org Pin-Priority: 1000 EOF apt update apt -y dist-upgrade apt -y install --reinstall language-pack-fr \ language-pack-fr-base \ language-pack-gnome-fr \ language-pack-gnome-fr-base apt -y install --reinstall firefox-l10n-fr apt -y install --reinstall hyphen-fr apt -y install --reinstall ibus-m17n \ wfrench \ mythes-fr \ libreoffice-l10n-fr \ myspell-fr \ libreoffice-help-fr \ gimp-help-fr apt -y install --reinstall hunspell-fr apt -y install --reinstall thunderbird-locale-fr \ fonts-arphic-ukai \ ibus-mozc \ locales-all \ linux-headers-5.4.0-84-generic \ linux-hwe-5.4-headers-5.4.0-84 \ linux-image-5.4.0-84-generic \ linux-modules-5.4.0-84-generic \ linux-modules-extra-5.4.0-84-generic \ ubuntu-desktop \ ubiquity-frontend-gtk \ casper \ vlc \ ffmpeg \ playonlinux locale-gen update-locale LANG=fr_FR.UTF-8 apt -y install console-data # Sélectionner le clavier français dpkg-reconfigure keyboard-configuration dpkg-reconfigure tzdata
apt install nom_du_paquet
dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less
apt-get purge //nom_du_paquet//
gsettings get com.canonical.Unity.Launcher favorites #Pour connaître la liste actuelle echo "[com.canonical.Unity.Launcher] favorites=['nautilus-home.desktop', 'firefox.desktop','ubuntu-software-center.desktop', 'otherapp1.desktop' 'otherapp2.desktop']" >/usr/share/glib-2.0/schemas/10_local-unity-launcher.gschema.override glib-compile-schemas /usr/share/glib-2.0/schemas/
apt-get install bleachbit
apt-get install synaptic
apt-get clean
rm -r /var/crash/*
rm -r /var/cache/*
D'autres modifications peuvent se faire à l'extérieur du chroot.
exit
sudo umount -lf squashfs/sys sudo umount -lf squashfs/proc sudo umount -lf squashfs/dev/pts sudo umount -lf squashfs/dev sudo umount -lf squashfs/var/run/dbus/ sudo umount -lf squashfs/run/dbus/ sudo rm -f squashfs/etc/resolv.conf sudo rm -f squashfs/etc/hosts
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.
sudo cp *votre fichier* squashfs/etc/skel
Nous allons pouvoir utiliser cette technique un peu plus tard pour modifier l'apparence du bureau et utiliser 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 :
sudo cp -r /usr/share/themes/* squashfs/usr/share/themes
sudo cp -r /usr/share/backgrounds/* squashfs/usr/share/backgrounds/
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 :
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.
echo "fr" | sudo tee iso/isolinux/lang
L'utilisateur par défaut (ubuntu) est créé lors du boot par le programme casper. Pour modifier celui-ci, Il faut :
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, FLAVOUR
export USERNAME="ubuntu"
export USERFULLNAME="Live session user"
export HOST="ubuntu"
export BUILD_SYSTEM="Ubuntu"
# USERNAME and HOSTNAME as specified above won't be honoured and will be set to
# flavour string acquired at boot time, unless you set FLAVOUR to any
# non-empty string.
# export FLAVOUR="Ubuntu"
Modifiez les valeurs à votre convenance.
Si vous voulez conserver cette propriété, ne modifiez que la première partie ainsi que la valeur de la variable FLAVOUR
export USERNAME="mon_utilisateur"
export USERFULLNAME="mon_utilisateur Live CD"
export HOST="ubuntu"
export BUILD_SYSTEM="Ubuntu"
# USERNAME and HOSTNAME as specified above won't be honoured and will be set to
# flavour string acquired at boot time, unless you set FLAVOUR to any
# non-empty string.
export FLAVOUR="mon_ubuntu_personnalise"
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, modifiez la valeur de FLAVOUR
export USERNAME="mon_utilisateur"
export USERFULLNAME="mon_utilisateur Live CD"
export HOST="mon_utilisateur"
export BUILD_SYSTEM="mon_utilisateur"
# USERNAME and HOSTNAME as specified above won't be honoured and will be set to
# flavour string acquired at boot time, unless you set FLAVOUR to any
# non-empty string.
export FLAVOUR="mon_ubuntu personnalise"
Et modifiez 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.
awk -F: '$3 == 999' /etc/passwd
Et modifiez les UID des utilisateurs trouvés:
usermod -u 500 <utilisateur_problematique_1> usermod -u 501 <utilisateur_problematique_2>
Par exemple, l'installation des additions invités de virtualbox créé un utilisateur vboxadd pouvant avoir l'uid 999.
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 -u -k all exit
Ceci n'est qu'un aperçu des modifications que vous pouvez faire, il serait impossible de les lister toutes.
Maintenant que le système correspond à vos besoins, nous allons recréer un liveCD à partir de votre système personnalisé.
sudo chmod a+w iso/casper/filesystem.manifest sudo chroot squashfs dpkg-query -W --showformat='${Package} ${Version}\n' >iso/casper/filesystem.manifest sudo chmod go-w iso/casper/filesystem.manifest
Pour n'avoir certains logiciels qu'en session live, et qu'ils ne s'installent pas sur l'ordinateur, il suffit de les ajouter au fichier
iso/casper/filesystem.manifest-remove
sudo rm iso/casper/filesystem.squashfs
cd squashfs sudo mksquashfs . ../iso/casper/filesystem.squashfs -comp zstd -Xcompression-level 22 -progress cd ..
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.
cd iso sudo bash -c "find . -path ./isolinux -prune -o -type f -not -name md5sum.txt -print0 | xargs -0 md5sum | tee md5sum.txt"
sudo rm -f ../ubuntu-18.04.7-desktop-amd64.iso sudo genisoimage -U -A "xubuntu_18.04_AMD64" -V "xubuntu_18.04_AMD64" -volset "xubuntu_18.04_AMD64" -J -joliet-long -r -v -T -o ../xubuntu-18.04.7-desktop-amd64.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot ./
* Cette image ne peut être copiée que sur DVD. Si vous souhaitez pouvoir copier cette image sur une clé USB, exécutez la commande suivante sur votre ISO :
sudo usb-creator-gtk
De cette façon tous les supports bootables seront supportés par votre ISO.
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.
Voici une méthode pour configurer votre session live.
livecd
.cd livecd sudo cp -r DOSSIER_DE_SAUVEGARDE/. squashfs/etc/skel/ sudo chown -R root:root squashfs/etc/skel
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.
Contributeurs : Elessor, traaf, Furious-therapy, Eric Buist, Gpocentek (classroom Ubuntu-fr le 5/07/2007), FelixP (Juin 2013)