Créer sa propre distribution Linux est un excellent moyen de comprendre en profondeur le fonctionnement du système. Dans cet article, nous allons voir comment construire une mini-distribution Linux basée sur :
- Un noyau Linux compilé à la main
- BusyBox pour les outils système
- Un système minimal bootable via initramfs
1️⃣ Comprendre les composants d’une distribution Linux
Une distribution Linux contient principalement :
| Composant | Rôle |
|---|---|
| Noyau (Kernel) | Gère le CPU, la mémoire, les drivers |
| Bootloader | Démarre le système (ex: GRUB) |
| Root filesystem | Arborescence système (/bin, /etc, /proc…) |
| Outils utilisateurs | Commandes shell (ls, cp, mount…) |
| Init system | Lance les services au démarrage |
Dans notre cas :
- Kernel officiel
- BusyBox comme toolbox minimal
- Init simple via script
/init
2️⃣ Télécharger le noyau Linux
Le noyau officiel vient de :
🔗 Linux Kernel Organization
Télécharge la version stable :
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.x.tar.xz
tar -xf linux-6.x.tar.xz
cd linux-6.x
3️⃣ Configurer le Kernel
Lance la configuration :
make menuconfig
Active au minimum :
🔹 Drivers essentiels
- Support CPU correct (x86_64 ou ARM)
- Filesystem ext4
- Support proc filesystem
- Support tmpfs
- Support devtmpfs
- Drivers SATA ou NVMe selon ton PC
🔹 Général
- Enable loadable module support (optionnel)
- Support initramfs
Puis compile :
make -j$(nproc)
Le kernel généré sera dans :
arch/x86/boot/bzImage
4️⃣ Installer BusyBox
BusyBox fournit toutes les commandes essentielles dans un seul binaire.
🔗 BusyBox
Téléchargement :
wget https://busybox.net/downloads/busybox-1.36.0.tar.bz2
tar -xjf busybox-1.36.0.tar.bz2
cd busybox-1.36.0
Configurer :
make menuconfig
Activer :
- Build static binary (important)
- ash shell
- mount
- ls, cp, mkdir, etc.
Compiler :
make
make CONFIG_PREFIX=../rootfs install
5️⃣ Créer le Root Filesystem
Créer l’arborescence :
mkdir -p rootfs/{bin,sbin,etc,proc,sys,dev,tmp}
BusyBox va remplir /bin.
Créer un script init :
nano rootfs/init
Contenu :
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devtmpfs none /dev
echo "Bienvenue dans mon Linux minimal"
exec /bin/sh
Rendre exécutable :
chmod +x rootfs/init
6️⃣ Créer l’initramfs
cd rootfs
find . | cpio -o -H newc | gzip > ../initramfs.cpio.gz
7️⃣ Tester avec QEMU (recommandé)
🔗 QEMU
qemu-system-x86_64 \
-kernel linux/arch/x86/boot/bzImage \
-initrd initramfs.cpio.gz \
-nographic \
-append "console=ttyS0"
Si tout va bien → tu obtiens un shell minimal 🎉
8️⃣ Ajouter plus de fonctionnalités
Tu peux maintenant ajouter :
- Support réseau (CONFIG_NET)
- DHCP client (udhcpc via BusyBox)
- Support USB
- Support WiFi
- OverlayFS
- Modules kernel
9️⃣ Structure finale de ta mini distro
my-linux/
├── linux/ # source kernel
├── busybox/
├── rootfs/
├── initramfs.cpio.gz
└── bzImage
🔟 Aller plus loin
Pour créer une vraie distribution complète :
Tu peux étudier :
- Linux From Scratch
- Buildroot
- Yocto Project
🎯 Résultat
Avec ces étapes tu as :
✅ Ton propre kernel compilé
✅ Ton propre root filesystem
✅ Un système Linux bootable
✅ Un shell minimal fonctionnel
⚡ Pourquoi c’est important ?
Créer ta propre distro te permet de :
- Comprendre le boot Linux
- Comprendre le rôle des drivers
- Optimiser pour embedded (ESP32 Linux impossible mais ARM oui 😉)
- Construire un OS minimal sécurisé
Abonnez-vous à notre Newsletter !
Restez à jour avec les dernières tendances, articles et actualités directement dans votre boîte de réception. En vous abonnant à la newsletter de Wordly Fusion, vous recevrez des contenus exclusifs, des recommandations personnalisées, et les nouveautés les plus passionnantes de notre site. Ne manquez aucune mise à jour et soyez toujours informé des sujets qui vous intéressent. Inscrivez-vous dès maintenant pour rejoindre notre communauté !
