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 31/10/2014, 15:34]
95.128.43.164 [Configuration particulière]
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 34: Ligne 34:
 [[https://​launchpad.net/​ubuntu/​+source/​kernel-package/​13.003/​+build/​5980712/​+files/​kernel-package_13.003_all.deb]] [[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"​ ====
  
Ligne 39: Ligne 40:
   * une interface en **console** (bleue) => [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt>​libncurses5-dev|libncurses5-dev]]**   * 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 **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 3.4 - 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]]**+  * 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) ===== 
 + 
 +<note tip>​Cette méthode s'​applique si: 
 +  * 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.10) sur laquelle vous souhaitez **simplement appliquer un patch** sans autre modification 
 +</​note>​ 
 + 
 +Lancer votre machine avec le noyau que vous souhaitez modifier. Vérifier la version avec : 
 + 
 +  uname -r 
 + 
 +Installation des dépendances 
 + 
 +  sudo apt install -y git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache 
 + 
 +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 ! 
 + 
 +  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 
 + 
 +Donner les bons droits à vos fichiers et répertoires 
 + 
 +  sudo chmod -R 0755 linux-stable 
 +  cd linux-stable 
 + 
 +Optionnel : appliquer le patch 
 + 
 +  patch -p1 --dry-run <​[fichier-patch] (pour tester qu'il n'y a pas d'​erreur sans appliquer) 
 +  patch -p1 < [fichier_de_patch] (pour appliquer le patch) 
 +  patch -R < [fichier_de_patch] (pour retirer le patch) 
 + 
 +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 
 + 
 +Compiler le noyau (répéter ces étapes à chaque compilation) 
 + 
 +  yes ''​ | make oldconfig 
 +  make clean 
 +  make -j$(nproc) deb-pkg LOCALVERSION=-custom 
 + 
 +Entre chaque essai de compilation exécuter pour nettoyer : 
 + 
 +  rm vmlinux-gdb.py 
 +   
 +Installer les fichiers crées dans ~/NOYAU avec 
 + 
 +  sudo dpkg -i *.deb 
 + 
 +<​note>​ 
 +Pour compiler la dernière version de développement il faudrait utiliser plus haut 
 + 
 +  git clone --depth=1 git://​git.kernel.org/​pub/​scm/​linux/​kernel/​git/​torvalds/​linux.git 
 +</​note>​ 
  
 ===== Téléchargement des sources ===== ===== Téléchargement des sources =====
  
 Tout d'​abord téléchargez les sources du noyau depuis Kernel.org:​\\ Tout d'​abord téléchargez les sources du noyau depuis Kernel.org:​\\
-[[http://​www.kernel.org/​pub/​linux/​kernel/​|Lien vers le ftp de 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: 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:
Ligne 50: Ligne 108:
 tar xvf linux-* 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 =====
Ligne 63: Ligne 123:
 === Avec la technique des liens symboliques === === Avec la technique des liens symboliques ===
  
-Voir [[http://​ubuntuforums.org/​showthread.php?​t=441013|ce How-To]] (en).+Voir [[https://​ubuntuforums.org/​showthread.php?​t=441013|ce How-To]] (en).
  
 === Avec le module === === Avec le module ===
Ligne 89: 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). Il est conseillé, __avant__ d'​entreprendre la compilation du noyau, de 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).+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 noyau, de 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 99: 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]] (en).+Voir [[https://​ubuntuforums.org/​showthread.php?​t=441013|ce How-To]] (en).
  
 === Avec le module === === Avec le module ===
  
 FIXME J'​imagine que ça doit être comme pour NVidia avec le paquet **fglrx-kernel-source** ? 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 =====
Ligne 173: Ligne 229:
  
 **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 noyau, aidez-vous de la page << [[:​tutoriel:​kernel_options|Choisir les options lors de la compilation du noyau]] >> mais le mieux reste de lire les options et de bien vous amuser :-)+
  
 <note tip>Vous ne risquez rien à compiler un Noyau inutilisable car les anciens restent tout de même installés sur le système, il 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>​ <note tip>Vous ne risquez rien à compiler un Noyau inutilisable car les anciens restent tout de même installés sur le système, il 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>​
Ligne 200: Ligne 256:
 === -j === === -j ===
  
-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'​à ​augmenté ​la vitesse ​avec laquelle votre ordinateur va créer votre nouveau noyau si votre CPU à plusieurs cœurs.+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 noyausi votre CPU à plusieurs cœurs.
  
 <​code>​ <​code>​
Ligne 224: Ligne 280:
 </​code>​ </​code>​
  
-=== --append-to-version & --revision === 
- 
-**FACULTATIF** 
- 
-Pour ajouter une version à votre noyau. Plus d'​informations à ce sujet sur [[/​tutoriel/​comment_compiler_un_kernel_sur_mesure_old?​rev=1253631464#​make-kpkg|cette ancienne version]] de << [[:​tutoriel:​comment_compiler_un_kernel_sur_mesure|Comment compiler un noyau sur mesure]] >>. 
  
 ==== Les cibles de compilation === ==== Les cibles de compilation ===
Ligne 234: Ligne 285:
 === buildpackage === === buildpackage ===
  
-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 ===
Ligne 266: Ligne 317:
 ==== 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. 
 + 
 +Voici un exemple ​pour un ordinateur à 5 cœurs (A changer en fonction de votre ordinateur) 
 <​code>​ <​code>​
-make-kpkg --initrd --append-to-version=-monnoyau --revision=1.0 --rootcmd=fakeroot ​kernel_doc ​kernel_image kernel_headers+echo "​CONCURRENCY_LEVEL= 5" >> /​etc/​kernel-pkg.conf 
 +</​code>​ 
 + 
 +Et maintenant voici la commande la plus basique pour compiler : 
 +<​code>​ 
 +make-kpkg --initrd --append-to-version=-monnoyau --revision=1.0 --rootcmd=fakeroot kernel_image kernel_headers
 </​code>​ </​code>​
  
Ligne 282: Ligne 341:
  
 Voilà c'est fait :-) Voilà c'est fait :-)
 +
 +===== Gestion des bugs =====
 +
 +En cas de découverte d'un bug il faut commencer par une bissection.\\
 +Voir : [[:​kernel_bissection|Bissection d'un noyau]]
  
 ===== Liens ===== ===== Liens =====
  
-  * [[http://​ubuntuforums.org/​showthread.php?​t=441013|HOW-TO : Utiliser le linux-restricted-module pour un noyau compilé]] (en)+  * [[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://​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|Un guide pour installer la carte wifi **Intel PRO/​Wireless 2200BG**]]
  
 ----- -----
-//​Contributeurs:​ [[:​utilisateurs:​Fabien26]],​ [[:​utilisateurs:​adam0509]],​ [[:​utilisateurs:​BeAvEr.]], [[:​utilisateurs:​fleroi91]].//​+//​Contributeurs:​ [[:​utilisateurs:​Fabien26]],​ [[:​utilisateurs:​adam0509]],​ [[:​utilisateurs:​BeAvEr]],​ [[:​utilisateurs:​fleroi91]], [[:​utilisateurs:​olivier_v]].//
  • tutoriel/comment_compiler_un_kernel_de_kernel.org.1414766063.txt.gz
  • Dernière modification: Le 31/10/2014, 15:34
  • par 95.128.43.164