Construire un noyau Linux à l'ancienne

Objectif principal et variantes de recherche
- Objectif principal : compiler un noyau Linux depuis les sources
- Variantes pertinentes : construire noyau linux, compiler kernel sans rpm, appliquer patch kernel, menuconfig guide, dépannage compilation noyau
3 Construire un noyau de façon traditionnelle
Ce chapitre décrit une méthode universelle applicable à n’importe quel système Linux. Comme rien n’est spécifique à Fedora ici, vous n’obtiendrez pas de paquet RPM à la fin — vous installez le noyau directement.
Important : travaillez en tant que root ou avec sudo. Sauvegardez /boot et la configuration GRUB avant de modifier le chargeur.
3.1 Télécharger les sources du noyau
Nous plaçons le tarball du noyau dans /usr/src. Allez sur www.kernel.org et choisissez la version souhaitée (ex. linux-2.6.18.2.tar.bz2). Vous pouvez trouver les noyaux 2.6 ici : http://www.kernel.org/pub/linux/kernel/v2.6/.
Exemple de commandes :
cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.2.tar.bz2
Ensuite, on décompresse et on crée un lien symbolique linux pointant vers le répertoire des sources :
tar xjf linux-2.6.18.2.tar.bz2
ln -s linux-2.6.18.2 linux
cd /usr/src/linux
Note : conservez le lien symbolique linux ; il facilite les mises à jour ultérieures et les scripts qui attendent /usr/src/linux.
3.2 Appliquer des patchs aux sources du noyau (optionnel)
On applique un patch si un pilote ou une fonctionnalité n’est pas encore intégrée au noyau principal. Les patchs sont souvent distribués sous forme compressée (patch.bz2).
Exemple d’application d’un patch — d’abord en mode test :
bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch.bz2 | patch -p1
La première commande simule l’application et n’altère pas les sources. Si elle signale des erreurs, n’exécutez pas la deuxième commande.
Les « prepatches » (patches de type -rc) correspondent à des versions alpha : ils doivent être appliqués à la version majeure précédente des sources. Exemple : pour compiler 2.6.19-rc5, appliquez patch-2.6.19-rc5.bz2 sur les sources 2.6.18 (et non sur 2.6.18.2).
Exemple d’application d’un prepatch :
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc5.bz2
cd /usr/src/linux
bzip2 -dc /usr/src/patch-2.6.19-rc5.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch-2.6.19-rc5.bz2 | patch -p1
Note : si vous utilisez une branche de développement, lisez toujours la documentation fournie avec le patch pour connaître la version cible et les dépendances.
3.3 Configurer le noyau
Il est judicieux de reprendre la configuration du noyau en cours comme point de départ. Copiez le fichier de configuration courant dans le répertoire des sources :
make mrproper
cp /boot/config-`uname -r` ./.config
Puis lancez l’interface de configuration :
make menuconfig
Dans le menu, choisissez “Load an Alternate Configuration File” et sélectionnez .config (qui contient la configuration de votre noyau actif) pour l’utiliser comme base.
Parcourez les options (pilotes, systèmes de fichiers, options noyau) et adaptez selon votre matériel et vos besoins. Quand vous choisissez Exit, répondez Yes à la question Save your new kernel configuration?
Conseils de configuration rapide :
- Activez les pilotes nécessaires au démarrage (SATA/RAID, contrôleur réseau) directement dans le noyau (built-in) si vous avez un initramfs minimal.
- Placez les pilotes non essentiels en tant que modules pour réduire la taille du noyau et accélérer la compilation des itérations suivantes.
- Si vous n’êtes pas sûr, conservez la valeur de votre configuration courante.
Important : conservez une copie du fichier .config original avant chaque modification majeure.
3.4 Compiler et installer le noyau
Pour compiler et installer :
make all
make modules_install
make install
La compilation prend du temps : cela peut aller de quelques minutes à plusieurs heures selon l’architecture CPU, le nombre de cœurs et les options activées.
La commande make install crée généralement un initramfs/initrd et met à jour /boot ainsi que la configuration GRUB (/boot/grub/menu.lst sur les anciens systèmes). Après l’installation, éditez /boot/grub/menu.lst et assurez-vous que la ligne default pointe vers l’entrée du noyau souhaité (0 = première entrée).
Par exemple, éditez avec vi :
vi /boot/grub/menu.lst
Exemple de menu.lst généré (illustration) :
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.18.2)
root (hd0,0)
kernel /vmlinuz-2.6.18.2 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18.2.img
title Fedora Core (2.6.18-1.2798.fc6)
root (hd0,0)
kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-1.2798.fc6.img
Redémarrez le système :
shutdown -r now
Après redémarrage, vérifiez la version du noyau :
uname -r
Cela doit afficher, par exemple :
2.6.18.2
Dépannage au démarrage
Si le système ne démarre pas sur le nouveau noyau, interrompez le démarrage de GRUB en pressant une touche lorsque l’écran d’amorçage apparaît : Ensuite, sélectionnez votre ancien noyau dans le menu GRUB et démarrez :
Une fois revenu sur l’ancien noyau, corrigez la configuration : soit activez des pilotes manquants, soit reconstruisez l’initrd, ou supprimez l’entrée défaillante de /boot/grub/menu.lst.
Notes de dépannage courantes :
- Problème : pas de périphérique racine (root device not found). Cause : pilote disque non inclus dans le noyau. Solution : recompiler en intégrant le pilote disque.
- Problème : pas d’interface réseau. Cause : pilote NIC compilé en module mais absent de l’initramfs. Solution : inclure le module dans l’initramfs ou compiler le pilote builtin.
Approches alternatives
- Utiliser les paquets fournis par la distribution (recommandé pour la plupart des environnements de production).
- Construire un paquet (deb/rpm) au lieu d’installer directement : facilite la gestion et la réinstallation.
- DKMS pour pilotes tiers : permet de recompiler automatiquement les modules au changement de noyau.
- Utiliser des environnements de test (machines virtuelles, containers) avant d’appliquer sur des machines critiques.
Mini-méthodologie : boucle itérative de compilation
- Copier la configuration courante.
- Modifier une seule option à la fois si possible.
- make bzImage (ou make) puis make modules_install; make install.
- Tester en redémarrant.
- Si échec, revenir à une configuration précédente ou à l’ancien noyau.
Cette approche réduit la surface d’erreur et accélère le diagnostic.
Check-list opérateur (administrateur)
- Sauvegarder /boot et /etc/grub.conf ou /boot/grub/menu.lst
- Conserver l’ancien noyau indisponible pour boot (ne pas le supprimer)
- Documenter la version de compilation et les options choisies (.config)
- Préparer un média de récupération (USB, CD) au cas où
- Tester le nouveau noyau dans une VM si possible
Contre-exemples / Quand cette méthode échoue
- Systèmes avec gestion de paquets stricte : l’installation manuelle d’un noyau casse parfois la cohérence du gestionnaire de paquets.
- Matériel très récent : certains microcodes ou firmwares peuvent nécessiter des étapes additionnelles (firmware non libre) gérés par la distribution.
- Environnements avec configuration de démarrage automatisée (EFI/Bootloader spécifiques) où make install n’update pas la configuration correctement.
Glossaire (une ligne chacun)
- Noyau (Kernel) : cœur du système gérant CPU, mémoire, pilotes et appels système.
- Patch : ensemble de modifications appliquées au code source.
- initrd / initramfs : image initiale utilisée au démarrage pour monter la racine.
- GRUB : chargeur d’amorçage utilisé pour sélectionner et démarrer les noyaux.
Boîte à outils et bonnes pratiques
- Conservez plusieurs noyaux installés jusqu’à validation complète du nouveau.
- Documentez la procédure (version du compilateur, options de make, modules sélectionnés).
- Utilisez un gestionnaire de versions pour /usr/src/linux si vous faites fréquemment des tests.
Résumé
Construire un noyau à la main est une compétence utile pour tester des pilotes, appliquer des patchs ou expérimenter des fonctionnalités avancées. La méthode présentée couvre le téléchargement, l’application de patchs, la configuration (menuconfig), la compilation et l’installation. Toujours conserver un plan de retour arrière (ancien noyau, média de secours) et tester dans un environnement sûr.
Liens utiles
- Fedora: http://fedora.redhat.com
- Fedora Wiki: http://fedoraproject.org/wiki
- The Linux Kernel Archives: http://www.kernel.org
Important : n’inventez pas de valeurs de performance ; la durée de compilation dépend fortement du matériel et de la configuration.
Matériaux similaires

WireGuard sur CentOS 8 — guide complet

Libérer 24 Go sur Windows 10 après Threshold 2

Devenir coursier indépendant — revenu régulier

Vider le cache dans Microsoft Edge

Installer My Family Cinema (APK) en toute sécurité
