===== Compilation facile et rapide du noyau Linux (pour Debian et Ubuntu) ===== Les versions récentes du noyau Linux (2.6.38 et sup. pour les en-têtes) fournissent une "cible" pour compiler les sources du noyau et créer des paquets ".deb" de l'image du noyau et des en-têtes (headers), voici comment en profiter. Un signe **$** précède les commandes qui ne nécessitent pas de droits root ; un signe **#** précède celles qui nécessitent des droits root (ces signes ne font PAS partie des commandes). Les lignes qui ne commencent pas par un signe $ ou # correspondent au résultat de la commande précédente.\\ Votre répertoire personnel (/home/vous) est symbolisé par un signe **~** (tilde) en console. ==== Préparatifs ==== ===Les sources du noyau=== Vous avez besoin ds sources du noyaux, soit celles de votre distribution, soit les sources dites "vanilla" disponibles sur [[https://www.kernel.org|le site de développement du noyau Linux kernel.org]].\\ Tout ça peut se faire en une commande : $ wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.bz2 Ici nous téléchargeons les sources d'un noyau 2.6.39, adaptez à la version désirée.\\ ===Les outils=== Une simple commande suffira à installer les autres outils nécessaires : # apt-get install build-essential Pour bénéficier d'une interface de configuration agréable vous devrez installer des librairies supplémentaires, ici nous utiliserons la magnifique (;-) ) interface "**nconfig**" qui ne nécessite qu'une dépendance supplémentaire : # apt-get install libncurses5-dev ===Ajout au groupe "src"=== Cette étape est facultative, mais comme dans cet exemple nous effectuerons la compilation dans le répertoire /sur/src, pour nous faciliter la vie nous ajoutons notre utilisateur "tux" au groupe "src". De cette manière il aura accès au répertoire /usr/src sans utiliser les droits root : # usermod -a -G src tux $ newgrp src ===Mettre les sources en place=== Nous admettons que les sources téléchargées sont présentes dans votre répertoire personnel symbolisé par "**~**", nous les déplaçons vers /usr/src (**mv**), on se place dans /usr/src (**cd**), on décompresse l'archive .tar.bz2 avec **tar**. Ensuite on donne un nom personnalisé au répertoire des sources (ici "linux-source-2.6.39-perso64") et se place à l'intérieur : $ mv ~/linux-2.6.39.tar.bz2 /usr/src $ cd /usr/src $ tar xjf linux-2.6.39.tar.bz2 $ mv linux-2.6.39 linux-source-2.6.39-perso64 $ cd linux-source-2.6.39-perso64/ ====Configuration et compilation==== ===Copier la configuration du noyau courant=== La configuration du noyau courant (dont on sait qu'il fonctionne) est une bonne base. Si vous disposez déjà d'un fichier de config personnalisé vous l'utiliserez à la place. Vous pouvez également partir d'un fichier vierge mais la configuration sera longue, fastidieuse (mais instructive) et sujette aux erreurs : $ cp /boot/config-$(uname -r) .config ===Configurer=== "Configurer" les sources revient à choisir quelles options de compilation seront utilisées, quels modules seront construit, comment ils le seront (à l'intérieur du noyau ou comme modules à charger dynamiquement). L'objet ici n'est pas d'explorer les options de configuration, reportez vous à la section "Liens" pour des sites de référence sur le sujet.\\ Tout d'abord nous créons un fichier ".config" type, et passons en revue les nouvelles options (s'il y en a) qui n'existaient pas dans la configuration du noyau plus ancien : $ make oldconfig **make oldconfig** passe en revue les nouvelles options de configuration :\\ {{ :debian:compil1.jpg?direct&480 |}} \\ Prenez le temps de vous documentez sur ces nouvelles options, ou acceptez les choix par défaut (pas forcément optimum mais sans danger).\\ Ensuite on personnalise les options de compilation : $ make nconfig **nconfig** en action :\\ {{ :debian:nconfig.jpg?direct&480 |}} \\ ===Compiler et créer des paquets ".deb"=== Pour créer des paquets ".deb" de l'image du noyaux et des en-têtes ("headers", nécessaires pour compiler des modules extérieurs aux sources du noyau), utilisez : $ make deb-pkg Et c'est tout, à la fin du processus de compilation vous disposerez dans /usr/src de paquets linux-image-$(version).deb et linux-headers-$(version).deb prêts à être installés, par exemple avec "**dpkg -i**", ou un utilitaire comme "**gdebi**". La création d'une disque initial de démarrage (initrd ou initramfs) et la mise à jour de grub seront automatiques lors de l'installation, il ne reste qu'à redémarrer sur le nouveau noyau.\\ Pour accélérer la compilation vous pouvez augmenter le nombre de processus alloués, par exemple sur un processeur dual-core vous pouvez tester avec 4 processus :\\ make -j 4 deb-pkg ===Pour les curieux=== Si vous voulez tout savoir sur le script qui permet d'utiliser la cible "deb-pkg" il suffit de regarder dans le répertoire des sources du noyau sous **/scripts/package/builddeb**. C'est très instructif et suffisamment commenté pour être accessible.\\ ====Liens=== * [[https://www.kernel.org/|kernel.org]] * [[http://kernelnewbies.org/LinuxChanges|Les nouveautés du dernier noyau sur kernelnewbies]] * [[http://lwn.net/Kernel/|la rubrique "noyau" de lwn.net]] * [[expert:recompilation_noyau:|Méthode générique de compilation du noyau Linux]] * [[debian:debian_compilation_noyau:|Compiler un noyau dans Debian avec "kernel-package"]] ---------------------------------------------------- [[debian:debian:|Retour à la page "Debian"]] [[http://www.linuxpedia.fr/forum/index.php?action=pm;sa=send;u=15|Envoyer un message au mainteneur de cette page]]