# UDIB - Outil de Construction d'Installation Debian Non Assistée

## Introduction
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).

## 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
- Automatiser entièrement l'installation

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 sont automatiquement appliquées.

Pour plus d'informations, consultez :
- [Guide officiel Debian](https://www.debian.org/releases/stable/amd64/apb.en.html)
- [Aperçu rapide du wiki Debian](https://wiki.debian.org/DebianInstaller/Preseed)

## 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 :
1. Extrayant l'ISO
2. Ajoutant les fichiers à l'initrd de l'ISO
3. Repackageant l'ISO à nouveau

Vous pourriez faire tout cela manuellement en suivant les guides du wiki Debian, mais UDIB fait tout cela pour vous.

## Prérequis

### Dépendances
L'utilisation d'UDIB pour créer des ISOs nécessite les logiciels suivants :

- Système d'exploitation : GNU/Linux
- `python3` *(version 3.10.4 connue pour fonctionner)*
  - Les [packages python requis](./requirements.txt) peuvent être installés dans un environnement virtuel
- `xorriso` *(version 1.5.4 connue 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.

### Installation
1. Clonez ce dépôt et `cd` dans votre copie locale
2. (Optionnel) Créez et activez un environnement virtuel : 
   ```bash
   python3 -m venv .venv && . .venv/bin/activate
   ```
3. Installez les packages python requis : 
   ```bash
   pip install -r requirements.txt
   ```
4. Téléchargez l'ISO Debian : 
   ```bash
   python3 udib.py get iso
   ```

## Usage

### Aide en ligne de commande
- Options générales : `./udib.py --help`
- Aide pour une sous-commande spécifique : `./udib.py COMMAND --help`

### Télécharger Debian

#### Version stable
```bash
python3 udib.py get iso
```

#### Version testing
```bash
python3 udib.py get iso-testing
```

#### Options supplémentaires

Télécharger dans un répertoire spécifique :
```bash
python3 udib.py --output-dir /tmp get iso
```

Télécharger avec un nom personnalisé :
```bash
python3 udib.py --output-file debian-stable-custom.iso get iso
```

Télécharger le fichier de préconfiguration basique :
```bash
python3 udib.py get preseed-file-basic
```

Télécharger le fichier de préconfiguration complet :
```bash
python3 udib.py get preseed-file-full
```

Ces commandes téléchargent automatiquement l'ISO et vérifient son intégrité avec les signatures GPG.

### Créer un ISO personnalisé

#### Préparer les fichiers à injecter
Le dossier `files_to_inject/` doit contenir tous les fichiers que vous souhaitez injecter dans l'ISO :
- `boot/grub/grub.cfg` : Configuration GRUB personnalisée
- `boot/grub/theme/` : Thème GRUB personnalisé 
- `isolinux/menu.cfg` : Configuration du menu isolinux
- `isolinux/splash.png` : Image de fond du menu isolinux
- `logo.png` : Logo personnalisé affiché pendant l'installation
- `preseeds/default.preseed` : Fichier de préconfiguration pour l'installation automatisée

#### Injection de fichiers
```bash
python3 udib.py --output-file skylanix.iso inject --image-file debian-12.x.x-amd64-netinst.iso
```

#### Utilisation
- Démarrez à partir de l'ISO `-modified.iso` sur votre machine cible (ou dans une VM)
- Selon le nombre de réponses 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. Pour plus de personnalisation, consultez la section [Qu'est-ce que la préconfiguration](#quest-ce-que-la-préconfiguration).

Vous pouvez obtenir le fichier d'exemple de préconfiguration complet avec :
```bash
./udib.py get preseed-file-full
```

Consultez la [référence d'utilisation](#guide-dutilisation-détaillé) pour un regard plus approfondi sur UDIB.