Compilation du noyau sous Debian

De Lea Linux
(Redirigé depuis Kernel-kernel debian)
Aller à la navigation Aller à la recherche


Compilation du noyau 'à la façon Debian'

Compilation du noyau 'à la façon Debian'
par Sébastien Kalt
Même sur une Debian ;) on peut compiler son noyau sans pépin.

La distribution Debian met à notre disposition des outils spécifiques pour 'faciliter' la compilation et la mise en place d'un nouveau noyau. On crée en fait un paquet Debian contenant le noyau et ses modules qu'il suffit ensuite d'installer comme n'importe quel paquet !

pré requis:

  • les sources du noyaux et des modules à compiler, récupérés en paquets Debian (la dernière version n'est pas forcément disponible) ou bien en *.tar.gz ou *.tar.bz2,
  • un environnement de développement complet,
  • le paquet 'kernel-package', paquet optionnel de la section 'misc'.

Prévoir également si vous voulez compiler les modules PCMCIA de la même façon:

  • le paquet 'pcmcia-source' de la debian que vous avez (les sources PCMCIA venant d'autre part ne contiennent pas le fichier '/debian/rules' indispensable pour une compilation à la Debian),
  • le paquet 'pcmcia-cs' de la même distribution (personnellement je suis sous Slink, mais j'utilise un noyau 2.2.13, donc j'ai besoin des paquets PCMCIA de la Potato. Ça marche sans problèmes, si ce n'est dselect qui n'aime pas le paquet pcmcia-cs de la Potato).

Il faut ensuite installer et configurer le noyau comme décrit précédemment.
Normalement les sources PCMCIA se décompressent dans le répertoire /usr/src/modules/pcmcia-cs . Si ce n'est pas le cas alors vous ne pourrez pas faire de compilation 'à la Debian'.

Compilation du noyau

C'est seulement là que les choses changent :

[root@localhost linux]# make-kpkg clean
 [root@localhost linux]# make-kpkg --revision=CUSTOM.1.0 kernel_image

C'est la phase de compilation proprement dite. Elle vous laissera un paquet kernel-image-2.0.36_CUSTOM.1.0_i386.deb dans le répertoire '/usr/src'.
Vous pouvez remplacer 'CUSTOM' par ce que vous voulez, les seules restrictions sont de n'utiliser que des caractères alphanumériques surtout sans '_', '-' et espaces.
Le numéro de version permet à 'dpkg', au cours de l'installation, de vous avertir si jamais vous tentez d'utiliser un noyau plus ancien que celui qui tourne actuellement. C'est plus une sécurité qu'autre chose, mais bien pratique quand même. Alors n'oubliez pas de faire évoluer ce numéro à chaque recompilation.
 
 

Installation du nouveau noyau

La première chose à faire, c'est de sauvegarder les modules de votre noyau actuel. En effet, étant donné que vous avez changé des options du noyau, vous avez sûrement ajouté et/ou enlevé des modules par rapport au noyau que vous utiliser. Comme le paquet va installer les nouveaux modules dans le même répertoire il vaut mieux supprimer le-dit répertoire pour éviter les conflits. Et a cas où il y aurait un problème c'est encore mieux de sauvegarder ce répertoire. C'est ce que nous faisons avec la commande suivante:

[root@localhost linux]# mv /lib/modules/2.0.36 /lib/modules/2.0.36.old

Pensez à remplacer '2.0.36' par la version actuelle de votre noyau. Vous pouvez par la suite, quand vous êtes sûr que votre noyau marche parfaitement, supprimer ce répertoire.

Viens ensuite la phase d'installation proprement dite :

[root@localhost linux]# dpkg -i ../kernel-image-2.0.36_CUSTOM.1.0_i386.deb

Si vous tentez d'installer un noyau plus ancien que celui qui tourne actuellement 'dpkg' vous affichera le message d'avertissement suivant :

dpkg - avertissement: kernel-image-2.0.36 mis à jour de CUSTOM.1.4 vers l'ancienne CUSTOM.1.0.

Ensuite on vous proposera de créer une disquette de boot. Je ne saurais que trop vous conseiller de faire cette disquette. En effet suite à quelques problèmes avec ma table de partition, ma disquette de boot Linux est la seule chose qui m'a permis de réparer les dégâts en m'évitant de réinstaller tout mon disque dur.

Si vous utilisez 'lilo', l'installation vous proposera d'utiliser votre fichier de configuration actuel pour ré-installer le chargeur. Si vous recompilez le même noyau vous n'avez rien à changer. Par contre si vous compilez un autre noyau il faut modifier votre '/etc/lilo.conf' pour qu'il boote bien sur '/boot/vmlinuz-2.X.XX' et non sur '/boot/vmlinuz-2.0.36' par exemple.

Enfin, si vous êtes sûr que tout s'est bien déroulé, il ne vous reste plus qu'à rebooter :

[root@localhost linux]# shutdown -r now

Et voilà, vous venez de compiler et d'installer un noyau aux petits oignons ! Félicitations.
 

Compilation et installation des modules PCMCIA

Il est fortement conseillé de configurer ces modules avant de les compiler. Je vous conseille d'installer le noyau que vous venez de compiler et de vérifier qu'il marche bien avant de compiler et d'installer les modules PCMCIA. Moi je compile tout et j'installe tout d'un coup, et j'ai pas de problèmes.

[root@localhost linux]# cd ../modules/pcmcia-cs
 [root@localhost pcmcia-cs]# make clean
 [root@localhost pcmcia-cs]# make config

Voici une petite aide pour répondre au questionnaire proposé:

Linux source directory [/usr/src/linux]: si vous avez fait comme on vous a dit le répertoire proposé est le bon,

Alternate target install directory []:  ça c'est si vous voulez compiler pour une autre machine, non compatible avec la compilation Debian,

Module install directory [/lib/modules/2.0.36]:  répertoire normal, rien à changer,

Build 'trusting' versions of card utilities (y/n) [n]:  ça permet de ne pas recompiler les modules PCMCIA à chaque recompilation du noyau. Je vous conseille de répondre 'non',

Include 32-bit (CardBus) card support (y/n) [n]:  ben là ça dépend de vous, et surtout des cartes que vous comptez utiliser,

How would you like to set kernel-specific options?
    1 - Read from the currently running kernel
    2 - Read from the Linux source tree
    3 - Set each option by hand (experts only!)
Enter option (1-3) [2]: 1  Si vous avez déjà installé le noyau alors prenez l'option 1. Si vous venez de le compiler mais qu'il n'est pas installé, prenez l'option 2. Une petite remarque pour dire que le paquet pcmcia-source de la Potato ne propose plus l'option 3.

Et voilà, vos modules PCMCIA sont maintenant configurés. Il ne reste plus qu'à les compiler et les installer.
 

[root@localhost pcmcia-cs]# cd ../../linux
 [root@localhost linux]# make-kpkg --revision=CUSTOM.1.0 modules_image

Attention, ici il faut mettre la même révision que le noyau que vous venez de compiler, sinon vous ne vous y retrouverez plus.

[root@localhost linux]# dpkg -i ../modules-image-2.0.36-3.1.4-2+CUSTOM.1.0_i386.deb

Et voilà, maintenant il ne vous reste plus qu'à rebooter, et normalement tout marche comme sur des roulettes.




@ Retour à la rubrique Noyau et modules

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Sebastien Kalt le 29/11/1999.

Copyright

Copyright © 29/11/1999, Sebastien Kalt

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike iconCreative Commons Noncommercial
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique, Contexte non commercial 2.0 :
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/