Construire ses propres images Raspbian

Le problème

Si, comme moi, la première chose que vous faites après le démarrage d’une Raspberry PI sur distribution Raspbian c’est de désinstaller tous les logiciels inutiles, alors j’ai trouvé le logiciel qu’il vous faut: pi-gen. Il s’agit ni plus ni moins du logiciel utilisé pour construire les images Raspbian.

Correctement configuré, il vous permettra de construire une distribution Raspbian aux petits oignons.

Raspberry 3 dans son boitier

La solution

La première étape consiste à récupérer le contenu du dépôt git sur github.

git clone https://github.com/RPi-Distro/pi-gen

Il y a ensuite quelques éléments à modifier:

  1. le fichier Dockerfile afin de contourner un bug qui empêche les machines 64 Bits la construction des images;
  2. le fichier config pour écraser quelques valeurs par défaut;
  3. les «/stages/» qui sont les différentes étapes de constructions de l’image Raspbian.

Utiliser Docker

J’ai simplement remplacé la première ligne afin de construire les images avec des programmes 32 bits:

diff --git a/Dockerfile b/Dockerfile
index 2e53149..d680d7f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM debian:buster
+FROM i386/debian:buster
 
 ENV DEBIAN_FRONTEND noninteractive

Quelques paramètres de base

Le fichier config contient quelques paramètres de base de l’installation:

  • l’utilisateur par défaut et son mot de passe: FIRST_USER_NAME et FIRST_USER_PASS;
  • si ssh est actif au démarrage (il ne l’est pas par défaut): ENABLE_SSH;
  • les paramètres wifi: WPA_ESSID, WPA_PASSWORD et WPA_COUNTRY;
  • l’image à construire doit-elle être compressée ou pas: DEPLOY_ZIP;
  • la timezone, qui est située à Londres par défaut, et donc décalée d’une heure avec Paris et Berlin: TIMEZONE_DEFAULT;
  • la liste des stages à exécuter (cf. ci-après), configurée ainsi chez moi: STAGE_LIST="stage0 stage1 stage2".

La liste complètes des paramètres est lisibles dans le fichier README du projet.

Configuration des stages

Les stages sont les étapes successives de construction de l’image Raspbian. Il y a cinq étapes. L’image est bootable après l’étape 1. L’étape 2 contient la configuration de la timezone, l’installation et la configuration du client ntp, la création du premier utilisateur, etc.

Les stages 3, 4 et 5 installent des logiciels supplémentaires dont X11, un environnement bureautique, etc.

De mon côté j’ai construit le stage 2, mais en le modifiant pour y enlever des paquets que je n’utiliserai pas. Pour cela j’ai modifié les fichiers nommés XX-packages présents dans les sous répertoires du répertoires stage2.

Il est aussi de créer son propre stage sur mesure, et de l’inclure dans le paramètre STAGE_LIST. Là encore le fichier README est votre ami.

Construction des images

Construire l’image Raspbian est ensuite aussi simple que:

./build-docker.sh

L’image sera créée dans le répertoire deploy. Ensuite, il suffit d’un cat /path-to/deploy/yourimage-name.img > /dev/sdX/dev/sdX est votre carte SD, et vous voilà prêt à démarrer votre Raspberry avec votre distribution construite sur mesure!