Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tutoriel:comment_compiler_un_kernel_de_kernel.org [Le 21/11/2011, 18:45] – Il ne sert plus à rien de compiler les sources dans /usr/src à part à compliquer les explications + supression de la partie sur le noyau 2.4, la méthode ne marche pas. fabien26 | tutoriel: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 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 | + | Il peut être utile de compiler une certaine |
| + | Cette page propose de détailler comment faire et invite tous ceux qui le veulent à ajouter des précisions ... | ||
| - | On peut aussi vouloir | + | <note tip>Si vous souhaitez |
| ===== Pré-requis : ===== | ===== Pré-requis : ===== | ||
| * Savoir utiliser le [[: | * Savoir utiliser le [[: | ||
| - | * Savoir ce que sont " | + | * Savoir ce que sont "[[:linux]]", "[[: |
| * 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 |
| ===== Dépendances ===== | ===== Dépendances ===== | ||
| - | ==== Paquets | + | ==== Paquets |
| Tout d' | Tout d' | ||
| + | * [[: | ||
| + | * [[: | ||
| + | * [[: | ||
| - | [[:tutoriel: | + | Ou la ligne de commande pour tout installer d'un coup avec l' |
| + | < | ||
| - | [[:tutoriel: | + | FIXME |
| + | EDIT : afin de pouvoir compiler | ||
| - | [[: | + | [[https:// |
| + | (le paragraphe juste au dessus semble être faux puisque la commande installe kernel-package_13.014) | ||
| ==== Paquets pour créer le " | ==== Paquets pour créer le " | ||
| - | " | + | " |
| + | * une interface en **console** (bleue) => [[: | ||
| + | * une interface en **GTK+** (noyau 2.6 seulement) => [[: | ||
| + | * une interface en **QT4** (Fonctionne du noyau 2.6 au noyau 4.0 - sûrement l' | ||
| - | \\ | + | ===== Méthode simple de compilation (par exemple pour appliquer uniquement un patch) ===== |
| - | Pour une interface en **console** (bleue) : | + | <note tip> |
| - | [[: | + | |
| + | | ||
| + | </ | ||
| - | 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 : |
| - | [[: | + | |
| - | Pour une interface en **GTK+** (noyau 2.6 seulement | + | 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/ | ||
| + | |||
| + | mkdir ~/NOYAU | ||
| + | cd ~/NOYAU | ||
| + | git clone --depth=1 -b linux-5.10.y git:// | ||
| + | # | ||
| + | |||
| + | 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' | ||
| + | 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 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 | ||
| + | |||
| + | < | ||
| + | Pour compiler la dernière version de développement il faudrait utiliser plus haut | ||
| + | |||
| + | git clone --depth=1 git:// | ||
| + | </ | ||
| - | Pour une interface en **QT** (noyau 2.6 seulement - sûrement l' | ||
| - | [[: | ||
| ===== Téléchargement des sources ===== | ===== Téléchargement des sources ===== | ||
| - | Tout d' | + | Tout d' |
| - | [[http:// | + | [[http:// |
| - | Téléchargez l' | + | Téléchargez l' |
| + | < | ||
| + | tar xvf linux-* | ||
| + | </ | ||
| + | |||
| + | <note tip>Il est possible de récupérer les sources par git (voir paragraphe précédent) </ | ||
| ===== 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 | + | Dans certains cas, certains pilotes propriétaires notamment, il faut préparer un peu plus le terrain pour compiler |
| - | FIXME cette partie est totalement dépassée, peut être n'est elle plus nécessaire, | + | FIXME cette partie est totalement dépassée, peut être n'est-elle plus nécessaire, |
| ==== NVIDIA ==== | ==== NVIDIA ==== | ||
| + | |||
| + | Pour les cartes [[: | ||
| === Avec la technique des liens symboliques === | === Avec la technique des liens symboliques === | ||
| - | Voir [[http:// | + | Voir [[https:// |
| === Avec le module === | === Avec le module === | ||
| Ligne 69: | 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, | + | - Si vous utilisez le paquet nvidia-glx-new, |
| - | - Si vous utilisez le paquet nvidia-glx, [[: | + | - Si vous utilisez le paquet nvidia-glx, [[: |
| - | - Si vous utilisez le paquet nvidia-glx-legacy, | + | - Si vous utilisez le paquet nvidia-glx-legacy, |
| - | + | ||
| - | + | ||
| - | 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 **/ | ||
| < | < | ||
| tar xvfz nvidia< | tar xvfz nvidia< | ||
| </ | </ | ||
| - | + | Vous devriez avoir un dossier | |
| - | Vous devriez avoir un dossier / | + | |
| Lors de la compilation, | Lors de la compilation, | ||
| Ligne 92: | Ligne 149: | ||
| === Avec le .run du site === | === Avec le .run du site === | ||
| - | Ne faites rien pour l' | + | Ne faites rien pour l' |
| ==== ATI ==== | ==== ATI ==== | ||
| - | Si vous utilisez une carte ATI, vous n' | + | Si vous utilisez une carte [[: |
| FIXME (Méthodes non-testée) | FIXME (Méthodes non-testée) | ||
| Ligne 102: | Ligne 159: | ||
| === Avec la technique des liens symboliques === | === Avec la technique des liens symboliques === | ||
| - | Voir [[http:// | + | Voir [[https:// |
| === Avec le module === | === Avec le module === | ||
| - | J' | + | FIXME J' |
| - | === Avec le .run du site === | + | ===== Configuration |
| - | 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]] | + | La configuration du noyau est l'étape où vous choisissez les options. Vous pouvez enlever l'ABS, ajouter des airbags, changer la transmission, |
| - | ===== Configuration du noyau ===== | + | Tout d' |
| + | < | ||
| + | cd / | ||
| + | </ | ||
| - | La configuration du noyau est l' | + | 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 |
| - | Tout d' | + | < |
| + | make oldconfig | ||
| + | </ | ||
| - | cd /le/chemin/vers/le/ | + | Vous pouvez garder toutes les réponses proposées par défaut et juste appuyer sur //Entrer// lorsqu' |
| - | Puis lancez cette commande qui permet | + | Maintenant vous devez choisir l'une des différentes interfaces |
| + | Vous pouvez au choix utiliser: | ||
| + | * une [[# | ||
| + | * une [[# | ||
| + | * une [[# | ||
| + | * une [[# | ||
| + | |||
| + | ==== Interface de configuration QT - Recommandé ==== | ||
| < | < | ||
| - | | + | make xconfig |
| </ | </ | ||
| - | Vous pouvez garder toutes les réponses proposées par défaut et juste appuyer sur entrer lorsqu' | + | **Si la commande précédente retourne |
| + | < | ||
| + | # | ||
| + | $sudo xhost + | ||
| + | $su | ||
| + | #cd / | ||
| + | #make xconfig | ||
| + | </ | ||
| - | Maintenant vous devez choisir l'une des différentes interfaces de configuration du noyau si vous voulez faire quelques modifications par rapport | + | <note tip>Ne saisissez pas les **#** et **$** qui sont là à titre d'information et correspondent respectivement |
| ==== Interface de configuration en Mode console ==== | ==== Interface de configuration en Mode console ==== | ||
| - | Déconseillé pour les débutants | + | Déconseillé pour les débutants |
| < | < | ||
| - | | + | make config |
| </ | </ | ||
| Ligne 141: | Ligne 217: | ||
| < | < | ||
| - | | + | make menuconfig |
| </ | </ | ||
| Ligne 147: | Ligne 223: | ||
| < | < | ||
| - | | + | make gconfig |
| </ | </ | ||
| - | ==== Interface de configuration en TK ou en QT - Recommandé ==== | + | ---- |
| - | < | + | **Si vous n'avez rien à configurer, cliquez simplement sur // |
| - | make xconfig | + | |
| - | </code> | + | |
| - | **Si la commande précédente retourne une erreur du type " | ||
| - | < | ||
| - | #exit | ||
| - | $sudo xhost + | ||
| - | $su | ||
| - | #cd / | ||
| - | #make xconfig | ||
| - | </ | ||
| - | ---- | + | <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 [[: |
| - | + | ||
| - | **Si vous n'avez rien à configurer, cliquez simplement sur enregistrer dans l' | + | |
| - | Si vous avez envie de configurer au mieux votre noyau, aidez-vous de la page [[: | + | |
| ===== Compilation ===== | ===== Compilation ===== | ||
| Ligne 176: | Ligne 239: | ||
| 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' | + | * //make bzImage// - produit l' |
| - | * 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]] : |
| < | < | ||
| - | | + | sudo dpkg -i linux*.deb |
| </ | </ | ||
| ==== Les arguments de compilation ==== | ==== Les arguments de compilation ==== | ||
| - | Il existe différents arguments à make-kpkg : | + | Il existe différents arguments à //make-kpkg//: |
| - | === --initrd | + | === -j === |
| - | Le plus important, crée un fichier initrd qui permet | + | Cet argument **totalement facultatif** |
| - | === --rootcmd=fakeroot|sudo === | + | < |
| + | -j 8 | ||
| + | </ | ||
| - | Vous permet de choisir avec quelle méthode vous permettez à make-kpkg | + | Permettra |
| - | Vous pouvez également compiler en root : | + | === --initrd === |
| - | < | + | Le plus important: crée un fichier **initrd** qui permet d' |
| - | jm@ubuntu:/ | + | |
| - | Password: | + | === --rootcmd=fakeroot|sudo === |
| - | root@ubuntu:/ | + | |
| - | root@ubuntu: | + | Vous propose de choisir avec quelle méthode vous permettez à // |
| - | </code> | + | |
| === --added_modules === | === --added_modules === | ||
| Ligne 216: | Ligne 280: | ||
| </ | </ | ||
| - | === --append-to-version & --revision === | ||
| - | |||
| - | **FACULTATIF** | ||
| - | |||
| - | Pour ajouter une version à votre noyau (voir [[: | ||
| ==== Les cibles de compilation === | ==== Les cibles de compilation === | ||
| Ligne 226: | Ligne 285: | ||
| === buildpackage === | === buildpackage === | ||
| - | **C' | + | Cela a pour conséquence d' |
| - | + | ||
| - | Cela a pour conséquence d' | + | |
| === clean === | === clean === | ||
| - | Permet de « nettoyer le répertoire des sources du noyau de tous les fichiers créés par l' | + | Permet de « nettoyer le répertoire des sources du noyau de tous les fichiers créés par l' |
| === binary === | === binary === | ||
| - | Cette cible « construit les quatre paquets Debian du noyau en utilisant les cibles kernel_source, | + | Cette cible « construit les quatre paquets Debian du noyau en utilisant les cibles kernel_source, |
| === 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' | + | Cela permet de créer un paquet qui contient l' |
| === kernel_source === | === kernel_source === | ||
| Ligne 253: | 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 261: | Ligne 317: | ||
| ==== Compilation basique ==== | ==== Compilation basique ==== | ||
| - | La commande | + | Avant de procéder à la compilation il faut savoir que une compilation |
| - | make-kpkg --initrd buildpackage | + | Voici un exemple pour un ordinateur à 5 cœurs (A changer en fonction de votre ordinateur) |
| - | Retournez dans le dossier précédent avec: | + | < |
| + | echo " | ||
| + | </ | ||
| - | cd .. | + | Et maintenant voici la commande la plus basique pour compiler : |
| + | < | ||
| + | make-kpkg --initrd --append-to-version=-monnoyau --revision=1.0 --rootcmd=fakeroot kernel_image kernel_headers | ||
| + | </ | ||
| - | Et installer les *.deb : | + | Retournez dans le dossier précédent avec: |
| + | < | ||
| + | cd .. | ||
| + | </ | ||
| - | == Sous Ubuntu == | + | Et installer les //*.deb// : |
| - | sudo dpkg -i linux*.deb | + | |
| - | + | | |
| - | == Sous Debian == | + | |
| - | + | ||
| - | su -c 'dpkg -i linux*.deb' | + | |
| Voilà c'est fait :-) | Voilà c'est fait :-) | ||
| - | ===== Liens ===== | ||
| - | HOW-TO : Utiliser le linux-restricted-module pour un noyau compilé : | + | ===== Gestion des bugs ===== |
| - | http:// | + | En cas de découverte d'un bug il faut commencer par une bissection.\\ |
| + | Voir : [[: | ||
| - | Un bon guide pour Debian pleins d' | + | ===== Liens ===== |
| - | + | ||
| - | http:// | + | |
| - | Un guide pour installer la carte wifi **Intel PRO/ | + | * [[https:// |
| + | * [[http:// | ||
| + | * [[http:// | ||
| - | http:// | ||
| ----- | ----- | ||
| - | // | + | // |
