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édentesRévision précédente
Prochaine révision
Révision précédente
projets:systemesreseaux:compilekernel [2014/01/13 21:44] – [Compilation à partir du paquet Debian des sources Linux] christian.jacolotprojets:systemesreseaux:compilekernel [2022/09/04 21:04] (Version actuelle) – modification externe 127.0.0.1
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]]

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki