Comment créer sa propre distribution Linux avec un noyau personnalisé et BusyBox (de A à Z)

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 :

ComposantRôle
Noyau (Kernel)Gère le CPU, la mémoire, les drivers
BootloaderDémarre le système (ex: GRUB)
Root filesystemArborescence système (/bin, /etc, /proc…)
Outils utilisateursCommandes shell (ls, cp, mount…)
Init systemLance 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é !

×