LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


debian:debian_compilation_noyau_facile

Différences

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

Lien vers cette vue comparative

debian:debian_compilation_noyau_facile [2018/11/17 13:52] (Version actuelle)
Ligne 1: Ligne 1:
 +===== 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.
 +
 +<note>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 <color red>PAS</color> 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.</note>
 +
 +==== 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 :
 +
 +<code>$ wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.bz2</code>
 +
 +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 :
 +
 +<code># apt-get install build-essential</code>
 +
 +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 :
 +
 +<code># apt-get install libncurses5-dev</code>
 +
 +===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 :
 +
 +<code># usermod -a -G src tux
 +$ newgrp src</code>
 +
 +===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 :
 +
 +<code>$ 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/
 +</code>
 +
 +
 +====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 :
 +
 +<code>
 +$ cp /boot/config-$(uname -r) .config
 +</code>
 +
 +===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 :
 +
 +<code>$ make oldconfig</code>
 +
 +**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 :
 +
 +<code>$ make nconfig</code>
 +
 +**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 :
 +
 +<code>$ make deb-pkg</code>
 +
 +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.\\
 +
 +<note>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 :\\
 +<code>make -j 4 deb-pkg</code>
 +</note>
 +
 +
 +===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]]
debian/debian_compilation_noyau_facile.txt · Dernière modification: 2018/11/17 13:52 (modification externe)