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 🙂

Capture

 

make menuconfig #méthode console 🙂

Capture


 

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.
Outilinitramfs-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 :

  1. cp /boot/config-<version_actuelle> /usr/src/linux-<version>/.config
  2. make mrproper
  3. make oldconfig
  4. … 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 )
http://www.bocciolesi.fr/tutoriels-et-cours/udev-hal-smart/

Michel BOCCIOLESI