Aller directement au contenu

Personnaliser l'ISO d'une distribution avec ses programmes préférés

Déplacé Codes et scripts
  • Les ISO basés sur les distributions Ubuntu/Debian sont construits de façon similaire. Ils comprennent trois parties principales :

    • Un gestionnaire de démarrage pour démarrer sur le support d'installation (USB, DVD, CD),
    • Une arborescence de fichiers qui constituera les bases de notre futur système,
    • Et, un miroir local de paquets (udeb, deb) pour compléter l'offre logiciel.

    Le boot

    Pour être démarré l'ISO devra utiliser le gestionnaire de démarrage GRUB si l'installation est en UEFI et/ou le gestionnaire ISOLINUX (abandonné sur les dernières versions de certaines distributions) si l'installation est en BIOS classique.

    iso-ubuntu-20.4-racine.png

    Le preseed

    L'installation est gérée par un ensemble de scripts (debian-installer) dont le but est la mise en place d'un système fonctionnel avec la prise en compte des données utilisateur (langue, fuseau horaire, configuration réseau, proxy, sources des dépôts logiciels, compte utilisateur, mot de passe, etc.). Que l'installation ait été initiée par ISOLINUX ou GRUB celle-ci suit un scénario intéractif via le fichier preseed (nommé ubuntu.seed sur l'image ci-après). Ce fichier contient les réponses qu'on souhaite apporter durant l'installation.

    iso-ubuntu-20.4-preseed.png

    Copie du système de fichiers

    L'installation consiste à copier et configurer une arborescence de fichiers sur notre machine. Cette structure composant notre futur système se trouve sur le support d'installation sous la forme d'un fichier compressé et se nomme filesystem.squashfs. Une méthode simple pour personnaliser un ISO, par exemple ajouter des programmes, un autre environnement de bureau, des papiers peints, etc., consiste à modifier ce fichier. Pour ce faire il faut le décompresser (unsquashfs), faire un chroot dessus (on bascule temporairement sur ce nouveau système pour y mener des actions), apporter les changements, et recompresser le tout pour obtenir notre nouveau système de fichiers (mksquashfs).

    iso-ubuntu-20.4-arborescence-fichiers.png

    Les dépôts logiciels (si besoin)

    On peut préfèrer avoir un système de fichier minimal (debootstrap minimal) et tout installer par la suite à partir d'un gros dépôt local de logiciels. Ou bien préfèrer minimiser la taille de son dépôt local en préinstallant un ensemble de logiciels dans le système de fichiers. Les derniers ISO Ubuntu proposent par défaut un système complet et demande à l'utilisateur s'il souhaite un système minimal. Si oui alors après la copie du squashfs sur le disque une liste de logiciels sont désinstallés (cf. les fichiers manifest remove).

    iso-ubuntu-20.4-mirroir-local.png

    Partir d'un debootstrap minimal pour créer un ISO personnalisé Ubuntu/Debian est complexe. Le plus simple et plus rapide est de monter l'ISO pour copier son contenu. Modifier le fichier squashfs en fonction de ses besoins. Enfin, générer un nouvel ISO avec les utilitaires genisoimage ou xorriso (Plus d'info sur le wiki du projet SYSLINUX).

    Optionnel : Pour ce genre de manipulations j'ai pour habitude d'utiliser un environnement de développement sous Vagrant.

  • @olivier a dit dans Personnaliser l'ISO d'une distribution avec ses programmes préférés :

    Enfin, générer un nouvel ISO avec les utilitaires genisoimage ou xorriso.

    Trouver la commande qui ira bien n'est pas simple selon le type d'ISO souhaité hybride ou pas. On peut tester le démarrage de l'ISO sans le fichier squashfs ni le répertoire pool afin de gagner du temps à chaque création.

  • @olivier a dit dans Personnaliser l'ISO d'une distribution avec ses programmes préférés :

    Une méthode simple pour personnaliser un ISO, par exemple ajouter des programmes, un autre environnement de bureau, des papiers peints, etc., consiste à modifier ce fichier. Pour ce faire il faut le décompresser (unsquashfs), faire un chroot dessus (on bascule temporairement sur ce nouveau système pour y mener des actions), apporter les changements, et recompresser le tout pour obtenir notre nouveau système de fichiers (mksquashfs).

    hamOS est une distribution Linux spécialisée pour les radioamateurs. Elle est basée sur Debian 10 et utilise l'environnement de bureau Xfce. Dans l'exemple suivant nous allons, en utilisant la méthode précédente, remplacer dans l'ISO l'environnement Xfce par GNOME.

    Commencez par vous procurer l'ISO en le téléchargeant à l'adresse http://hamos.fr/hamos3-1.iso (user:hamos password:live). Une fois l'ISO sur votre disque dur alors via l'explorateur de fichiers monter le en faisant entrée sur l'icone.
    montage-iso.png
    Le contenu est alors accessible en lecture seule dans le dossier /media/olivier/hamos (remplacer olivier par votre nom d'utilisateur).

    Ouvrir le terminal et copier tout l'ISO (fichiers cachés inclus) dans un nouveau dossier de votre disque dur pour permettre d'y faire les changements. Le nouveau dossier se nommera new-image.

    $ cp -rvT /media/olivier/hamos new-image
    

    Pour la suite des opérations nous aurons besoin de 2 paquets supplémentaires, squashfs-tools et genisoimage. Les installer avec la commande suivante.

    $ sudo apt-get -y install squashfs-tools genisoimage
    

    Extraire le système de fichiers contenu dans l'ISO auquel nous allons apporter des changements. La commande unsquashfs décompresse tous les fichiers dans un nouveau dossier nommé par défaut squashfs-root.

    $ sudo unsquashfs new-image/live/filesystem.squashfs
    

    Pour permettre la résolution DNS dans le chroot et donc garantir la connexion aux dépôts logiciels, on recopie le fichier resolv.conf.

    $ sudo cp /etc/resolv.conf squashfs-root/etc/
    

    Basculer dans le système de fichiers à modifier et extrait sous le dossier squashfs-root.

    $ sudo chroot squashfs-root/
    $ mount -t proc none /proc
    $ mount -t sysfs none /sys
    $ mount -t devpts none /dev/pts
    

    Une fois à l'intérieur (l'invite du terminal change et vous devenez super-utilisateur) faire toutes les changements souhaités. On va utiliser tasksel (cocher les lignes correspondantes avec la barre d'espace) pour installer tous les paquets necéssaires au bureau GNOME.

    $ apt-get update
    $ apt-get -y purge xfce4*
    $ tasksel
    

    tasksel.png

    Sélectionner le gestionnaire récent de session gdm3.
    gdm3.png

    Nettoyer et quitter le chroot.

    $ apt-get -y autoremove
    $ apt-get clean
    $ umount /dev/pts
    $ umount /sys
    $ umount -lf /proc
    $ exit
    

    Reconstruire le nouveau système de fichiers.

    $ sudo rm new-image/live/filesystem.squashfs
    $ sudo mksquashfs squashfs-root/ new-image/live/filesystem.squashfs
    

    Créer le nouvel ISO.

    $ sudo mkisofs -r -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o hamos-remix.iso new-image/
    

    Enfin, tester cet ISO dans une machine virtuelle à l'aide de VirtualBox, gnome-boxes, ou avec la commande suivante.

    $ qemu-system-x86_64 -enable-kvm -cdrom hamos-remix.iso -m 2048
    

    hamos-avec-gnome-shell.png

    Il se peut que certaines personnalisations effectuées sous Xfce par l'auteur de hamOS n'apparaissent pas sous GNOME.

  • Très bel article super fouillé : merci O. !!!
    Entre Debian et Ubuntu, il existe toutefois quelques différences : le système de fichiers SQUASHFS est utilisé uniquement par le système Ubuntu (live). Les fichiers de configuration de construction de l'image divergent un peu aussi, même si l'idée est la même : "preseed" centralise beaucoup de paramètres, alors que les choses sont un peu plus éparpillées dans Debian, avec une souplesse supplémentaire dans la personnalisation pour cette dernière, qui va bien au-delà de la seule sélection des paquets présents dans les dépôts. Pour ces raisons, les documentations pour la construction des systèmes "live" ne sont plus tout à fait interchangeables, même si Debian et Ubuntu ne nourrissent mutuellement l'une de l'autre : à chaque "bidouilleur" de veiller à bien faire le tri dans ses lectures.

  • C'est exact ! Le contenu des ISO diverge entre les distributions et même entre les versions des distributions.

  • @olivier
    L'adresse http://hamos.fr ne fonctionne pas, pourriez-vous être en mesure de m'envoyer l'ISO s'il vous plaît?

  • L'ISO est disponible sur SourceForge.

  • @olivier text alternatif

    Il porte le même nom mais est un système d'exploitation différent. Pourriez-vous s'il vous plaît me l'envoyer de quelque manière que ce soit?

  • Je ne l'ai plus sur mon disque.

  • @m4d Tu peux faire autrement. Installer une Debian puis les paquets logiciels cités à l'adresse https://www.debian.org/blends/hamradio/get/metapackages.

  • J'ai créé un ISO pour radioamateur à partir d'une image Debian 11 (64-bit, LXQt, non-free firmware) avec tous les logiciels cités précédemment.
    transmission-web-interface.png

    L'ISO est disponible à partir du site linuxtracker à l'adresse https://linuxtracker.org/download.php?id=6f11caf1a75137ba6774e1d07d0612e96365745f&f=Debian+Live+11+amd64+LXQt+Hamradio+Pure+Blend.torrent&key=0

  • Le résultat :
    qemu-hamradio.png

  • Système a déplacé ce sujet de Divers sur
  • @olivier Merci beaucoup Olivier vous avez été vraiment gentil et serviable. Je télécharge votre iso immédiatement.

Sujets suggérés

  • Termux : un terminal Linux sur Android.

    Codes et scripts
    2
    0 Votes
    2 Messages
    279 Vues
    ?

    @papinou Merci Papinou de nous rappeler cette possibilité en effet. Je connais l'installation par le magasin d'applications F-Droid, mais je ne sais pas si on peut le trouver dans la boutique "officielle". Rudement pratiquement pour travailler en shell (adeptes des gestionnaires de bureau, vous pourrez passer votre chemin). C'est aussi l'occasion de découvrir l'arborescence des fichiers, qui est hélas non conforme aux standards des distributions GNU/Linux classiques... Merci le robot vert !

  • Mémo des commandes Linux.

    Codes et scripts
    2
    0 Votes
    2 Messages
    906 Vues
    ?

    bonjour un mémo beaucoup plus léger qu'on vient de me partager https://cdn.hostinger.com/tutorials/pdf/Linux-Commands-Cheatsheet-FR.pdf ... il trouvera sa clientèle 😉

  • Antora versus Wiki.

    Codes et scripts
    2
    1 Votes
    2 Messages
    200 Vues
    Y

    @papinou Très intéressant, merci !

  • Le script d'install du sdk du rpi pico commenté

    Codes et scripts
    5
    0 Votes
    5 Messages
    388 Vues
    ?

    @yannick85 Super boulot, très utile : merci !

  • 0 Votes
    1 Messages
    350 Vues
    Personne n'a répondu
  • 0 Votes
    8 Messages
    680 Vues
    ?

    https://blog.otso.fr/2015-08-28-comment-jai-exporte-mon-site-wordpress-sous-jekyll décrit comment s'en sortir manuellement quand les plugins n'y arrivent pas.

  • Programmer en RUST

    Codes et scripts
    3
    0 Votes
    3 Messages
    409 Vues
    ?

    @livrecinq Apple et m$ s'y mettent :

    https://emploi.developpez.com/actu/297780/Apple-recherche-des-ingenieurs-logiciels-afin-de-convertir-une-base-de-code-etablie-en-C-vers-Rust/

    https://thenewstack.io/microsoft-rust-is-the-industrys-best-chance-at-safe-systems-programming/

  • La commande "history"

    Codes et scripts
    7
    1 Votes
    7 Messages
    1k Vues
    ?

    Si vous voulez conserver votre historique dans un fichier texte sur votre Bureau, dans votre terminal tapez successivement :

    cd Bureau history > mon_historique.txt