Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

compiler_un_noyau_mandriva_sur_mesure [2008/06/15 19:07]
jlduflot créée
compiler_un_noyau_mandriva_sur_mesure [2017/02/21 15:10] (version actuelle)
Ligne 1: Ligne 1:
 +====== Pour quoi faire ? ======
 +Quand on possède un PC relativement standard du point de vue matériel on a, sauf exception très particulière, pas besoin de compiler un noyau Linux, c'est-à-dire créer un noyau nécessitant réellement des options différentes de celles prévues dans les noyaux standards de la distribution. Ceci est vrai pour toutes les distributions Linux.
 +
 +La distribution Mandriva en particulier, qui est plus particulièrement mise au point par des Français (mais pas seulement), tient donc naturellement compte de la plupart des matériels couramment commercialisés sur le marché français.
 +
 +Il arrive cependant dans de rares cas qu'il faille réellement activer un pilote de périphériques particulier non prévu par défaut. Il peut aussi arriver qu'au contraire on souhaite avoir un noyau optimisé plus petit, avec seulement les pilotes nécessaires, et/ou avec d'autres options générales de nature à améliorer les performances du PC.
 +
 +Ici nous parlerons plus particulièrement de Mandriva 2006; les manips présentées seront cependant analogues pour d'autres distributions.
 +
 +Article rédigé par **Jeanmm**  8-)\\
 +version initiale : 30 mai 2006.
 +
 +====== Choix d'un noyau standard ======
 +
 +Avant de se lancer tête baissée dans la compilation d'un noyau, il peut être utile de se renseigner sur les noyaux déjà disponibles par défaut, il se peut que l'un d'eux réponde aux besoins. Il existe en effet plusieurs noyaux standards, et quand on installe une Mandriva le programme d'installation choisit celui qui lui semble le plus approprié selon le PC, mais rien n'empêche ensuite d'en essayer un autre. Exemple de noyaux :
 +
 +  * kernel-2.4.28.0.rc1.5mdk
 +  * kernel-2.6.12.22mdk
 +  * kernel-BOOT-2.6.12.22mdk
 +  * kernel-enterprise-2.4.28.0.rc1.5mdk
 +  * kernel-i586-up-1GB-2.4.28.0.rc1.5mdk
 +  * kernel-i586-up-1GB-2.6.12.22mdk
 +  * kernel-i686-up-4GB-2.6.12.22mdk
 +  * kernel-multimedia-2.6.12-12.mm.1mdk
 +  * kernel-multimedia-enterprise-2.6.12-12.mm.1mdk
 +  * kernel-multimedia-i686-up-4GB-2.6.12-12.mm.1mdk
 +  * kernel-multimedia-win4lin-2.6.12-12.mm.1mdk
 +  * kernel-multimedia-win4lin-enterprise-2.6.12-12.mm.1mdk
 +  * kernel-multimedia-win4lin-i686-up-4GB-2.6.12-12.mm.1mdk
 +  * kernel-smp-2.4.28.0.rc1.5mdk
 +  * kernel-smp-2.6.12.22mdk
 +  * kernel-uml
 +  * kernel-uml-2.4-2.4.22-2mdk
 +  * kernel-uml-2.6.10-2mdk
 +  * kernel-win4lin-2.6.12.12mdk
 +  * kernel-win4lin-i586-up-1GB-2.6.12.12mdk
 +  * kernel-win4lin-i686-up-4GB-2.6.12.12mdk
 +  * kernel-win4lin-smp-2.6.12.12mdk
 +  * kernel-xbox-2.6.12.22mdk
 +  * kernel-xen0-2.6.12.22mdk
 +  * kernel-xenU-2.6.12.22mdk
 +
 +====== Compilation d'un noyau sur mesure ======
 +
 +Si aucun des choix par défaut ne convient, on pourra essayer de se créer son propre noyau.
 +
 +Toutes les manips ci-dessous sont à effectuer dans une console en root. Il faut commencer par installer un noyau-source, par exemple par le CCM (centre de contrôle Mandriva), ou par commande urpmi :
 +
 +<code bash>
 +urpmi kernel-source-2.6-2.6.12-22mdk
 +</code>
 +
 +A noter qu'il existe plusieurs noyaux sources, et bien sûr on choisira celui qui se rapprochera de son besoin.
 +
 +Editer ensuite **/usr/src/linux/Makefile** et choisir son nom de version, dans la ligne **EXTRAVERSION**, par exemple "22mdkcustom" :
 +<code bash>
 +VERSION = 2
 +PATCHLEVEL = 6
 +SUBLEVEL = 12
 +EXTRAVERSION = -22mdkcustom
 +</code>
 +
 +Passer successivement les commandes suivantes, sachant que **xconfig** lance un outil interactif dans lequel on aura à passer en revue toutes les options possibles, ça peut durer un certain temps... :
 +
 +<code bash>
 +cd /usr/src/linux
 +make clean
 +make xconfig
 +make bzImage
 +make modules
 +make modules_install
 +cp System.map /boot/System.map-2.6.12-22mdkcustom
 +cd /boot
 +mkinitrd initrd-2.6.12-22mdkcustom.img 2.6.12-22mdkcustom
 +</code>
 +
 +Il faut aussi copier le nouveau noyau dans /boot; on peut le rechercher par une commande du type :
 +<code bash>
 +find /usr/src -iname bzimage
 +</code>
 +
 +Si la commande répond :
 +<code bash>
 +/usr/src/linux-2.6.12-22mdk/arch/i386/boot/bzImage
 +</code>
 +On pourra le copier par :
 +<code bash>
 +cp /usr/src/linux-2.6.12-22mdk/arch/i386/boot/bzImage /boot/vmlinuz-2.6.12-22mdkcustom
 +</code>
 +
 +Bien sûr il ne faut pas qu'il y aie des erreurs. Si les commandes ci-dessus émettent des messages d'erreurs il conviendra de faire en sorte de corriger, et cet article ne peut en aucun cas répondre à de tels soucis. S'armer de patience, utiliser les ressources du web (moteurs de recherche, forums, faqs...). De même, le détail des centaines d'options possibles est hors de portée de cette page, on pourra notamment étudier les fichiers du dossier **/usr/src/linux/Documentation/**.
 +
 +Editer **/etc/lilo.conf** (ou son équivalent si on préfère grub) et dupliquer/modifier les lignes de lancement du Linux courant, par exemple :
 +<code bash>
 +image=/boot/vmlinuz-2.6.12-22mdkcustom
 + label="Mandriva-2006-perso"
 + root=/dev/hdb2
 + initrd=/boot/initrd-2.6.12-22mdkcustom.img
 + append="noapic nolapic resume=/dev/hdb5 splash=silent"
 + vga=788
 +</code>
 +
 +Ne pas oublier de taper finalement la commande :
 +<code bash>
 +lilo -v
 +</code>
 +
 +On peut alors rebooter puis choisir son nouveau noyau et vérifier qu'il se lance et satisfasse aux besoins. Si c'est bon on peut refaire un peu de nettoyage comme expliqué dans l'article pour changer de noyau standard (désinstaller l'ancien noyau inutile, ajuster lilo.conf...) : [[http://root66.freecontrib.org/wiki/doku.php?id=changer_de_noyau_mandriva | manip standard]].
 +
 +Voilà. Pour d'autres précisions se reporter à des bouquins spécialisés ou aux articles d'honorables contributeurs sur le web.
 +8-)
 
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki