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