Compilation Kernel – Modules Linux
I► Nous allons voir dans cet article comment compiler et installer un nouveau noyau Linux :
On récupère dans un 1er temps l’archive du noyau sur le site officiel : www.kernel.org
cp /home/tux/Téléchargements/linux-3.7.6.tar.bz2 dans /usr/src/
#Avant de détarer l’archive ...
cd /usr/src
tar xvfj linux-3.7.6.tar.bz2
cd linux-3.7.6
vi .makefile #ligne N°4 pour changer le numéro d’extraversion du kernel => optionnel
make mrproper #nettoie une éventuelle précédente compilation -> efface tous les .config
Avant de compiler vérifiez bien qu’il n’y ait pas de .config
=> 1 – Préparation à la compilation du noyau : plusieurs méthodes
Librairies de développement nécessaires :
- GCC – G++
- LIBNCURSES5-DEV
- LIBNCURSESW5-DEV
- LIBQT4
- LIBQT3-DEV
- LIBQT4-xxxxxxxxx
make config #tout à la main 🙁
make xconfig #serveur X 🙂
make menuconfig #méthode console 🙂
make oldconfig #en repartant d’une dernière compil
=> 2- Compilation et déploiement :
- A- Compilation : création du noyau
make bzImage ou make (tout simplement)
- B- Compilation des modules :
make modules #crée les modules
- C- Déploiement des modules dans l’arborescence Linux
make modules_install #place les modules dans /lib/modules/<version>
- D- Copie du noyau, System Map dans /boot, création de l’init Ram disk et Mise à jour de GRUB
1- cp arch/I386… ou x86/boot/bzImage /boot/vmlinuz-<version>
#copie le noyau compilé sous /boot/
2- cp System.map /boot/System.map-<version>
#copie le mappage mémoire
Le Sytem Map contient la table des symboles du noyau pour le chargement des modules. On peut d’ailleurs dans certains cas faire un depmod -F NonDuFichierSystemMap si l’on souhaite reconstruire le fichier des dépendances des modules depuis ce fichier …
Création du RamDisk InitRD: Ce RamDisk prépare le chargement du noyau en RAM.InitRD charge le nécessaire permettant d’accéder au système de fichiers racine dans le but de charger le système de base et les services.
Outil : initramfs-tools – tools for generating an initramfs
3- mkinitramfs -o initrd.img-3.7.6 3.7.6
mkinitramfs -o initrd.img-<version> <version> #chemin vers /lib/modules
Attention : Il faut copier le /usr/src/linux-<version>/.config dans /boot/config-<version> pour que le intramfs fonctionne !!
Update de grub :
4- update-grub
Autre méthode qui simplifie totalement l’étape D :
make install
déplace le noyau bzImage, le System Map, crée l’initRD et met à jour le GRUB
Une petite prière … 🙂 Init 6
—————————————————————————————————————————–
En espérant que cela ait fonctionné, si cela ne fonctionne pas vérifier vos options de compilation et le RamDisk. Nous allons voir une autre méthode : make oldconfig qui permet de compiler un noyau en repartant du noyau actuel :
- cp /boot/config-<version_actuelle> /usr/src/linux-<version>/.config
- make mrproper
- make oldconfig
- … et on reprends la suite comme ci-dessus
=> Méthode rapide sous debian :
apt-cache search linux-image
apt-get install linux-image-<version>
update-grub
=> Méthode rapide sous RH/CentOs :
yum search kernel-devel
yum install kernel-devel-<version>
update-grub
=> Compilation d’un module (voir l’article concernant la gestion des périphériques )
https://www.mb-creation-web.fr/tutoriels-et-cours/udev-hal-smart/
Michel BOCCIOLESI