Personnalisation d’un CD Ubuntu

BUT : Créer un CD live d’Ubuntu modifié afin de le personnaliser avec nos outils ou nos configurations

L’idéal est d’utiliser une machine virtuelle sur laquelle est installé un Ubuntu 20.04 LTS et sur laquelle toutes les mises à jour ont été effectuées

Installation des outils :

sudo apt-get install -y squashfs-tools schroot genisoimage xorriso

Mise en place de l’environnement :

bzg@uc:~$ mkdir cdlive 
bzg@uc:~$ cd cdlive 
bzg@uc:~/cdlive$ mkdir iso squashfs

Copie du CD ou de l’ISO du CD dans le répertoire « iso » :

Dans le cas où le CD est monté automatiquement

bzg@uc:~/cdlive$ sudo cp -va /media/bzg/Ubuntu\ 20.04.4\ LTS\ amd64/. iso

Il faut remplacer « bzg » par votre nom d’utilisateur et « Ubuntu\ 20.04.4\ LTS\ amd64 » par le nom du CD qui apparaît au montage du CD
Attention à ne pas oublier les « \ » devant les espaces

Dans le cas où c’est l’image « iso » qui est utilisée il faut monter l’image avant la copie puis la démonter

bzg@uc:~/cdlive$ sudo mount -o loop /home/bzg/Téléchargements/Ubuntu\ 20.04.4\ LTS\ amd64.iso /mnt
bzg@uc:~/cdlive$ sudo cp -av /mnt/. iso 
bzg@uc:~/cdlive$ sudo umount /mnt

Montage et copie du « squafs » dans le répertoire squahfs puis démontage
C’est le contenu système du CD

bzg@uc:~/cdlive$ sudo mount -t squashfs -o loop iso/casper/filesystem.squashfs /mnt bzg@uc:~/cdlive$ sudo cp -va /mnt/. squashfs 
bzg@uc:~/cdlive$ sudo umount /mnt

Passage en mode « chroot »

bzg@uc:~/cdlive$ sudo mount --bind /proc squashfs/proc 
bzg@uc:~/cdlive$ sudo mount --bind /sys squashfs/sys 
bzg@uc:~/cdlive$ sudo mount -t devpts none squashfs/dev/pts 
bzg@uc:~/cdlive$ sudo mount --bind /dev squashfs/dev 
bzg@uc:~/cdlive$ sudo mount --bind /dev/pts squashfs/dev/pts 
bzg@uc:~/cdlive$ sudo cp /etc/resolv.conf squashfs/etc/resolv.conf 
bzg@uc:~/cdlive$ sudo chroot squashfs root@uc:/#

Vous remarquerez que nous sommes en mode « root », mais dans un environnement cloisonné à cdlive/squashfs
Pour notre exemple nous aurons besoin d’installer des programmes qui sont dans « universe »
Installons le dépôt « universe » puis faisons une mise à jour du système qui se trouve dans le chroot

root@uc:/# echo 'deb http://fr.archive.ubuntu.com/ubuntu/ focal universe' >> /etc/apt/sources.list 
root@uc:/# apt update

Vous pouvez faire les mise à jour, mais je ne vais pas le faire afin de garder le même niveau que la version d’origine (avec : apt dist-upgrade)
Sélectionnons le clavier français (azerty / french)

root@uc:/# apt install console-data

S’il y a des erreurs au sujet de ‘zsys’ c’est normal et nous allons le corriger en supprimant les programmes inutiles

root@uc:/# apt purge zsys

Puis les langues inutiles (à vous de voir)

root@uc:/# apt purge libreoffice-help-ru libreoffice-help-de libreoffice-help-pt-br libreoffice-help-it libreoffice-help-es libreoffice-help-pt language-pack-gnome-ru-base language-pack-pt-base language-pack-gnome-de-base language-pack-de-base language-pack-ru-base language-pack-gnome-es-base language-pack-es-base gnome-getting-started-docs-de gnome-getting-started-docs-es gnome-getting-started-docs-ru gnome-getting-started-docs-it gnome-getting-started-docs-pt language-pack-gnome-zh-hans-base language-pack-zh-hans-base language-pack-it-base

