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

  • Membre

    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.

  • Membre

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

Sujets suggérés