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
tutoriel:comment_compiler_un_kernel_de_kernel.org [Le 20/11/2011, 19:09]
fabien26
tutoriel:comment_compiler_un_kernel_de_kernel.org [Le 11/09/2022, 12:24] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 5: Ligne 5:
 ====== Comment compiler un noyau de Kernel.org ====== ====== Comment compiler un noyau de Kernel.org ======
  
-Il peut être utile de compiler une ou nouvelle ​version du Noyau Linux (pour pallier une incompatibilité ​sources ​avec un module spécifique, pour activer/​modifier un paramètre qui ne serrait ​pas dans la version du noyau distribuée avec Ubuntu) je vais donc détailler comment faire et j'invite tous ceux qui le veulent à ajouter des précisions ...+Il peut être utile de compiler une certaine ​version du Noyau Linux pour, par exemple, ​pallier une incompatibilité avec un module spécifique ​ou encore ​activer/​modifier un paramètre qui ne serait ​pas dans la version du noyau distribuée avec Ubuntu.\\ 
 +Cette page propose de détailler comment faire et invite tous ceux qui le veulent à ajouter des précisions ...
  
-On peut aussi vouloir ​faire de la compilation croisée ​(compiler un noyau pour PowerPC sur un x86, etc) : voir [[compilation_croisee|ici]]. +<note tip>Si vous souhaitez ​faire de la compilation croisée, comme compiler un noyau pour PowerPC sur un x86, rendez-vous ​[[compilation_croisee|ici]].</​note>​
- +
-\\+
  
 ===== Pré-requis : ===== ===== Pré-requis : =====
  
   * Savoir utiliser le [[:​terminal]] / la [[:​console]] ;   * Savoir utiliser le [[:​terminal]] / la [[:​console]] ;
-  * Savoir ce que sont "​linux",​ "​module",​ etc. ;+  * Savoir ce que sont "[[:linux]]", "[[:​tutoriel:​tout_savoir_sur_les_modules_linux|module]]", etc... ;
   * Une bonne heure pour configurer (seulement si vous souhaitez optimiser le noyau pour votre utilisation) ;   * Une bonne heure pour configurer (seulement si vous souhaitez optimiser le noyau pour votre utilisation) ;
-  * Une heure ou plus pour la compilation suivant la puissance de votre ordinateur.+  * Deux bonnes heures ​ou plus pour la compilation suivant la puissance de votre ordinateur.
  
 ===== Dépendances ===== ===== Dépendances =====
  
-==== Paquets ​basique ​====+==== Paquets ​basiques ​====
  
 Tout d'​abord il faut installer le strict minimum pour la compilation : Tout d'​abord il faut installer le strict minimum pour la compilation :
 +  * [[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​build-essential,​initramfs-tools,​fakeroot|build-essential initramfs-tools fakeroot]]**
 +  * [[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​debconf-utils,​dpkg-dev,​debhelper,​bin86|debconf-utils dpkg-dev debhelper bin86]]**
 +  * [[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​kernel-package|kernel-package]]**
  
