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édentesRévision précédente
Prochaine révision
Révision précédente
tutoriel:comment_compiler_un_kernel_de_kernel.org [Le 23/03/2015, 10:16] – [ATI] supression lien xgl L'Africaintutoriel:comment_compiler_un_kernel_de_kernel.org [Le 11/09/2022, 12:24] (Version actuelle) – 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) moths-art
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 40: Ligne 41:
   * 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 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]]**   * 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 ====
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 ===
Ligne 169: 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 220: 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 230: 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 262: 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 278: 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]].//