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)