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.
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:
- le fichier
Dockerfile
afin de contourner un bug qui empêche les machines 64 Bits la construction des images; - le fichier
config
pour écraser quelques valeurs par défaut; - 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
etFIRST_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
etWPA_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
où /dev/sdX
est votre carte SD, et vous voilà prêt à démarrer votre Raspberry avec votre distribution construite sur mesure!