-[[:tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt://build-essential,initramfs-tools,fakeroot|build-essential initramfs-tools fakeroot]]**+Ou la ligne de commande pour tout installer d'un coup avec l'​outil ​[[:apt-get]]
 +<​code>​sudo ​apt-get install ​build-essential initramfs-tools fakeroot ​debconf-utils dpkg-dev debhelper bin86 kernel-package</​code>​
  
-[[:tutoriel:​comment_installer_un_paquet|Installez ​les paquets]] **[[apt://​debconf-utils,dpkg-dev,debhelper,bin86|debconf-utils dpkg-dev debhelper bin86]]**+FIXME 
 +EDIT afin de pouvoir compiler ​les derniers noyaux provenant de kernel.org (version > 3.14)il faut installer la dernière version de "​kernel-package"​ et non celle ci-dessus issue des dépôtscar elle crée des bugs pendant la compilationet ne produit pas au final les paquets .deb)
  
-[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt://​kernel-package|kernel-package]]**+[[https://​launchpad.net/​ubuntu/​+source/​kernel-package/​13.003/​+build/​5980712/​+files/​kernel-package_13.003_all.deb]]
  
 +(le paragraphe juste au dessus semble être faux puisque la commande installe kernel-package_13.014)
 ==== Paquets pour créer le "​.config"​ ==== ==== Paquets pour créer le "​.config"​ ====
  
-"​.config",​ c'est le fichier de configuration contenant les instructions de compilation.+"​.config",​ c'est le fichier de configuration contenant les instructions de compilation ​qui peut être créé au choix via: 
 +  * une interface en **console** (bleue) => [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt>​libncurses5-dev|libncurses5-dev]]** 
 +  * une interface en **GTK+** (noyau 2.6 seulement) => [[:​tutoriel:​comment_installer_un_paquet|installez les paquets]] **[[apt>​libglib2.0-dev,​libgtk2.0-dev,​libglade2-dev|libglib2.0-dev libgtk2.0-dev libglade2-dev]]** 
 +  * une interface en **QT4** (Fonctionne du noyau 2.6 au noyau 4.0 - sûrement l'​interface la plus simple et complète - conseillée) => [[:​tutoriel:​comment_installer_un_paquet|installez les paquets]] **[[apt>​libqt4-dev,​pkg-config|libqt4-dev pkg-config]]**
  
-\\+===== Méthode simple de compilation (par exemple pour appliquer uniquement un patch) =====
  
-Pour une interface en **console** (bleue+<note tip>​Cette méthode s'​applique si: 
-[[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] ​**[[apt://​libncurses5-dev|libncurses5-dev]]**+  ​si vous souhaitez vérifier simplement que tout est prêt pour la compilation sans rentrer dans la complication les fichiers de configuration. 
 +  ​si vous avez un noyau (exemple ci-dessous avec une version 5.10sur laquelle vous souhaitez ​**simplement appliquer un patch** sans autre modification 
 +</​note>​
  
-Pour une interface en **TK** (n'est plus disponible dans les versions récentes du noyau linux) : +Lancer votre machine avec le noyau que vous souhaitez modifier. Vérifier la version avec :
-[[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt://​tk-dev|tk-dev]]**+
  
-Pour une interface en **GTK+** (noyau 2.6 seulement ​interface assez mal foutue) : +  uname -r
-[[:​tutoriel:​comment_installer_un_paquet|installez les paquets]] **[[apt://​libglib2.0-dev,​libgtk2.0-dev,​libglade2-dev|libglib2.0-dev libgtk2.0-dev libglade2-dev]]**+
  
-Pour une interface en **QT** (noyau 2.6 seulement - sûrement l'​interface la plus simple et complète - conseillée) : +Installation des dépendances
-[[:​tutoriel:​comment_installer_un_paquet|installez les paquets]] **[[apt://​libqt4-dev,​pkg-config|libqt4-dev pkg-config]]**+
  
-===== Téléchargement des sources =====+  sudo apt install -y git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache
  
-Tout d'​abord téléchargeons les sources ​du noyau+Récupération ​du noyau ; la liste des branches est visible ici https://​git.kernel.org/​pub/​scm/​linux/​kernel/​git/​stable/​linux.git ; ne pas chercher à modifier le .y à la fin du nom !
  
-==== Le répertoire ​/usr/src ====+  mkdir ~/NOYAU 
 +  cd ~/NOYAU 
 +  git clone --depth=1 -b linux-5.10.y git://​git.kernel.org/​pub/​scm/​linux/​kernel/​git/​stable/​linux-stable.git 
 +  #                    ^ modifier ici selon la branche dont vous avez besoin
  
-Nous supposerons ici que vous compilerez dans le répertoire /usr/src+Donner les bons droits à vos fichiers et répertoires
  
-Vous pouvez bien entendu utiliser un autre répertoire,​ mais disons que celui-ci c'est celui de base, alors autant faire comme ça :-)+  sudo chmod -R 0755 linux-stable 
 +  cd linux-stable
  
-Il faut déjà que vous sachiez dans quel groupe vous vous trouvez ​:+Optionnel ​appliquer le patch
  
-<code> +  patch -p1 --dry-run ​<[fichier-patch] (pour tester qu'il n'y a pas d'​erreur sans appliquer) 
-groups +  patch -p1 < [fichier_de_patch] (pour appliquer le patch) 
-</code>+  patch -R [fichier_de_patch] (pour retirer le patch)
  
-Si vous n'​appartenez pas au groupe "​src",​ ajoutez-vous :+Récupérer le fichier de configuration de votre noyau **en cours d’exécution** (la branche doit être la **même que celle téléchargée** pour la compilation) 
 +  cp /​boot/​config-`uname -r` .config
  
-<​code>​ +Compiler le noyau (répéter ces étapes à chaque compilation)
-sudo adduser $USERNAME src ## besoin de se fermer la session pour que cette commande prenne effet. +
-sudo chown $USERNAME /usr/src ## si la commande du dessus ne vous donne pas l'​accès en écriture du dossier /​usr/​src... +
-</​code>​+
  
-Il faut maintenant se reconnecter sous votre login pour que les nouveaux droits soit fonctionnels.+  yes ''​ | make oldconfig 
 +  make clean 
 +  make -j$(nproc) deb-pkg LOCALVERSION=-custom
  
-<​code>​ +Entre chaque essai de compilation exécuter pour nettoyer :
-su - $USERNAME ​ ## Entrer votre mot de passe +
-</​code>​+
  
-Allez dans le répertoire ​/usr/src:+  rm vmlinux-gdb.py 
 +   
 +Installer les fichiers crées ​dans ~/NOYAU avec
  
-<​code>​ +  sudo dpkg -i *.deb
-cd /usr/src +
-</​code>​+
  
-Vous pouvez supprimer les sources des anciens noyaux que vous avez compilés (s'il y en a) :+<​note>​ 
 +Pour compiler la dernière version de développement ​il faudrait utiliser plus haut
  
-<​code>​ +  git clone --depth=1 git://git.kernel.org/​pub/​scm/linux/​kernel/​git/​torvalds/​linux.git 
-rm --./linux-* +</note>
-</code> +
-==== Noyau ====+
  
-Ensuite il faut télécharger l'​archive sur Kernel.org: 
-[[http://​www.kernel.org/​pub/​linux/​kernel/​|lien vers le ftp de kernel.org]] 
-Ou alors placez vous dans le dossier /usr/src et entrer la commande suivante pour télécharger le noyau . (exemple avec la version 2.6.34) 
  
-<​code>​ +===== Téléchargement des sources =====
-wget http://​www.kernel.org/​pub/​linux/​kernel/​v2.6/​linux-2.6.34.tar.bz2 +
-</​code>​+
  
-Idéalement, ​téléchargez-le dans /usr/src et décompressez-le :+Tout d'​abord ​téléchargez ​les sources du noyau depuis Kernel.org:​\\ 
 +[[http://www.kernel.org/​pub/​linux/​kernel/​|Lien vers les sources sur kernel.org]]
  
 +Téléchargez l'​archive dans le dossier que vous voulez, puis [[:​archivage#​graphiquement|décompressez-la]] par exemple avec la [[:​commande_shell|commande]] suivante:
 <​code>​ <​code>​
-tar xvf linux-*.tar.bz2+tar xvf linux-*
 </​code>​ </​code>​
 +
 +<note tip>Il est possible de récupérer les sources par git (voir paragraphe précédent) </​note>​
  
 ===== Configuration particulière ===== ===== Configuration particulière =====
  
-Dans certains cas, certains pilotes propriétaires notamment, il faut préparer un peu plus le terrain pour compiler ​soit même un Noyau personnalisé. Autant vous dire qu'il est bien plus simple de compiler son noyau pour quelqu'​un qui n'​utilise que des pilotes ​libre.+Dans certains cas, certains pilotes propriétaires notamment, il faut préparer un peu plus le terrain pour compiler ​soi-même un Noyau personnalisé. Autant vous dire qu'il est bien plus simple de compiler son noyau pour quelqu'​un qui n'​utilise que des pilotes ​libres.
  
-==== ALSA (Noyaux 2.4 seulement) ====+FIXME cette partie est totalement dépassée, peut être n'​est-elle plus nécessaire,​ en tout cas aucune de ces infos ne sont encore garanties de fonctionner.
  
-Alsa est le nouveau système de son de Linux, très utilisé. Malheureusement il n'est pas utilisé par défaut dans les noyaux 2.4...+==== NVIDIA ====
  
-<​code>​ +Pour les cartes [[:Nvidia]], ​vous pouvez décider ​de ne plus utiliser ​le pilote propriétairemais bien entendu si vous en avez vraiment besoin voici des pistes pour le faire fonctionner avec votre noyau personnalisé.
-  sudo apt-get install alsa-source +
-  tar xvf alsa<​TAB>​.tar.gz +
-</​code>​ +
- +
-Normalement tout se trouve alors dans /​modules/​alsa-driver/ ​: +
- +
-Il faut ensuite configurer alsa : +
- +
-<​code>​ +
-jm@ubuntu:/​usr/​src$ cd modules/​alsa-driver +
-jm@ubuntu:/​usr/​src/​modules/​alsa-driver$ ./configure --help +
-</​code>​ +
- +
-Avec le configure ​vous devriez pouvoir choisir le module ​de votre carte son (lisez ​le readme) +
- +
-<​code>​ +
-jm@ubuntu:/​usr/​src/​modules/​alsa-driver$ ./​configure +
-</​code>​ +
- +
-\\ +
- +
-Malheureusement chez moije suis BLOQUÉ à l'​étape où il cherche ​le fichier "​version.h"​ du noyau... Si vous savez comment résoudre cela, corrigez ici !! FIXME +
- +
-==== NVIDIA ====+
  
 === Avec la technique des liens symboliques === === Avec la technique des liens symboliques ===
  
-Voir [[http://​ubuntuforums.org/​showthread.php?​t=441013|ce How-To]].+Voir [[https://​ubuntuforums.org/​showthread.php?​t=441013|ce How-To]] ​(en).
  
 === Avec le module === === Avec le module ===
Ligne 146: Ligne 129:
 Il faut installer le paquet de sources à inclure au noyau : Il faut installer le paquet de sources à inclure au noyau :
  
-  - Si vous utilisez le paquet nvidia-glx-new,​ [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt://nvidia-new-kernel-source|nvidia-new-kernel-source]]** +  - Si vous utilisez le paquet nvidia-glx-new,​ [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt>nvidia-new-kernel-source|nvidia-new-kernel-source]]** 
-  - Si vous utilisez le paquet nvidia-glx, [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt://nvidia-kernel-source|nvidia-kernel-source]]** +  - Si vous utilisez le paquet nvidia-glx, [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt>nvidia-kernel-source|nvidia-kernel-source]]** 
-  - Si vous utilisez le paquet nvidia-glx-legacy,​ [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt://nvidia-legacy-kernel-source|nvidia-legacy-kernel-source]]** +  - Si vous utilisez le paquet nvidia-glx-legacy,​ [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt>nvidia-legacy-kernel-source|nvidia-legacy-kernel-source]]**
- +
- +
-Une fois le paquet installé, il se trouve dans le dossier /usr/src/ ,alors décompressez :+
  
 +Une fois le paquet installé, il se trouve dans le dossier **/​usr/​src/​**,​alors décompressez ((//<​TAB>//​ correspond ici à la touche [[wpfr>​Touche_tabulation|tabulation]] utilisant ainsi l'​[[wpfr>​Complètement|autocomplétion]])).:​
 <​code>​ <​code>​
 tar xvfz nvidia<​TAB>​.tar.gz tar xvfz nvidia<​TAB>​.tar.gz
 </​code>​ </​code>​
- +Vous devriez avoir un dossier ​**/​modules/​nvidia-kernel** (ou nvidia-kernel-legacy ou nvidia-kernel-new selon le paquet installé).
-Vous devriez avoir un dossier /​modules/​nvidia-kernel (ou nvidia-kernel-legacy ou nvidia-kernel-new selon le paquet installé).+
  
 Lors de la compilation,​ n'​oubliez pas d'​ajouter en paramètre (selon le paquet installé) : Lors de la compilation,​ n'​oubliez pas d'​ajouter en paramètre (selon le paquet installé) :
Ligne 169: Ligne 149:
 === Avec le .run du site === === Avec le .run du site ===
  
-Ne faites rien pour l'​instant,​ puis une fois votre noyau compilé, téléchargez le .run sur le site officiel. Tutoriel [[:nvidia.run|ici]]+Ne faites rien pour l'​instant,​ puis une fois votre noyau compilé, téléchargez le //.run// sur le site officiel. Tutoriel [[:​nvidia|ici]]
  
 ==== ATI ==== ==== ATI ====
  
-Si vous utilisez une carte ATI, vous n'​utilisez peut être pas le pilote propriétaire (ou celui ci n'est peut être pas indispensable). ​Je vous conseil avant d'​entreprendre la compilation du noyau de voir si les performances du pilote libre sont à votre goût (le pilote libre est parfois même plus performant que le propriétaire).+Si vous utilisez une carte [[:​amd-ati]], vous n'​utilisez peut être pas le pilote propriétaire (ou celui ci n'est peut être pas indispensable). ​Il est conseillé, __avant__ ​d'​entreprendre la compilation du noyaude voir si les performances du pilote libre sont à votre goût celui-ci ​(le pilote libre est parfois même plus performant que le propriétaire).
  
 FIXME (Méthodes non-testée) FIXME (Méthodes non-testée)
Ligne 179: Ligne 159:
 === Avec la technique des liens symboliques === === Avec la technique des liens symboliques ===
  
-Voir [[http://​ubuntuforums.org/​showthread.php?​t=441013|ce How-To]].+Voir [[https://​ubuntuforums.org/​showthread.php?​t=441013|ce How-To]] ​(en).
  
 === Avec le module === === Avec le module ===
  
-J'​imagine que ça doit être comme pour NVidia avec le paquet **fglrx-kernel-source** ?? FIXME +FIXME J'​imagine que ça doit être comme pour NVidia avec le paquet **fglrx-kernel-source** ?
- +
-=== Avec le .run du site === +
- +
-Ne faites rien pour l'​instant,​ puis une fois votre noyau compilé, téléchargez le .run sur le site officiel. Tutoriel [[:​ati.run|ici]]+
  
 ===== Configuration du noyau ===== ===== Configuration du noyau =====
  
-La configuration du noyau est l'​étape où vous choisissez les options. Vous pouvez enlever l'ABS, ajouter des airbags, ​etc etc.+La configuration du noyau est l'​étape où vous choisissez les options. Vous pouvez enlever l'ABS, ajouter des airbags, ​changer la transmission, ​etc.
  
-Rendez-vous dans le dossier ​"​linux-'​la version téléchargée'" ​:+Tout d'​abord ouvrez un **[[:​terminal]]** puis rendez ​vous dans le dossier ​où vous avez décompressé [[#​Téléchargement des sources|les sources téléchargées]] grâce à la commande: 
 +<​code>​ 
 +cd /​le/​chemin/​vers/​le/​dossier/​qui/​contient/​linux 
 +</​code>​
  
-  cd /​usr/​src/​linux-*+Puis lancez cette commande qui permet de récupérer la configuration du noyau que vous utilisez actuellement et qui vous demande automatiquement de gérer les conflits si l'​ancienne configuration n'est pas compatible avec le nouveau noyau:
  
-Initialisez votre nouveau jeu d'​options : 
 <​code>​ <​code>​
-  ​make oldconfig+make oldconfig
 </​code>​ </​code>​
  
-Vous pouvez garder toutes les réponses proposées par défaut et juste appuyer sur entrer ​lorsqu'​il vous pose une question, ​mais si vous comprenez ce qui est dit cela permettra d'​ajouter ou non de nouvelles fonctions à votre Noyau qui n'​existait pas encore lorsque les développeurs d'​Ubuntu ​on choisi le noyau qui serra intégré ​dans la version que vous utilisez actuellement.+Vous pouvez garder toutes les réponses proposées par défaut et juste appuyer sur //​Entrer// ​lorsqu'​il vous pose une question. Mais, si vous comprenez ce qui est ditcela permettra d'​ajouter ou non de nouvelles fonctions à votre Noyau, options ​qui n'​existait ​peut-être ​pas encore lorsque les développeurs d'​Ubuntu ​ont choisi le noyau intégré ​à la [[:​versions|version]] que vous utilisez actuellement.
  
-==== Interface de configuration en Mode console ​====+Maintenant vous devez choisir l'une des différentes interfaces de configuration du noyau si vous voulez faire quelques modifications par rapport aux paramètres par défaut. Même si vous ne modifiez rien, il est conseillé d'y jeter un œil par curiosité.\\ 
 +Vous pouvez au choix utiliser: 
 +  * une [[#​Interface de configuration QT - Recommandé]] 
 +  * une [[#Interface de configuration en Mode console]] 
 +  * une [[#​Interface de configuration en Mode semi-graphique (menu bleu)]] 
 +  * une [[#​Interface de configuration en GTK+ (interface GNOME -elle n'est pas bien finie...)]]
  
-Déconseillé pour les débutants et même les autres.+==== Interface de configuration QT - Recommandé ====
  
 <​code>​ <​code>​
-  ​make config+make xconfig
 </​code>​ </​code>​
  
-==== Interface de configuration en Mode semi-graphique (menu bleu) ==== +**Si la commande précédente retourne une erreur du type "​qconf:​ cannot connect to X server",​ essayez :**
 <​code>​ <​code>​
-  ​make menuconfig+ #​exit 
 + $sudo xhost + 
 + $su 
 + #cd /​usr/​src/​linux-* 
 + #make xconfig
 </​code>​ </​code>​
  
-==== Interface de configuration en **TK** ou en **QT** ​====+<note tip>Ne saisissez pas les **#** et **$** qui sont là à titre d'​information et correspondent respectivement aux prompts [[:root]] et utilisateur standard</​note>​ 
 + 
 +==== Interface de configuration en Mode console ​==== 
 + 
 +Déconseillé pour les débutants tout comme les autres.
  
 <​code>​ <​code>​
-  ​make xconfig+make config
 </​code>​ </​code>​
  
-**Si la commande précédente retourne une erreur du type "​qconf:​ cannot connect to X server",​ essayez :**+==== Interface de configuration en Mode semi-graphique (menu bleu) ==== 
 <​code>​ <​code>​
-  #exit +make menuconfig
-  $sudo xhost + +
-  $su +
-  #cd /​usr/​src/​linux-* +
-  #make xconfig+
 </​code>​ </​code>​
  
Ligne 236: Ligne 223:
  
 <​code>​ <​code>​
-  ​make gconfig+make gconfig
 </​code>​ </​code>​
  
 ---- ----
  
-**Si vous n'avez rien à configurer, cliquez simplement sur enregistrer ​dans l'​interface graphique qui apparaît** +**Si vous n'avez rien à configurer, cliquez simplement sur //​Enregistrer// ​dans l'​interface graphique qui apparaît**.\\ 
-Si vous avez envie de configurer au mieux votre noyauaidez-vous de la page [[:tutoriel:​kernel_options]]+ 
 + 
 +<note tip>Vous ne risquez rien à compiler un Noyau inutilisable car les anciens restent tout de même installés sur le systèmeil vous suffira simplement d'en choisir un autre dans le menu [[:amorcage#​chargeurs_d_amorcage|d'​amorçage]] au démarrage de votre ordinateur.</​note>​
  
 ===== Compilation ===== ===== Compilation =====
  
-<note important>​Cette partie décrit ​toutes les options possibles pour **make-kpkg**,​ et il y en a plein, **si vous voulez simplement créer un noyau classique rapidement, allez directement à la partie [[#​Compilation basique]].**</​note>​+<note important>​Cette partie décrit ​la plupart des options possibles pour **make-kpkg**,​ et il y en a plein, les connaître ne vous servira pas à grand chose, **si vous voulez simplement créer un noyau classique rapidement, allez directement à la partie [[#​Compilation basique]].**</​note>​
  
 La compilation se fait avec **make-kpkg** qui automatise en fait plusieurs commandes : La compilation se fait avec **make-kpkg** qui automatise en fait plusieurs commandes :
  
-  * make dep - établit les dépendances entre fichiers constitutifs du code noyau +  * //make dep// - établit les dépendances entre fichiers constitutifs du code noyau 
-  * make clean - supprime les objets résultant d'une compilation antérieure du noyau (si elle a eu lieu) +  * //make clean// - supprime les objets résultant d'une compilation antérieure du noyau (si elle a eu lieu) 
-  * make bzImage - produit l'​image compressée qui servira à l'​amorçage +  * //make bzImage// - produit l'​image compressée qui servira à l'​amorçage 
-  * make modules - compile les modules+  * //make modules// - compile les modules
  
-En résulte alors un paquet *.deb (si vous utilisez la cible buildpackage) qu'il faudra installer avec dpkg :+En résulte alors un [[:paquet]] //*.deb// (si vous utilisez la cible buildpackage) qu'il faudra installer avec [[:dpkg]] :
  
 <​code>​ <​code>​
-  ​sudo dpkg -i linux*.deb+sudo dpkg -i linux*.deb
 </​code>​ </​code>​
  
 +==== Les arguments de compilation ====
  
 +Il existe différents arguments à //​make-kpkg//:​
  
-==== Les arguments de compilation ====+=== -j ===
  
-Il existe différents arguments ​à make-kpkg :+Cet argument **totalement facultatif** permet de choisir le nombre de Threads, c'​est ​à dire le nombre de processus simultané, que le CPU traitera pendant la compilation. En résumé ça ne sert qu'à augmenter la vitesse à laquelle votre ordinateur va créer votre nouveau noyau, si votre CPU à plusieurs cœurs.
  
-=== --initrd ==+<​code>​ 
 +-j 8 
 +</​code>​
  
-Le plus important, crée un fichier initrd qui permet ​d'​utiliser ​des modules directement à l'amorçage du noyau.+Permettra ​d'​utiliser ​les 8 cœurs d'un CPU en ayant 8 par exemple.
  
-=== --rootcmd=fakeroot|sudo ​===+=== --initrd ​===
  
-Vous permet ​de choisir avec quelle méthode vous permettez à make-kpkg ​d'​utiliser ​les ressources de root.+Le plus important: crée un fichier **initrd** qui permet d'​utiliser ​des modules directement à l'​amorçage du noyau.
  
-Vous pouvez également compiler en root : +=== --rootcmd=fakeroot|sudo ===
  
-<​code>​ +Vous propose de choisir avec quelle méthode vous permettez à //​make-kpkg/​/ d'​utiliser les ressources de root.
-jm@ubuntu:/usr/src/linux/$ su root +
-Password: +
-root@ubuntu:/​usr/​src/​linux/​$ +
-root@ubuntu:/​usr/​src/​linux/​$ ​make-kpkg ​--initrd kernel_image +
-</code>+
  
 === --added_modules === === --added_modules ===
Ligne 291: Ligne 279:
 --added-modules=alsa-driver,​nvidia-kernel-legacy --added-modules=alsa-driver,​nvidia-kernel-legacy
 </​code>​ </​code>​
- 
-=== --append-to-version & --revision === 
- 
-**FACULTATIF** 
- 
-Pour ajouter une version à votre noyau (voir [[:​tutoriel/​comment_compiler_un_kernel_sur_mesure_old]]). 
- 
- 
  
  
Ligne 305: Ligne 285:
 === buildpackage === === buildpackage ===
  
-**C'​est celle qu'il faut utiliser si vous débutez !!** +Cela a pour conséquence d'​utiliser la cible "clean"et "​binary"​ décrite ci-dessous.
- +
-Cela a pour conséquence d'​utiliser la cible "clean et "​binary"​ décrite ci-dessous. ​+
  
 === clean === === clean ===
  
-Permet de « nettoyer le répertoire des sources du noyau de tous les fichiers créés par l'​invocation de l'une des cibles données ci dessous, et effectue un make distclean » (traduction de la partie du manuel consacré à cette cible man make-kpkg).+Permet de « nettoyer le répertoire des sources du noyau de tous les fichiers créés par l'​invocation de l'une des cibles données ci dessous, et effectue un make distclean » ((traduction de la partie du manuel consacré à cette cible et accessible en saisissant ''​man make-kpkg''​)).
  
 === binary === === binary ===
  
-Cette cible « construit les quatre paquets Debian du noyau en utilisant les cibles kernel_source,​ kernel_headers,​ kernel_doc et kernel_image (traduction de la partie du manuel consacré à cette cible *$ man make-kpkg). +Cette cible « construit les quatre paquets Debian du noyau en utilisant les cibles kernel_source,​ kernel_headers,​ kernel_doc et kernel_image ​((traduction de la partie du manuel consacré à cette cible et accessible en saisissant ''​man make-kpkg''​)).
  
 === kernel_doc === === kernel_doc ===
  
 Cet autre cible compile et crée pour vous un paquet Debian contenant les documentations fournis avec le noyau. Cet autre cible compile et crée pour vous un paquet Debian contenant les documentations fournis avec le noyau.
- 
  
 === kernel_image === === kernel_image ===
  
-Cela permet de créer un paquet qui contient l'​image du noyau, ses modules et permet aussi la configuration automatique ​de GRUB ou de LILO.+Cela permet de créer un paquet qui contient l'​image du noyau, ses modules et permet aussi la configuration automatique ​du [[:​amorcage#​chargeurs_d_amorcage|chargeur d'​amorçage]] comme [[:​Grub]] ​ou [[:Lilo]].
  
 === kernel_source === === kernel_source ===
Ligne 332: Ligne 308:
  
 === kernel_headers === === kernel_headers ===
 +
 Celle-ci a pour but de produire un paquet Debian contenant les entêtes du noyau Linux. Les entêtes peuvent être nécessaires pour compiler certains programmes. Celle-ci a pour but de produire un paquet Debian contenant les entêtes du noyau Linux. Les entêtes peuvent être nécessaires pour compiler certains programmes.
  
Ligne 337: Ligne 314:
  
 Cette cible a pour but de produire un paquet Debian pour chaque module supplémentaire que vous avez installé et qui se trouve dans le répertoire /​usr/​src/​modules/​. Cette cible a pour but de produire un paquet Debian pour chaque module supplémentaire que vous avez installé et qui se trouve dans le répertoire /​usr/​src/​modules/​.
- 
  
 ==== Compilation basique ==== ==== Compilation basique ====
  
-La commande ​la plus basique pour compiler :+Avant de procéder à la compilation il faut savoir que une compilation ​basique ​peut durer entre 2 heures et trois heures. Mais si vous possédez un ordinateur qui à plusieurs cœur (Core) vous pouvez augmenter la vitesse de compilation en spécifiant le nombre de cœur à utiliser ​pour la compilation.
  
-== Sous Ubuntu ==+Voici un exemple pour un ordinateur à 5 cœurs (A changer en fonction de votre ordinateur)
  
 <​code>​ <​code>​
-sudo make-kpkg --initrd buildpackage+echo "​CONCURRENCY_LEVEL= 5" >> /etc/kernel-pkg.conf
 </​code>​ </​code>​
  
-== Sous Debian == +Et maintenant voici la commande la plus basique pour compiler : 
- +<​code>​ 
-  su -c 'make-kpkg --initrd ​buildpackage'​ +make-kpkg --initrd ​--append-to-version=-monnoyau --revision=1.0 --rootcmd=fakeroot kernel_image kernel_headers 
- +</​code>​
-Retournez dans le dossier précédent : +
- +
-  cd .. +
- +
-Et installer les *.deb : +
- +
-== Sous Ubuntu ==+
  
 +Retournez dans le dossier précédent avec:
 <​code>​ <​code>​
-sudo dpkg -i linux*.deb+cd ..
 </​code>​ </​code>​
  
-== Sous Debian ==+Et installer les //*.deb// :
  
-  su -c 'dpkg -i linux*.deb'​+  ​* __Sous **Ubuntu**__:<​code>​sudo dpkg -i linux*.deb</​code>​ 
 +  * __Sous **Debian**__:<​code>​su -c 'dpkg -i linux*.deb'​</​code>​
  
 Voilà c'est fait :-) Voilà c'est fait :-)
-===== Liens ===== 
  
-HOW-TO : Utiliser le linux-restricted-module pour un noyau compilé :+===== Gestion des bugs =====
  
-http://​ubuntuforums.org/​showthread.php?​t=441013+En cas de découverte d'un bug il faut commencer par une bissection.\\ 
 +Voir : [[:​kernel_bissection|Bissection d'un noyau]]
  
-Un bon guide pour Debian pleins d'​infos sympa : +===== Liens =====
- +
-http://​www.andesi.org/​index.php?​node=77+
  
-Un guide pour installer la carte wifi **Intel PRO/​Wireless 2200BG**+  * [[https://​ubuntuforums.org/​showthread.php?​t=441013|HOW-TO : Utiliser le linux-restricted-module pour un noyau compilé]] (en) 
 +  * [[http://​www.andesi.org/​index.php?​node=77|Un bon guide pour Debian plein d'​infos sympa]] 
 +  * [[http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=1108685#​p1108685|Un guide pour installer la carte wifi **Intel PRO/​Wireless 2200BG**]]
  
-http://​forum.ubuntu-fr.org/​viewtopic.php?​pid=1108685#​p1108685 
 ----- -----
-//​Contributeurs: ​Créée par [[utilisateurs:​Fabien26]], ​énormément améliorée par [[:​utilisateurs/adam0509]], ​mise à jour par [[:​utilisateurs/BeAvEr.]] et [[:​utilisateurs/fleroi91]].//​+//​Contributeurs:​ [[:utilisateurs:​Fabien26]],​ [[:​utilisateurs:adam0509]], [[:​utilisateurs:BeAvEr]][[:​utilisateurs:fleroi91]], [[:​utilisateurs:​olivier_v]].//
  • tutoriel/comment_compiler_un_kernel_de_kernel.org.1321812595.txt.gz
  • Dernière modification: Le 15/12/2011, 15:21
  • (modification externe)