Différences
Ci-dessous, les différences entre deux révisions de la page.
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 25/09/2013, 23:28] 82.232.75.58 [Compilation basique] |
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 29: | Ligne 29: | ||
<code>sudo apt-get install build-essential initramfs-tools fakeroot debconf-utils dpkg-dev debhelper bin86 kernel-package</code> | <code>sudo apt-get install build-essential initramfs-tools fakeroot debconf-utils dpkg-dev debhelper bin86 kernel-package</code> | ||
+ | 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ôts, car elle crée des bugs pendant la compilation, et ne produit pas au final les paquets .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 34: | 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 45: | 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 ===== | ||
- | 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 libres. | + | 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. |
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. | 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. | ||
Ligne 58: | 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 84: | 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 94: | 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 168: | 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 192: | Ligne 253: | ||
Il existe différents arguments à //make-kpkg//: | Il existe différents arguments à //make-kpkg//: | ||
+ | |||
+ | === -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'à augmenter la vitesse à laquelle votre ordinateur va créer votre nouveau noyau, si votre CPU à plusieurs cœurs. | ||
+ | |||
+ | <code> | ||
+ | -j 8 | ||
+ | </code> | ||
+ | |||
+ | Permettra d'utiliser les 8 cœurs d'un CPU en ayant 8 par exemple. | ||
=== --initrd === | === --initrd === | ||
Ligne 209: | 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 219: | 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 251: | 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 267: | 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]].// |