# UDIB UDIB est l'outil de construction d'installation Debian non assistée. Il fournit un utilitaire en ligne de commande pratique pour injecter des fichiers dans les ISOs d'installation Debian. En utilisant UDIB, vous pouvez préconfigurer un ISO en injectant un fichier de préconfiguration. Les ISOs préconfigurés permettent des installations Debian entièrement automatisées sur du matériel nu (ou n'importe où ailleurs). **Note:** Ce projet est un fork de [YunoHost/custom-debian-iso](https://github.com/YunoHost/custom-debian-iso) qui est lui-même un fork de [ulinja/udib](https://github.com/ulinja/udib). ## Guide de démarrage rapide Ce guide court explique comment construire un ISO Debian avec une installation personnalisée et automatisée : 1. assurez-vous d'avoir tous les [logiciels requis](#machine-de-construction) installés 2. clonez ce dépôt et `cd` dans votre copie locale 3. (optionnel) créez et activez un environnement virtuel : `python3 -m venv .venv && . .venv/bin/activate` 4. installez les packages python requis : `pip install -r requirements.txt` 5. tous les ISOs Debian sont disponibles dans 5. créez les ISOs personnalisés : `./udib.py inject -i debian-11.10.0-amd64-netinst.iso` 6. démarrez à partir de l'ISO `-modified.iso` sur votre machine cible (ou dans une VM) Selon le nombre de réponses que vous avez fournies dans le fichier de préconfiguration, l'installation peut nécessiter une certaine interaction manuelle. Les fichiers de préconfiguration sont très puissants, et si vous avez besoin de plus de personnalisation, vous pouvez regarder plus en détail [comment ils fonctionnent](#quest-ce-que-la-préconfiguration). Vous pouvez également utiliser UDIB pour obtenir le fichier d'exemple de préconfiguration complet : `./udib.py get preseed-file-full` et l'utiliser comme point de départ. Assurez-vous de jeter un œil à la [référence d'utilisation](#guide-dutilisation-détaillé) pour un regard plus approfondi sur UDIB lui-même. ## Qu'est-ce que la préconfiguration ? Un fichier de préconfiguration est un fichier texte qui fournit à l'installateur Debian des réponses préalablement définies (préconfigurées) pendant le processus d'installation. La préconfiguration d'un ISO Debian vous permet de réduire considérablement la quantité d'interaction utilisateur requise pendant une installation, ou même de l'automatiser entièrement. Le fichier de préconfiguration est écrit par vous puis injecté dans l'image d'installation. Quand vous démarrez l'installation, toutes les réponses que vous avez fournies à l'installateur debian dans le cadre de votre fichier de préconfiguration sont automatiquement appliquées pendant l'installation. Si vous voulez en savoir plus, vous pouvez regarder le [guide officiel](https://www.debian.org/releases/stable/amd64/apb.en.html) de Debian ou l'[aperçu rapide](https://wiki.debian.org/DebianInstaller/Preseed) du wiki Debian, qui expliquent tous deux la préconfiguration bien mieux que je ne peux le faire. ## Comment fonctionne UDIB ? Le but principal d'UDIB est l'injection de fichiers dans les ISOs d'installation Debian existants. En résumé, il fait cela en extrayant l'ISO, en ajoutant les fichiers à l'initrd de l'ISO, et en repackageant l'ISO à nouveau. Vous pourriez faire tout cela manuellement bien sûr en suivant les guides [basique](https://wiki.debian.org/DebianInstaller/Preseed/EditIso#Adding_a_Preseed_File_to_the_Initrd) et [avancé](https://wiki.debian.org/RepackBootableISO) pour le repackaging d'ISO sur le wiki Debian, mais UDIB fait tout cela pour vous. # Dépendances L'utilisation d'UDIB pour créer des ISOs nécessite les logiciels suivants : - GNU/Linux - `python3` *(3.10.4 connu pour fonctionner)* - [packages python requis](./requirements.txt) peuvent être installés dans un environnement virtuel - `xorriso` *(1.5.4 connu pour fonctionner)* - **Debian (bullseye):** [xorriso](https://packages.debian.org/bullseye/xorriso) - **Arch Linux:** [extra/libisoburn](extra/libisoburn) - GNU `gpg` - préinstallé sur la plupart des distributions - GNU `cpio` - préinstallé sur la plupart des distributions - GNU `sha512sum` - préinstallé sur la plupart des distributions Un accès Internet est (évidemment) requis si vous voulez récupérer des fichiers en utilisant UDIB. # Guide d'utilisation détaillé Vous pouvez voir l'aide en ligne de commande en utilisant `./udib.py --help` pour les options générales et `./udib.py COMMAND --help` pour l'aide avec une sous-commande spécifique. Le nom et la destination des fichiers produits par `udib.py` peuvent être spécifiés avec l'option `--output-file`. Alternativement, vous pouvez utiliser l'option `--output-dir` pour spécifier le répertoire où les fichiers produits seront sauvegardés, sans avoir à les nommer explicitement (les noms par défaut seront utilisés). ## Récupération d'exemples de fichiers de préconfiguration ou d'ISOs vanille Comme point de départ pour créer votre propre ISO préconfiguré, vous pouvez récupérer un des fichiers d'exemple de préconfiguration de Debian ou un ISO Debian non modifié en utilisant UDIB : ``` udib.py [--output-file FILE | --output-dir DIR] get WHAT ``` `WHAT` doit être une chaîne spécifique et peut être soit : - `preseed-file-basic` pour télécharger le fichier d'exemple de préconfiguration basique de Debian (suffisant dans la plupart des cas) - `preseed-file-full` pour télécharger le fichier d'exemple de préconfiguration complet de Debian (a BEAUCOUP d'options de personnalisation) - `iso` pour télécharger le dernier ISO netinst Debian stable x86-64 non modifié ## Injection de fichiers dans un ISO Pour injecter des fichiers existants dans un ISO, vous pouvez exécuter la commande suivante : ```bash python udib.py --output-file skylanix.iso inject --image-file debian-12.11.0-amd64-netinst.iso ``` Le script injecte automatiquement tous les fichiers présents dans le dossier `files_to_inject/` : - Configuration GRUB personnalisée (`boot/grub/grub.cfg` et thème) - Configuration isolinux (`isolinux/menu.cfg` et `splash.png`) - Logo personnalisé (`logo.png`) - Fichier de préconfiguration (`preseeds/default.preseed`) **Exemple complet :** ```bash # Créer un ISO personnalisé "skylanix.iso" à partir de l'ISO Debian standard python udib.py --output-file skylanix.iso inject --image-file debian-12.11.0-amd64-netinst.iso ``` **NOTE:** l'installateur ne reconnaîtra pas un fichier de préconfiguration sauf si son nom de fichier est exactement `preseed.cfg`. Si vous ne spécifiez pas d'`--image-file`, UDIB téléchargera le dernier ISO netinst Debian x86-64 et injectera vos fichiers dedans.