Outils pour utilisateurs

Outils du site


projets:systemesreseaux:compilekernel

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
projets:systemesreseaux:compilekernel [2014/01/13 21:58]
christian.jacolot [Compilation à partir du paquet Debian des sources Linux]
projets:systemesreseaux:compilekernel [2016/07/19 15:36] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Compilation du noyau Linux ======
  
 +===== Prérequis pour la compilation des sources Linux =====
 +
 +Pour compiler les sources du noyau, il vous faut les paquets Debian suivants:
 +
 +  * gcc <​code>#​ apt-get install gcc</​code>​
 +  * bc <​code>#​ apt-get install bc</​code>​
 +  * wget <​code>#​ apt-get install wget</​code>​
 +  * ncurses <​code>#​​ apt-get install libncurses5-dev</​code>​​
 +  * gtk (si besoin pour un affichage graphique) <​code>#​ apt-get install libgtk2.0-dev libglib2.0-dev libglade2-dev</​code>​
 +
 +Pour l'​installation Debian:
 +  * kernel-package <​code>#​ apt-get install kernel-package</​code>​
 +  * fakeroot <​code>#​ apt-get install fakeroot</​code>​
 +
 +===== Compilation à partir des sources Linux =====
 +
 +Après avoir installé les prérequis pour pouvoir compiler le noyau,
 +vous pouvez télécharger les sources à partir du site [[https://​www.kernel.org/​|kernel.org]] ​
 +(prendre l'​archive de la dernière version stable).
 +
 +Exemple:
 +<​code>​
 +$ wget https://​www.kernel.org/​pub/​linux/​kernel/​v3.x/​linux-3.12.7.tar.xz
 +</​code>​
 +
 +Ensuite dérouler l'​archive dans un répertoire prévu pour ça:
 +<​code>​
 +$ tar xf linux-3.12.7.tar.xz
 +</​code>​
 +
 +S'y engouffrer pour explorer les sources:
 +<​code>​
 +$ cd linux-3.12.7
 +</​code>​
 +
 +Avant de compiler, il va être nécessaire de configurer ce nouveau noyau,
 +c'est à dire, choisir parmi les innombrables options, lesquelles seront les plus adaptées à votre besoin:
 +<​code>​
 +$ make menuconfig
 +</​code>​
 +Ce menu est le plus convivial que l'on soit sur un PC de bureau ou sur un serveur (qui n'a pas d'​interface graphique), voici une copie d'​écran de ce menu:
 +{{ :​projets:​systemesreseaux:​compilekernel_menuconfig.png?​200 |}}
 +
 +Il y a d'​autres façons d'​accéder au menu de configuration des options du noyau, en utilisant:
 +
 +  * une interface texte avec <​code>​make oldconfig</​code>​ qui récupère la config du noyau courant qui se trouve dans <​code>/​boot/​config-<​version.du-noyau></​code>​ et demande les valeurs pour les nouvelles options qui n'​étaient pas dans cette configuration,​
 +  * une interface texte encore avec <​code>​make config</​code>​ qui récupère la config comme ci-dessus, mais fait la revue complète de toutes les options,
 +  * une interface graphique avec <​code>​make xconfig</​code>,​ permet d'​afficher les options et l'aide sur l'​option choisie côte à côte (plus facile à lire), dont voici la capture d'​écran {{ :​projets:​systemesreseaux:​compilekernel_xconfig.png?​200 |}}
 +  * même chose pour <​code>​make gconfig</​code>​ en utilisant GTK, n'​oubliez pas d'​installer les bibliothèques graphiques nécessaires,​ voici la capture d'​écran {{ :​projets:​systemesreseaux:​compilekernel_gconfig.png?​200 |}}
 +
 +Pour notre exemple, nous pouvons laisser les options avec leur valeur par défaut.
 +Quitter le menu en sauvant les options dans le fichier ''​.config''​ (fichier de configuration par défaut qui sera pris en compte dans le processus de compilation).
 +Maintenant, lançons la compilation du noyau:
 +<​code>​
 +$ make
 +</​code>​
 +Make (sans paramètre) va nous créer un noyau Linux appelé vmlinux dans le répertoire courant (racine des sources du noyau).
 +Si vous avez un PC assez puissant, vous pouvez exploiter cette puissant, en ajoutant comme paramètre ''​-j <nombre de cpu/​core>''​ (par exemple: ''​make -j 4''​).
 +
 +Puis, il faut compiler les modules (si besoin):
 +<​code>​
 +$ make modules
 +</​code>​
 +
 +Ensuite, il faut être administrateur pour installer (copier) les binaires (noyau et modules) vers leurs emplacements définitifs dans le système:
 +  * noyau dans /boot
 +  * modules dans /​lib/​modules
 +
 +Installation du noyau:
 +<​code>​
 +# make install
 +</​code>​
 +ceci copie, les fichiers suivants vers le répertoire ''/​boot'':​
 +  * vmlinuz (binaire vmlinux compressé),​
 +  * System.map,
 +  * config (configuration du noyau que l'on vient de compiler),
 +  * initrd.img (l'​image ram disk du démarrage voir [[http://​fr.wikipedia.org/​wiki/​Initrd|initrd]]).
 +
 +Puis installation des modules:
 +<​code>​
 +# make modules_install
 +</​code>​
 +
 +Avant de finir, l'​image du ram disk (initrd) n'​étant pas complète, il suffit
 +de recréer l'​image en tapant la commande suivante:
 +<​code>​
 +# cd /boot
 +# mkinitramfs -o initrd.img-3.12.7 3.12.7
 +</​code>​
 +
 +et finalement, faire appel à grub pour identifier ce nouveau noyau et l'​ajouter au démarrage:
 +<​code>​
 +# update-grub
 +</​code>​
 +
 +Maintenant, pour tester, pas de doute, ''​reboot''​. En image:
 +{{ :​projets:​systemesreseaux:​compilekernel_reboot_grub.png?​200 |}}
 +
 +===== Compilation à partir du paquet Debian des sources Linux =====
 +
 +L'​installation à partir des sources Linux, c'est bien, sauf que cette installation na pas été faite avec les outils Debian de gestion de paquet. Il est plus difficile d'​enlever les binaires installés (il faut savoir dans quels répertoires ils ont été
 +installés).
 +
 +Installation du paquet des sources du noyau Linux:
 +<​code>​
 +# apt-get install linux-source-3.2
 +</​code>​
 +
 +Dérouler l'​archive qui se trouve dans le répertoire ''/​usr/​src'':​
 +<​code>​
 +# cd /usr/src
 +# tar xf linux-source-3.2.tar.bz2
 +</​code>​
 +
 +Se glisser dans le répertoire:​
 +<​code>​
 +# cd linux-source-3.2
 +</​code>​
 +
 +Comme ci-dessus, configuration des options pour compiler le noyau Linux:
 +<​code>​
 +# make menuconfig
 +</​code>​
 +avec la sauvegarde de la configuration dans le fichier ''​.config''​.
 +
 +Lancement de la compilation pour obtenir un paquet debian binaire du noyau Linux:
 +<​code>​
 +# make-kpkg --initrd --revision=1.0.mdl kernel_image
 +</​code>​
 +
 +Attendre un peu, promener le chien ... :-D
 +Et le porter quand il veut plus marcher.
 +
 +Ensuite, une fois, le paquet debian créé pour le noyau, il suffit juste de l'​installer avec dpkg:
 +<​code>​
 +# dpkg -i linux-image-3.2.0_1.0.mdl_i386.deb
 +</​code>​
 +
 +Il gère les dépendances automatiquement,​ ainsi que la mise à jour dans grub.
 +
 +===== Références =====
 +
 +  * [[http://​www.debian.org/​| Projet Debian]]
 +  * [[http://​fr.wikipedia.org/​wiki/​Debian| Debian sur wikipedia]]
 +  * [[http://​fr.wikipedia.org/​wiki/​Advanced_Packaging_Tool| APT]]
 +  * [[http://​fr.wikipedia.org/​wiki/​Dpkg| dpkg]]