Enfin installons quelques programmes utiles (utilisez atp instal )
ssh : pour activer la connection en ssh
chntpw : pour supprimer les mots de passe Windows
grub-customizer : pour gérer les boots EFI

root@uc:/# apt install ssh chntpw grub-customizer

Nous faisons à présent un peu de ménage

root@uc:/# apt autoremove
root@uc:/# apt autoclean
root@uc:/# rm /etc/resolv.conf
root@uc:/# rm /etc/hosts

Puis nous démontons les répertoires

root@uc:/# umount -lf /sys 
root@uc:/# umount -lf /proc
root@uc:/# umount -lf /dev/pts

Nous sortons du mode ‘chroot’

root@uc:/# exit
bzg@uc:~/cdlive$

Nous pouvons copier des fichiers qui apparaîtrons dans le ‘home’ de l’utilisateur dans l’arborescence ‘squashfs/etc/skel’
Pour copier un fichier tuto pour la configuration du wifi, téléchargeons une page web que nous mettrons dans ~Téléchargement et que nous appellerons ‘wifi.html’, puis lançons sa copie par

bzg@uc:~/cdlive$ sudo cp ~/Téléchargements/wifi.html squashfs/etc/skel/

Pour lancer des commandes au démarrage il suffit de modifier le fichier .profile

bzg@uc:~/cdlive$ sudo nano squashfs/etc/skel/.profile
GNU nano 4.8 squashfs/etc/skel/.profile Modifié 
# Mettre à la fin du fichier .profile 
# test si connexion internet sinon ffichage d'un fichier html 
test="$(ping -c 2 google.com | grep '2 re')" 
if [ ! "$test" ] 
then 
   # Pas de connection internet affichage d'un tuto sur le wifi 
   firefox ~/wifi.html 
   fi 
   
^G Aide     ^O Écrire     ^W Chercher     ^K Couper     ^J Justifier     ^C Pos. cur.    M-U Annuler    M-A Marquer 
^X Quitter  ^R Lire fich. ^\ Remplacer    ^U Coller     ^T Orthograp.    ^_ Aller ligne M-E Refaire     M-6 Copier

Puis sortir par ctrl-X

Pour utiliser le Français par défaut

bzg@uc:~/cdlive$ echo "fr" | sudo tee iso/isolinux/lang

Création du CDLIVE

bzg@uc:~/cdlive$ sudo chmod a+w iso/casper/filesystem.manifest 
bzg@uc:~/cdlive$ sudo chroot squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > iso/casper/filesystem.manifest 
bzg@uc:~/cdlive$ sudo chmod go-w iso/casper/filesystem.manifest 
bzg@uc:~/cdlive$ sudo rm iso/casper/filesystem.squashfs

Création du squashfs puis reconstruction de l’ISO

bzg@uc:~/cdlive$ cd squashfs 
bzg@uc:~/cdlive/squashfs$ sudo mksquashfs . ../iso/casper/filesystem.squashfs -info bzg@uc:~/cdlive/squashfs$ cd ../iso 
bzg@uc:~/cdlive/iso$ sudo bash -c "find . -path ./isolinux -prune -o -type f -not -name md5sum.txt -print0 | xargs -0 md5sum | tee md5sum.txt" 
bzg@uc:~/cdlive/iso$ sudo mkisofs -U -A "ubuntu-20-04-efi" -V "ubuntu-20-04-efi" -volset "ubuntu-20-04-efi" -J -joliet-long -r -v -T -o ../ubuntu-20-04-efi.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 . 
bzg@uc:~/cdlive/iso$ cd .. 
bzg@uc:~/cdlive$ sudo apt install syslinux-utils 
bzg@uc:~/cdlive$ sudo isohybrid -u ubuntu-20-04-efi.iso