# Simple-cdd howto

**URL:** <https://www.debian-fr.org/t/simple-cdd-howto/83749>\
**Category:** Trucs et Astuces\
**Created:** [Janvier 18, 2021, 12:48 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749 "2021-01-18T12:48:14Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Janvier 18, 2021, 12:48 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/1 "2021-01-18T12:48:15Z")

</div>

## Préambule

Voici un HOW-TO rapide sur SIMPLE-CDD pour construire une ISO Debian personnalisée.

Simple-cdd est un outil de création de CD/DVD d’installation Debian, se basant sur debian-cd et preseed avec tout un ensemble de fonctionnalités. complémentaires.

**NOTE:** Pour tout support, faire un fil de discussion spécifique dans la catégorie _Support Debian_

Dans cette documentation, toutes commandes d’installation de paquets sont réalisées par _root_ .

L’utilisation de la commande build-simple-cdd est réalisé dans le répertoire simple-cdd d’un utilisateur nommé (votre utilisateur).

_root_ n’est pas nécessaire pour créer un CD/DVD avec simple-cdd.

Pour le fichier preseed d’une installation RAID1 UEFI, voir [ici](https://www.debian-fr.org/t/simple-cdd-preseeding-raid1-installation/91155).

## Introduction

Simple-cdd est un outil utilisé pour créer un disque DebianInstaller fait sur mesure. C’est une enveloppe autour de debian-cd et des outils de création de miroir pour créer une image sur CD DebianInstaller.

Il prend une liste de paquets à installer, et utilise une présélection debconf (preseed) pour pré-configurer l’installation.

Il permet d’avoir plusieurs profils d’installation différents, et de gérer des scripts de pré-installation et de post-installation, permettant par exemple de gérer des éléments qui ne peuvent utiliser le preseed debconf.

Chaque profil est constitué d’un certain nombre de fichiers qui décrivent comment est réalisé le CD/DVD iso, mais aussi les actions qu’exécutera en automatique l’installateur. La construction de cette iso est réalisé par la fonction build-simple-cdd qui utilisera en paramètre le nom du profil, le fichier de configuration de simple-cdd et génèrera des logs et une iso.

 ![Build-simple-cdd](https://www.debian-fr.org/uploads/default/original/2X/e/e9b19a9e3933f40a9d45a55e2a8db9c7274e828b.png)

build-simple-cdd

Une installation par l’installateur Debian se déroule de la façon suivante:

- Chargement du système de l’installateur

- Choix du profil

- Execution du PREINST du profil ( _profil.preinst_ )

- Execution du PRESEED du profil ( _profil.preseed_ )

- Execution de early\_command du PRESEED

- Execution du reste du PRESEED

- Execution de late\_command du PRESEED

- Execution du POSTINST du profil ( _profil.postinst_ )

## Préparation de simple-cdd

Tout d’abord il faut installer simple-cdd:

> apt install simple-cdd

Pour fonctionner correctement simple-cdd nécessite un certain nombre de répertoire. Ces répertoires doivent exister sous peine d’échec de la commande build-simple-cdd.

 ![Arborescence_.-simple-cdd](https://www.debian-fr.org/uploads/default/original/2X/6/6fb24f5adeea7179e8b8fd053affe1e6f0b9b30f.png)

Arborescence de travail

Simple-cdd est organisé autour des profils. L’architecture des répertoire de simple-cdd est simple. Elle est constituée d’un répertoire de projet, nommé à sa convenance, dans lequel il y un répertoire profiles. C’est ce répertoire qui contiendra les fichiers nécessaires aux différents profiles. Après la création du CD, un répertoire _./tmp_ y sera créé par l’outil, qui lui servira de répertoire de travail pour créer l’image ISO du CD qui sera lui mis dans un répertoire images créé par l’outil.

Les autres répertoires plus spécifiques comme des dépôts locaux, ou un répertoire pour des fichiers spécifiques que l’on veut voir figurer sur le CD peuvent aussi y être créés.

En dehors du répertoire _./profiles_ les autres répertoires sont nommé à la convenance de l’utilisateur. Mais par conventions, ils sont souvent nommés comme sur l’arborescence ci-dessus dans les documentations sur internet.

Vous pouvez aussi mettre dans votre répertoire de base des fichiers meta comme `README.md`, `LICENSE`, `CONTRIBUTING.md`, `CHANGELOG.md`, etc. Cependant, si vous voulez pouvoir les inclure dans l’ISO, il faudra passer par _./extras_ ou _./local\_extras_ .

La création d’une iso se fait à l’aide de la commande **build-simple-cdd** telle que:

build-simple-cdd --conf simple-cdd.conf --profiles vmssrvstd,vmssrvstd2 --logfile ./logs/build-2023-05-13-1826.log --verbose --debug --dvd 2\>/dev/null

Il est recommandé de prévoir un fichier de log afin de mieux vérifier par la suite en cas d’erreur avec l’option **–logfile**. Les options **–verbose** et **–debug** permettent plus d’affichage à l’écran et dans les logs.

Une option **–conf** est prévue pour utiliser un fichier de configuration spécifique. Attention, les commande qui s’y trouvent sont directement issues de _debian-cd_ et peuvent mener à des erreurs si elles ne sont pas correctement définie.

Simple-cdd génère un miroir des paquets utilisés par l’installateur (ainsi que les fichiers que l’ont veut voir figurer sur le CD). Il est possible de ne faire que cette seule opération avec l’option **–mirror-only** qui ne créera pas l’image CD. A l’inverse, l’option **–build-only** ne fera que construire l’image CD sans générer le miroir.

L’option **–profiles** permet de spécifier le ou les profiles voulus (séparés par une virgule sans espace). _Attention, l’ordre des noms de profiles dans l’option sera l’ordre dans lequel ils apparaitront dans la liste de sélection lors de l’installation._

Ensuite il vous faut créer les fichiers de votre/vos profil(s) qui seront tous stockés dans le sous-répertoire _./profiles._

## Les Fichiers de profiles

Les fichiers de profils permettent de créer des personnalisations différentes sur une seule ISO. L’installateur exécutera toujours le profil par défaut qui s’appelle _default_ . Il est possible de modifier ce profil par défaut dans le répertoire profiles avec les fichiers profiles dont le nom sera _default_ ( _default.preseed_ par exemple).

Chaque fichier de profil doit être nommé avec la convention suivante :

> NOM\_DU\_PROFIL.typefichier

Pour un profile, il y a plusieurs fichiers qui sont à créer. Un seul est réellement nécessaire, les autres fichiers sont optionnels.

### NOM\_DU\_PROFILE.downloads (optionnel)

Ce fichier permet de mettre à disposition sur le CD des paquets qui ne seront pas forcément utilisés lors de l’installation d’un profile. Sa fonction est de s’assurer que ces paquets seront toujours disponibles sur le CD et ne nécessite pas d’être téléchargés d’internet (pour une installation sans lien avec Internet).

Le fichier est constitué d’une liste de noms de paquets à raison d’un nom par ligne. Il ne faut pas faire figurer la version du paquet, cependant il est possible de faire figurer l’architecture ( _:i386_ par exemple). Cette règle concerne aussi les fichiers _.packages_ , _.excludes_ , _.extras, .udebs_ .

### NOM\_DU\_PROFILE.excludes (optionnel)

Comme son type le suggère, ce fichier permet d’exclure des paquets du CD. Ils n’y figureront donc pas quel que soit le besoin éventuel _y compris les dépendances_ .

Le fichier est constitué d’une liste de noms de paquets à raison d’un nom par ligne.

### NOM\_DU\_PROFILE.packages (optionnel)

Ce fichier indique les paquets qui devront être installés par l’installateur, comme par exemple un wrapper de pare-feu comme _ufw_ ou _shorewall_ , ou encore des outils tels que _tree_ , _nmap_ , _mlocate_ , etc… Ils seront bien sur ajoutés à l’ISO (comme pour les paquets dans le fichier _.downloads_ ).

Le fichier est constitué d’une liste de noms de paquets à raison d’un nom par ligne.

### NOM\_DU\_PROFILE.preseed (obligatoire)

Ce fichier est le cœur du profil. Il définit les réponses apportées à l’installateur au cours de l’installation.

Ce fichier fournit à l’installateur les actions par défaut à réaliser et les valeurs de réponses. Ce fichier est fonction de la distribution utilisée. Des exemples peuvent être trouvés sur :

> stable = [https://www.debian.org/releases/stable/example-preseed.txt](https://www.debian.org/releases/stable/example-preseed.txt)  
> bookworm = [https://www.debian.org/releases/bookworm/example-preseed.txt](https://www.debian.org/releases/bookworm/example-preseed.txt)  
> buster = [https://www.debian.org/releases/buster/example-preseed.txt](https://www.debian.org/releases/buster/example-preseed.txt)  
> jessie = [https://www.debian.org/releases/jessie/example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt)  
> Main source = https://salsa.debian.org/debian/simple-cdd/blob/master/profiles/default.preseed

Ce fichier a une syntaxe particulière qui sera présenté dans un autre chapitre.

Tous les paramètres sont liés à _debconf_ sont trouvable sur le site **Debian preseeds - all the possibilities** [1] pour Debian Jessie, Stretch, Buster, Bullseye et Bookworm.

### NOM\_DU\_PROFILE.udebs (optionnel)

Ce fichier liste les paquets udebs de l’installateur Debian destinés à être utilisés lors de l’installation par _anna_ . Il n’est pas destiné à reporter des paquets cibles. Certaines inclusions très utiles comme les firmwares peuvent s’y trouver (Ce qui n’est plus nécessaire depuis Bookworm où les firmwares sont intégrés à l’ISO standard).

Le fichier est constitué d’une liste de noms de paquets à raison d’un nom par ligne.

### NOM\_DU\_PROFILE.postinst (optionnel)

C’est un script SHELL de post-installation exécuté après que le système soit installé (et après l’éventuelle _late\_command_ du fichier _preseed_ ). Comme c’est un script SHELL, vous devez lui donner des permissions d’exécution:

> $ chmod +x PROFILENAME.postinst

Le script devra être écrit comme si vous utilisiez celui-ci en étant sous le système d’exploitation (i.e: in-target) et non pas comme si vous étiez en ramdisk.

La commande preseed _late\_command_ est exécutée dans l’environnement de l’installateur alors que le fichier _.postinst_ du profil est exécuté dans l’"environnement cible.

**ATTENTION:** Le script est exécuté dans l’environnement cible et non pas dans l’environnement de l’installateur. Par contre les commande preseed _early\_command_ et _late\_command_ est exécutée dans l’environnement de l’installateur.

Il est préférable de pas utiliser de sourcing. Chaque script (de chaque profil) devra être écrit de façon indépendante plutôt que de se sourcer les uns les autres.

Il est conseillé d’utiliser un script SHELL POSIX plutôt que qu’un script BASH pour maximiser la compatibilité, mais ce n’est pas obligatoire.

### NOM\_DU\_PROFILE.preinst (optionnel)

C’est un fichier de script comme le fichier précédent. Il est exécuté avant l’installation, mais après la commande _early\_command_ du fichier _preseed_ .

**Note:** Il est préférable d’utiliser ce fichier au lieu de la commande _d-i preseed/early\_command_ string qui est limitée dans ses fonctionnalités. le fichier est exécuté dans l’environnement du système installé; _early\_command_ est exécuté dans l’environnement d’installation. Il faut être sûr de l’environnement voulu pour les commandes.

### NOM\_DU\_PROFILE.extras (optionnel)

Ce fichier liste les fichiers (`/path/vers/fichier`) que l’on veut inclure dans l’image ISO (un fichier `tar.gz`, `CHANGELOG.md` etc.). Lors de la construction de l’image ISO ils seront ajoutés. Ce fichier ne permet pas d’ajouter un répertoire, uniquement des fichiers nommés. Ces fichiers seront présents dans le sous répertoire `./simple-cdd` de l’image ISO.

Le fichier est constitué d’une liste de fichier avec le chemin d’accès (qui doit être accessible lors de la commande build-simple-cdd), un par ligne.

Il y a la possibilité d’ajouter des répertoires à l’ISO moyennant une modification du fichier _/usr/share/simple-cdd/tools/build/debian-cd_ . Nous verrons cette possibilité plus loin.

## Fichiers de configuration

Vous pouvez utiliser un fichier de configuration spécifique pour chaque profil, auquel cas il sera nommé comme les fichiers de profils _NOM\_DU\_PROFILE.conf_ , ou bien à votre convenance avec _.conf_ comme extension. Dans le premier cas, il sera dans le répertoire _.profiles_ . Dans l’autre cas, vous pouvez le mettre où vous voulez mais il est plus recommandé de les mettre dans un répertoire dédié _./confs._

Il est conseillé de mettre tous les paramètres communs à tous les profils dans un fichier de configuration général _./confs/\<mon\_fichier\_de\_conf\>.conf_ , et ce qui est spécifique au profil dans un fichier de conf de profil dans le répertoire ./profiles.

Personnellement je n’utilise qu’un fichier général de configuration _simple-cdd.conf_ dans le répertoire de base _$HOME/simple-cdd._

Vous pouvez avoir plusieurs fichiers de configuration général pour différentes versions ou personnalisation de vos images ISO (un pour avoir des profils A et B, un autre pour C et D, etc…). Mais _build-simple-cdd_ n’utilise qu’un seul fichier de configuration général.

Toutes les variables d’environnement ont un équivalent dans le fichier de configuration du profil.

#### Variables d’environnement

##### Déclaration de Distribution

Cette variable permet de déclarer la distribution sur laquelle vous voulez baser votre image ISO.

> dist=«&nbsp;stable&nbsp;»

#### Variable d’environnement d’architecture ARCH

Cette variable sert à définir l’architecture de votre image ISO en utilisant le mécanisme normal d’export de variable d’environnement du shell. En cas d’architecture multiple, il faut utiliser `ARCHES`.

> export ARCH=«&nbsp;amd64&nbsp;»

ou

> export ARCHES=«&nbsp;i386 amd64&nbsp;»

##### Variables d’environnement CONTRIB, NON-FREE et NON-FREE-FIRMWARE (Bookworm)

Par défaut, Debian ne prend en compte que les paquets libres. Vous pourriez vouloir autoriser l’utilisation des paquets _contrib, non-free_ et _non-free-firmware_ (pour bookworm). Pour cela il faut utiliser les variables CONTRIB NONFREE`. Pour sauvegarder ces variables, vous voudrez utiliser `mirror\_components` avec les mêmes valeurs :

> mirror\_components=«&nbsp;main contrib non-free non-free-firmware&nbsp;»

##### Créer ses propres variables d’environnement

Il est possible de créer ses propres variables d’environnement. Cela impliquera de créer aussi le code qui traitera ces variables.

Pour cela il faut modifier le fichier _/usr/share/simple-cdd/tools/build/debian-cd_ .

Par exemple, le code ci-dessous défini la variable et le code associé permettant de copier tout le contenu d’un répertoire dans le répertoire _/simple-cdd_ sur l’ISO; permettant ainsi de mettre à disposition de l’installatrion (fichier preinst et postinst) des ficheirs de configurations ou autres.

Définition dans _simple-cdd.conf_ (deux dernières lignes):

```
# Include alternative splash image 
export SPLASHPNG="$PWD/local_extras/conffiles-std/enedwaith-org-scdd.png"
# what components to be added to image
mirror_components="main contrib non-free non-free-firmware" 
# Add local extras files
cd_extras="$PWD/local_extras"

```

Code dans _debian-cd_ (à la suite de la ligne le paragraphe _# FIXME_ existante):

```
echo "Copy extras cd files and directories"
if [-d "$cd_extras"]; then
    echo "Copy all files from $cd_extras/. to $extras_dir/"
    cp -a $cd_extras/. $extras_dir/
fi

```

L’arborescence de l’ISO se présente donc ainsi:

```
/media//cdrom0
├── boot 
├── css 
├── debian -> . 
├── dists 
├── doc 
├── EFI 
├── install 
├── install.amd 
├── isolinux 
├── pics 
├── pool 
└── simple-cdd

```

Et dans / _simple-cdd_ (avec un profil _vmssrvcrypto2_ ) les répertoires ainsi copiés _conffiles-_\* :

```
/media/cdrom0/simple-cdd 
├── conffiles-box **
├── conffiles-lxqt **
├── conffiles-std ** 
├── default.downloads 
├── default.excludes 
├── default.packages 
├── default.preseed 
├── default.udebs 
├── simple-cdd.templates 
├── vmssrvcrypto2.downloads 
├── vmssrvcrypto2.extra 
├── vmssrvcrypto2.packages 
├── vmssrvcrypto2.postinst 
├── vmssrvcrypto2.preseed 
├── vmssrvcrypto2.udebs 
├── vmssrvcrypto.downloads

```

#### Profiles et Auto Profiles

Vous déclarez ici la liste des profils que vous voulez inclure dans votre image ISO. Les variables _profiles_ et _auto\_profiles_ doivent avoir les même valeurs. Les noms de profils sont séparés par un espace et tout doit figurer sur une seule ligne. Ces valeurs ne peuvent pas figurer dans un fichier de configuration spécifique à un profil _NOM\_DU\_PROFILE.conf_ mais à un fichier de configuration générique.

> profiles=«&nbsp;custom util&nbsp;»  
> auto\_profiles=«&nbsp;custom util&nbsp;»

#### Spécifications serveur

Pour vous assurer que vous obtenez les paquets `deb` et `udeb` d’un serveur spécifique, vous pouvez déclarer le nom du serveur et laisser _debian\_mirror_ et _rsync\_debian_ faire le reste :

> server=«&nbsp;[ftp.fr.debian.org](http://ftp.fr.debian.org)&nbsp;»  
> debian\_mirror=«&nbsp;ftp://$server/debian/&nbsp;»  
> rsync\_debian\_mirror=«&nbsp;$server::debian&nbsp;»

#### Omettre les manuels et les notes de versions

Pour un build plus petit, vous pourriez vouloir omettre les notes de version et les manuels.

> export OMIT\_MANUAL=1  
> export OMIT\_RELEASE\_NOTES=1

#### Les paquets locaux

Cette variable indique le répertoire où seront placés les paquets personnalisés dans le dépôt.

> local\_packages=«&nbsp;./local\_packages&nbsp;»

**NOTE:** Vous devez cependant inclure vos paquets personnalisés dans le fichier de profil des paquets _NOM\_DU\_PROFILE.packages_ pour qu’ils soient installés automatiquement.

## Création de l’image ISO

Pour créer l’image iso, il suffit d’appeler la commande **build-simple-cdd** , par exemple:

> $ build-simple-cdd --conf simple-cdd.conf --profiles vmssrvstd --logfile ./logs/build-2023-05-13-1826.log --verbose --debug --dvd 2\>/dev/null

## Exemples de fichiers

### Introduction

#### Construction des profils

Pour mes profiles, j’ai fait le choix d’avoir les fichiers de profils suivants:

- preseed, fichier à avoir au minimum

- downloads, packages, extras, udebs

- preinst, postinst

Quand le profil est avec un GUI, j’ai utilisé une configuration minimale de LXQT.

#### Partitionnement

Le partitionnement par défaut des profils de mes serveurs et mes machines utilisateurs de la façon suivante:

> /boot/efi -250Mo-  
> /boot (lvm) -250Mo-  
> / (lvm) -25% du volume group LVM-  
> /home (lvm) -5% du volume group LVM-  
> /var (lvm) -25% du volume group LVM-  
> /var/log (lvm) -10% du volume group LVM-  
> /var/log/audit (lvm) -10% du volume group LVM-  
> /var/tmp (lvm) -5% du volume group LVM-  
> /tmp (lvm) -5% du volume group LVM-  
> swap (lvm) deux fois la RAM limité à 4Go (qui sera éventuellement modifié suivant les besoins)

Le partitionnement est conçu pour aller jusque 10T avec une limite de base à 300Go (les disques inférieurs ou égaux à 300 Go sont donc partitionné à 100%).

Le choix du découpage est dû à des considération personnelles de sécurité et d’utilisation:

- La racine est séparée de /boot, /var/, /home, /tmp

- Les répertoires utilisateurs sont indépendant et ont des paramètres nodev, nosuid

- /var est indépendant du fait des applications (web par exemple)

- /var/log indépendant pour éviter que les logs ne sature tout le disque, et nodev, nosuid, noexec

- /var/log/audit, idem /var/log pour auditd

- /var/tmp répertoire de travail isolé avec nodev nosuid, mais avec exec (pour les scripts des packages)

- /tmp idem /var/tmp mais avec droits exec car certains packages ne sont pas conforme quand à l’utilisation de l’espace temporaire, sinon il devrait être en noexec.

#### Pre-installation

Le script de pré-installation me sert à effacer le disque sur lequel je vais procéder à l’installation. j’ai souvent eu des erreurs avec le preseed sur la suppression de l’(ancien partionnement. La documentation de preseed étant très peu complète.

#### Post-installation

J’ai utilisé les recommandations de CIS Workshop dans mes fichiers de post-installation _.postinst_ de mes profils.

Dans cette post-installation, je configure, j’installe ou je copie:

- Le splash screen de grub

- le fichier de conf de ulogd

- securetty

- le clavier FR pour le shell grub

- La police Ringbearer pour grub (pour un usage futur)

- Les fichiers LXQT du répertoire utilisateur si profil avec GUI

- La configuration et les fichier de configuration réseau

- La configuration motd avec neofetch et issue/issue.net

- Le fichier fstab

- Du hardening des process, ASLR et core dump

- Activation en complain de apparmor

- La configuration des logs. J’ai choisi de conserver rsyslog car plus facile à utiliser que journalctl

- La configuration SSHD avec les options suivantes:

1. Ensure permissions on /etc/ssh/sshd\_config are configured
2. Configure protocol and listen parameters
3. Ensure permissions on SSH private host key files are configured
4. Ensure permissions on SSH public host key files are configured
5. Ensure SSH access is limited
6. Ensure SSH access is limited
7. Ensure SSH root login is disabled
8. Ensure SSH HostbasedAuthentication is disabled
9. Ensure SSH IgnoreRhosts is enabled
10. Ensure SSH PermitEmptyPasswords is disabled
11. Ensure SSH PermitUserEnvironment is disabled
12. Ensure SSH X11 forwarding is disabled
13. Ensure SSH AllowTcpForwarding is disabled
14. Ensure only strong Ciphers are used
15. Ensure only strong Key Exchange algorithms are used
16. Ensure only strong MAC algorithms are used
17. Ensure SSH warning banner is configured
18. Ensure SSH MaxAuthTries is set to 4 or less
19. Ensure SSH MaxStartups is configured
20. Ensure SSH MaxSessions is set to 10 or less
21. Ensure SSH LoginGraceTime is set to one minute or less
22. Ensure SSH Idle Timeout Interval is configured

- La configuration de grub standard

1. Autorisation de os-probe
2. Splash screen
3. Couleur d’arrière-plan
4. Couleur du menu
5. Taille de la console
6. Activation apparmor et auditd

- La configuration de grub en disque chiffré (/boot est dans la partition chiffrée)

1. Activer le cryptodisk
2. Modifier le paramètre PBKDF en PBKDF2 au lieu de Argon seul pris en compte par l’installeur
3. Installation de grub-efi

- La configuration de l’heure avec un serveur NTP local (le parefeu bloque les tentative de synchro vers internet)

- Configuration des users pour un mot de passe sur 30 jours avant locking (sauf root)

- Configuration complète en automatique de shoewall.conf, shorewall, shorewall6 et shorewall-init

- Installation de webmin (uniquemen pour une utilisation à la demandeet uniquement sur réseau local. L’application est desactivée par defaut.

- Initialisation de aide

- Préférence réseau en IPv4 devant IPv6

- Configfuration et installation GeoIP

- Desactivation de rsync

- Construction de la base mlocate

- Configuration du swap avec celui concernant l’installation (en cas de multi-boot de distribution linux)

- Update de apt-file

- Configuration vimrc

- Configfurations sysctl

- Configuration pam.d

- Configuration bashrc et profile

- Configfuration login\_defs

- Configuration auditd et des règles

- Configuration chkboot

- Configuration netdata

### Preseed

Les fichiers pressed de mes profiles considèrent une installation sur un seul disque (mais il est facile d eles faire évoluer sur plusieurs disques).

J’utilise systématiquement LVM pour la facilité de gestion des tailles de volumes.

J’utilise la commande early\_command pour installer des fichier udebs particulier, effacer les partitions existante du disque, la selection de l’interface réseau utilisée pour l’installation. L’installation utilise le DHCP, mais si celui-ci echoue, alors une configuration manuelle est utilisée.

Le système est installé en français mais on peut choisir la langue de l’interface de l’installateur.

Un hostname par defaut et un domaine DNS par defaut sont configurés.

Chargement automatique des firmware est activé (Bookworm).

Le miroir des dépôt est configfuré sur [deb.debian.org](http://deb.debian.org). J’ai une version qui utilise un dépôt local sur un NAS.

L’utilisateur root et un utilisateur par défaut sont configurés. avec des mots de passe chiffrés dans le preseed.

L’horloge et le serveur de temps pour l’installateur sont définis.

Configuration du boot avec GPT, EFI et le cas échéant pour le chiffrement LUKS2:

1. Utilisation de dm-crypt
2. Cipher: Serpent
3. Key hash: SHA256
4. Key size: 256
5. ivAlgorithm: ecb

Dans le cas d’un profil LVM over LUKS, les options d’installation grub seront paramétrée pour une installation sans grub. Celle-ci est alors ré&alisée par le script de post-installatrion. en effet, l’installateur Debian ne sait pas installer un système avec /boot chiffré (à cause de l’"option par defaut du PBKDF en Argon2i).

Les mises à jour du système sont configuré mais sans mises à jour en automatique.

Par défaut les tasksel installées est _standard, desktop, print-server_ sont desactivées.

La commande _late\_command_ une partition temporaire est supprimée. En effet, la dernière partition créée par l’installateur utilise tout l’espace LVM disponible. Je créée donc une partition _todelete_ pour corriger cela. C’est un bug/defaut de l’installateur.

# Exemples de profils

## Standard

[vmssrvstd.downloads.txt](https://www.debian-fr.org/uploads/short-url/iWwA1hy1qw9LdQOA2TB4O8ia4wX.txt) (4,9 Ko)  
[vmssrvstd.extra.txt](https://www.debian-fr.org/uploads/short-url/n1hl9OXls8Plyx3DSSwL8HhRHSR.txt) (275 Octets)  
[vmssrvstd.packages.txt](https://www.debian-fr.org/uploads/short-url/xxdYCDrg3Xh89KGbNTYw9zXgFFt.txt) (1,5 Ko)  
[vmssrvstd.postinst.txt](https://www.debian-fr.org/uploads/short-url/16OkTYt1OS6mjxK0JzkchOcYr73.txt) (62,5 Ko)  
[vmssrvstd.preinst.txt](https://www.debian-fr.org/uploads/short-url/8knmbvZfFJ9lLMaSPpmgL9W8yk0.txt) (596 Octets)  
[vmssrvstd.preseed.txt](https://www.debian-fr.org/uploads/short-url/9FumQIy3ulCeEkKMDkI2vAkWqpg.txt) (28,4 Ko)  
[vmssrvstd.udebs.txt](https://www.debian-fr.org/uploads/short-url/7iBDfmuNEmuLCuEmdg3Q4MSrVfx.txt) (360 Octets)

## Standard avec LXQT minimal

[vmssrvstdlxqt.downloads.txt](https://www.debian-fr.org/uploads/short-url/cAZ88Q9Z6E227qfRRbo1lDa1Gxx.txt) (5,6 Ko)  
[vmssrvstdlxqt.extra.txt](https://www.debian-fr.org/uploads/short-url/yFY1HYCgkQjBCA2r93c130WHG8Q.txt) (279 Octets)  
[vmssrvstdlxqt.packages.txt](https://www.debian-fr.org/uploads/short-url/4Pt3Xu99AyP0XCSTz43sp1NwOsl.txt) (2,9 Ko)  
[vmssrvstdlxqt.postinst.txt](https://www.debian-fr.org/uploads/short-url/lLiB8RnzUwTNLN15mFHzkQDT1aL.txt) (62,9 Ko)  
[vmssrvstdlxqt.preinst.txt](https://www.debian-fr.org/uploads/short-url/vy1kOXAzjQ6tX0V9xRt0hMdbzPC.txt) (600 Octets)  
[vmssrvstdlxqt.preseed.txt](https://www.debian-fr.org/uploads/short-url/9zZZhAnA6xEDKWIcOwuvlNfotAk.txt) (28,4 Ko)  
[vmssrvstdlxqt.udebs.txt](https://www.debian-fr.org/uploads/short-url/jZUOZUk2a7haTXhXs5tFvmhE1tn.txt) (364 Octets)

## Chiffré LVM over LUKS

[vmssrvcrypto.downloads.txt](https://www.debian-fr.org/uploads/short-url/AipacQzdJvhl2Z2o5nuBv1NAS3V.txt) (4,9 Ko)  
[vmssrvcrypto.extra.txt](https://www.debian-fr.org/uploads/short-url/weCdJ70glnd1cfCa1bC35hrLAvY.txt) (278 Octets)  
[vmssrvcrypto.packages.txt](https://www.debian-fr.org/uploads/short-url/xfkRa1efMLgCgqLwZ966U8nVQXK.txt) (1,6 Ko)  
[vmssrvcrypto.postinst.txt](https://www.debian-fr.org/uploads/short-url/6U78LFlFgcQOJAdkdm2BZ4Mryik.txt) (63,6 Ko)  
[vmssrvcrypto.preinst.txt](https://www.debian-fr.org/uploads/short-url/dSm0BFyKIFSPhXdXjU2FCTjokyp.txt) (599 Octets)  
[vmssrvcrypto.preseed.txt](https://www.debian-fr.org/uploads/short-url/huBpRcfNGmEJoYXRTKaL1vci9nz.txt) (29,5 Ko)  
[vmssrvcrypto.udebs.txt](https://www.debian-fr.org/uploads/short-url/zVukbrYRq1uhhndONHZEMDWPvCo.txt) (363 Octets)

## Chiffré LVM over LUKS avec LXQT minimal

[vmssrvcryptolxqt.downloads.txt](https://www.debian-fr.org/uploads/short-url/8h8gGrVnV91dXpD5pXDAQ7ORncd.txt) (5,6 Ko)  
[vmssrvcryptolxqt.extra.txt](https://www.debian-fr.org/uploads/short-url/zDzXczbtrYE7Cdhzp3O1oGuKEcD.txt) (282 Octets)  
[vmssrvcryptolxqt.packages.txt](https://www.debian-fr.org/uploads/short-url/pf9Nx4XvvZbJav1OMs7BOwPQaV5.txt) (3,0 Ko)  
[vmssrvcryptolxqt.postinst.txt](https://www.debian-fr.org/uploads/short-url/rJpwFFHy1XpReJjnGn1VY5KtCKN.txt) (63,6 Ko)  
[vmssrvcryptolxqt.preinst.txt](https://www.debian-fr.org/uploads/short-url/a1SmH8RUGGZ8rKzCIID0tqw14YX.txt) (603 Octets)  
[vmssrvcryptolxqt.preseed.txt](https://www.debian-fr.org/uploads/short-url/hAchos40ULN0Dn2aQRr4OkHEoD6.txt) (29,5 Ko)  
[vmssrvcryptolxqt.udebs.txt](https://www.debian-fr.org/uploads/short-url/u1olUKApm4vAcgpOADUW1KhDWKW.txt) (367 Octets)

# Customisation

Il est fastidieux de maintenir un nombre important de profils sur lesquels une modification identique est à réaliser. J’ai donc créé une architecture de ficheir et un script pour encapsuler _build-debian-cdd_.

### ./build-simple-cdd.sh

En premier lieu, afin de pouvoir gérer facilement des éléments communs à tous les fichiers j’ai créé un script spécifique qui encapsule **build-simple-cdd**. Je l’ai simplement appelé ./ _build-simple-cdd.sh_ .

Ce script dispose des fonctionnalités portées par les options suivantes:

-h|–help : imprime l’aide.

-p|–profiles : Permet de spécifier la liste des profiles qui seront générés (nom des profiles séparés par une virgule sans espaces). si le profile est _all_ alors tous les profils seront traités.

-g|–generate : Genère l’ISO finale.

-r|–rsync : Une synchronisation de sauvegarde de l’espace de travail est réalisée.

-d|–distant : La synchronisation est réalisée sur un serveur distant qui utilise par défaut un NAS au sein de mon réseau.

Default device //diskstation/homes

Default mount point /media/mounts/diskstation/homes (attention j’ai configuré mon utilisateurs pour pouvoir utiliser ce point de montages)

-m|–mount : Définit le point de montage à utiliser

-l|–local : La synchronisation se fera dans un répertoire local.

-f|–force-root : utilise l’option _–force-root_ de **build-simple-cdd**. Utile uniquement si vous utilisez simple-cdd sous _root_ .

Le fonctionnement de ce script est décrit dans le schéma suivant:

 ![Build-simple-cdd.sh](https://www.debian-fr.org/uploads/default/original/2X/2/266a06fcbf3b920498fee7f700423f3aa2518169.png)

./build-simple-cdd.sh

Le script charge le fichier de configuration qui se trouve dans un répertoire spécifique _./conf._

Ce fichier de configuration décrit les fichiers de profils à créer avec les éléments à concaténer.

Pour chaque type de fichier de profil, il existe un répertoire \_ dans lequel se trouve tous les bouts de fichiers nécessaire.

L’intérêt de ce procéder est de permettre facilement la réutilisation de bout de code (postinst, preinst) ou de bout de configuration (download, packages, preseed, etc..).

Ainsi, si par exemple vous ne modifiez que la partie partitionnement de votre fichier _preseed_ , vous n’avez pas à modifier le ou les fichiers de profiles, vous modifiez simplement l’élément correspondant dans le répertoire _\_preseed_ . C’est très utile quand on manipule de nombreux profils, dont des pans entier sont communs.

Par exemple, j’ai décomposé les fichiers postints en plus de 30 sous éléments. La gestion de correctifs, des évolutions ou l’ajout de nouvelles fonctionnalités sont très simple, et la constitution d’un profile ne s’apparente plus qu’à un jeu de Lego.  
Contenu du répertoier \_postinst et des sous-éléments Postinst

 ![image](https://www.debian-fr.org/uploads/default/original/2X/2/20c7909d1b70573f34a8a835e79b63500da6132b.png)

# Profiles Imbriqués

Les profiles imbriqués sont des profiles dont on peut demander l’installation simultanée. En clair, les fichiers de conf de chaque profiles sont pris en compte ensemble.  
**NOTE:** Je vous conseille de ne pas utiliser deux profiles avec un fichier preseed.  
Par contre pour l’ajout optionnel d’application c’est tout à fait envisageable. Cela concerne les autres fichiers tels que:

- .downloads
- .packages
- .preinst
- .postinst
- .extra

On peut ainsi avoir comme un système de packaging qui, au lieu d’être prédéfini dans ses versions et son contexte de packaging, permet de moduler entre profils d’installation du serveur de base et profils applicatifs. Cela évite de faire autant de profils serveurs que d’utilisations.  
En fait, on peut ainsi avoir des installations à la carte.

Par exemple, on peut vouloir faire un serveur apache, pour cela:

- Profil 1 : le profile d’un serveur de base complet
- Profil 2: les fichiers liés à l’installation d’apache (.packages, .postinst)

C’est utilisable presque à l’infini. Pour un serveur XAMP:

- Profil d’installation d’un serveur de base
- Profil d’installation d’Apache (avec un postinst de configuration de base)
- Profil d’installation de MariaDB (avec le postinst pour la configuration de base)
- Profil d’installation de PHP (avec le postinst pour la configuration de base)

Vous voulez faire une installation pour une application particulière ou des besoins particuliers:

- Profil d’installation des paquets de PHP et de l’applicatoin, le tout avec le postinst qui s’occupe de la configuration.

**Le potentiel d’utilisation est très large.**  
Cependant, en particulier pour les fichiers .preinst et .postinst, il faut impérativement faire les tests préalables à toute action (dans le script postinst) pour s’assurer qu’on n’interfère pas avec les fichiers postinst correspondant des autres profiles. Ce la nécessite donc d’être très méticuleux.

1. ↑ [https://preseed.debian.net/debian-preseed/](https://preseed.debian.net/debian-preseed/)

_Dernière mise à jour: 05/03/2024_

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Janvier 19, 2021, 10:59 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/2 "2021-01-19T10:59:43Z")

</div>

A épinglé ce sujet (le Janvier 19, 2021, 10:59 UTC)



---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Janvier 19, 2021, 11:00 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/3 "2021-01-19T11:00:52Z")

</div>

Merci pour ce «&nbsp;travail&nbsp;» accompli.  
De fait, j’ai basculé le post en mode wiki, ainsi il pourra être éditer + facilement, au besoin, et l’est épinglé !

* * *

_Ahh, j’aimerais tellement pouvoir faire la même chose mais pour…_ Devuan Ceres 😛

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Janvier 19, 2021, 12:44 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/4 "2021-01-19T12:44:40Z")

</div>

Merci 🙂Ceres? j’utilise maxima 😉

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Février 10, 2021, 5:36 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/5 "2021-02-10T17:36:44Z")

</div>

> [@Zargos](#):
>
> 🙂Ceres? j’utilise maxima

Sincèrement, j’ai rien compris à ta réponse ! ???

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Février 10, 2021, 5:42 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/6 "2021-02-10T17:42:57Z")

</div>

😅  
le Ceres dont tu parles n’a rien à voir avec les mathématiques?  
Bon autant pour moi, j’avais cherché mais je n’ai pas trouvé de quoi tu parlais 🙂

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Février 11, 2021, 7:33 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/7 "2021-02-11T07:33:59Z")

</div>

> [@Zargos](#):
>
> le Ceres dont tu parles n’a rien à voir avec les mathématiques

Tu parles bien de Debian, là, non !?  
Devuan Ceres n’est que le pendant de Debian Sid, sans systemd !

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 11, 2021, 7:38 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/8 "2021-02-11T07:38:14Z")

</div>

> [@Zargos](#):
>
> … j’avais cherché mais je n’ai pas trouvé de quoi tu parlais

Voir :

> **[Release Information | Devuan GNU+Linux Free Operating System](https://www.devuan.org/os/releases)**
>
> Free GNU+Linux base OS. Devuan is a fork of Debian without systemd. Devuan provides a safe upgrade path from Debian, to ensure the right to Init Freedom and avoid entanglement.

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Février 11, 2021, 10:36 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/9 "2021-02-11T22:36:34Z")

</div>

> [@PengouinPdt](#):
>
> Tu parles bien de Debian, là, non !?

ben dans ce cas il n’y a pas de problème pour faire du simple-cdd si le paquet existe dans ceres.

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Février 11, 2021, 10:50 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/10 "2021-02-11T22:50:44Z")

</div>

> [@Zargos](#):
>
> ben dans ce cas il n’y a pas de problème pour faire du simple-cdd si le paquet existe dans ceres

Il existe.  
Et, essaye donc… et tu m’en dis des nouvelles, et surtout si tu arrives à un résultat, tu m’expliques comment, stp 😉  
(_bien sûr, un résultat pour Devuan, non pas Debian_) 😛

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Février 12, 2021, 11:16 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/11 "2021-02-12T23:16:00Z")

</div>

> [@PengouinPdt](#):
>
> Il existe.  
> Et, essaye donc… et tu m’en dis des nouvelles, et surtout si tu arrives à un résultat, tu m’expliques comment, stp

j’essayerais alors, à l’occase 🙂 entre deux occupations 😉  
faut d’abord que je m’installe une VM avec Devuan

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Février 12, 2021, 11:48 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/12 "2021-02-12T23:48:52Z")

</div>

Le jour où tu es décidé, informes-moi, je te générerais une mini.iso pour la Ceres 😉  
Ce qui devrait te permettre de l’installer…

Et, oui, j’arrive à générer une mini-iso, ~ 50Mo, avec le Debian-Installer modifié de manière adéquate.  
Mais pas le reste…  
(enfin, le script officiel de debian-installer me la génère) 😛

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Février 14, 2021, 1:50 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/13 "2021-02-14T13:50:41Z")

</div>

Bon j’ai fait une install de la beowulf en netinst tranquillement.  
par contre il semble que le simple-cdd soit buggé  
Impossible d’aller au delà du download de beowulf\_Release. D’après mes premieres analyses, il semble que cela soit du à des écart de cohérence entre la structure des repository Devuan vis à vis de debian (peu etre le contenu des en-tête des fichiers releases).

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Mai 6, 2023, 9:27 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/17 "2023-05-06T21:27:37Z")

</div>

A scindé ce sujet (le Mai 6, 2023, 9:27 UTC)

6 messages ont été scindés en un nouveau sujet : [Demande support pour iso et simple-cdd](https://www.debian-fr.org/t/demande-support-pour-iso-et-simple-cdd/88178)

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Février 29, 2024, 8:41 UTC](https://www.debian-fr.org/t/simple-cdd-howto/83749/20 "2024-02-29T08:41:05Z")

</div>

A scindé ce sujet (le Février 29, 2024, 8:41 UTC)

3 messages ont été scindés en un nouveau sujet : [Simple-cdd et zstd](https://www.debian-fr.org/t/simple-cdd-et-zstd/89630)
