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 20/11/2011, 19:27] – [Configuration du noyau] 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 |
| - | [[: | + | |
| - | Pour une interface en **QT** (noyau 2.6 seulement - sûrement l' | + | Installation des dépendances |
| - | [[: | + | |
| - | ===== Téléchargement des sources ===== | + | sudo apt install -y git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache |
| - | Tout d' | + | Récupération |
| - | ==== Le répertoire | + | mkdir ~/NOYAU |
| + | cd ~/NOYAU | ||
| + | git clone --depth=1 -b linux-5.10.y 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, | + | sudo chmod -R 0755 linux-stable |
| + | cd linux-stable | ||
| - | Il faut déjà que vous sachiez dans quel groupe vous vous trouvez | + | Optionnel |
| - | <code> | + | patch -p1 --dry-run |
| - | groups | + | patch -p1 < [fichier_de_patch] (pour appliquer le patch) |
| - | </code> | + | patch -R < [fichier_de_patch] (pour retirer le patch) |
| - | Si vous n' | + | 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 / | ||
| - | < | + | 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' | + | |
| - | </ | + | |
| - | Il faut maintenant se reconnecter sous votre login pour que les nouveaux droits soit fonctionnels. | + | yes '' |
| + | make clean | ||
| + | make -j$(nproc) deb-pkg LOCALVERSION=-custom | ||
| - | < | + | Entre chaque essai de compilation exécuter pour nettoyer : |
| - | su - $USERNAME | + | |
| - | </ | + | |
| - | Allez dans le répertoire | + | rm vmlinux-gdb.py |
| + | |||
| + | Installer les fichiers crées | ||
| - | < | + | sudo dpkg -i *.deb |
| - | cd /usr/src | + | |
| - | </ | + | |
| - | Vous pouvez supprimer les sources des anciens noyaux que vous avez compilés (s'il y en a) : | + | < |
| + | Pour compiler la dernière version de développement | ||
| - | < | + | git clone --depth=1 git://git.kernel.org/ |
| - | rm -d -r ./linux-* | + | </note> |
| - | </code> | + | |
| - | ==== Noyau ==== | + | |
| - | Ensuite il faut télécharger l' | ||
| - | [[http:// | ||
| - | 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) | ||
| - | < | + | ===== Téléchargement des sources ===== |
| - | wget http:// | + | |
| - | </ | + | |
| - | Idéalement, | + | Tout d' |
| + | [[http://www.kernel.org/ | ||
| + | Téléchargez l' | ||
| < | < | ||
| - | tar xvf linux-*.tar.bz2 | + | 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 |
| - | ==== ALSA (Noyaux 2.4 seulement) ==== | + | FIXME cette partie est totalement dépassée, peut être n' |
| - | 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 ==== |
| - | < | + | Pour les cartes [[:Nvidia]], |
| - | sudo apt-get install alsa-source | + | |
| - | tar xvf alsa< | + | |
| - | </ | + | |
| - | + | ||
| - | Normalement tout se trouve alors dans / | + | |
| - | + | ||
| - | Il faut ensuite configurer alsa : | + | |
| - | + | ||
| - | < | + | |
| - | jm@ubuntu:/ | + | |
| - | jm@ubuntu:/ | + | |
| - | </ | + | |
| - | + | ||
| - | Avec le configure | + | |
| - | + | ||
| - | < | + | |
| - | jm@ubuntu:/ | + | |
| - | </ | + | |
| - | + | ||
| - | \\ | + | |
| - | + | ||
| - | Malheureusement chez moi, je suis BLOQUÉ à l' | + | |
| - | + | ||
| - | ==== NVIDIA ==== | + | |
| === Avec la technique des liens symboliques === | === Avec la technique des liens symboliques === | ||
| - | Voir [[http:// | + | Voir [[https:// |
| === 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, | + | - 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 169: | 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 179: | 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 === | + | |
| - | + | ||
| - | Ne faites rien pour l' | + | |
| ===== Configuration du noyau ===== | ===== Configuration du noyau ===== | ||
| - | La configuration du noyau est l' | + | La configuration du noyau est l' |
| - | Rendez-vous dans le dossier | + | Tout d' |
| + | < | ||
| + | cd / | ||
| + | </ | ||
| - | cd / | + | 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' |
| - | + | ||
| - | 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' | + | |
| < | < | ||
| - | | + | make oldconfig |
| </ | </ | ||
| - | Vous pouvez garder toutes les réponses proposées par défaut et juste appuyer sur entrer | + | Vous pouvez garder toutes les réponses proposées par défaut et juste appuyer sur // |
| - | ==== 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 [[# | ||
| + | * une [[#Interface de configuration en Mode console]] | ||
| + | * une [[# | ||
| + | * une [[# | ||
| - | Déconseillé pour les débutants et même les autres. | + | ==== Interface de configuration QT - Recommandé ==== |
| < | < | ||
| - | | + | make xconfig |
| </ | </ | ||
| - | ==== Interface de configuration en Mode semi-graphique (menu bleu) ==== | + | **Si la commande précédente retourne une erreur du type " |
| < | < | ||
| - | | + | # |
| + | $sudo xhost + | ||
| + | $su | ||
| + | #cd / | ||
| + | #make xconfig | ||
| </ | </ | ||
| - | ==== Interface de configuration en **TK** ou en **QT** | + | <note tip>Ne saisissez pas les **#** et **$** qui sont là à titre d' |
| + | |||
| + | ==== Interface de configuration en Mode console | ||
| + | |||
| + | Déconseillé pour les débutants tout comme les autres. | ||
| < | < | ||
| - | | + | make config |
| </ | </ | ||
| - | **Si la commande précédente retourne une erreur du type " | + | ==== Interface de configuration en Mode semi-graphique (menu bleu) ==== |
| < | < | ||
| - | #exit | + | make menuconfig |
| - | $sudo xhost + | + | |
| - | $su | + | |
| - | #cd / | + | |
| - | #make xconfig | + | |
| </ | </ | ||
| Ligne 237: | Ligne 223: | ||
| < | < | ||
| - | | + | make gconfig |
| </ | </ | ||
| ---- | ---- | ||
| - | **Si vous n'avez rien à configurer, cliquez simplement sur enregistrer | + | **Si vous n'avez rien à configurer, cliquez simplement sur // |
| - | Si vous avez envie de configurer au mieux votre noyau, aidez-vous de la page [[:tutoriel: | + | |
| + | |||
| + | <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# | ||
| ===== Compilation ===== | ===== Compilation ===== | ||
| - | <note important> | + | <note important> |
| 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 ==== | ||
| + | Il existe différents arguments à // | ||
| - | ==== Les arguments de compilation ==== | + | === -j === |
| - | Il existe différents arguments | + | Cet argument **totalement facultatif** permet de choisir le nombre de Threads, c' |
| - | === --initrd == | + | < |
| + | -j 8 | ||
| + | </ | ||
| - | Le plus important, crée un fichier initrd qui permet | + | Permettra |
| - | === --rootcmd=fakeroot|sudo | + | === --initrd |
| - | Vous permet | + | Le plus important: crée un fichier **initrd** qui permet d' |
| - | Vous pouvez également compiler en root : | + | === --rootcmd=fakeroot|sudo === |
| - | < | + | Vous propose de choisir avec quelle méthode vous permettez à // |
| - | jm@ubuntu:/usr/src/linux/$ su root | + | |
| - | Password: | + | |
| - | root@ubuntu:/ | + | |
| - | root@ubuntu:/ | + | |
| - | </code> | + | |
| === --added_modules === | === --added_modules === | ||
| Ligne 292: | Ligne 279: | ||
| --added-modules=alsa-driver, | --added-modules=alsa-driver, | ||
| </ | </ | ||
| - | |||
| - | === --append-to-version & --revision === | ||
| - | |||
| - | **FACULTATIF** | ||
| - | |||
| - | Pour ajouter une version à votre noyau (voir [[: | ||
| - | |||
| - | |||
| Ligne 306: | 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 333: | 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 338: | 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 / | 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 / | ||
| - | |||
| ==== Compilation basique ==== | ==== Compilation basique ==== | ||
| - | La commande | + | Avant de procéder à la compilation il faut savoir que une compilation |
| - | == Sous Ubuntu == | + | Voici un exemple pour un ordinateur à 5 cœurs (A changer en fonction de votre ordinateur) |
| < | < | ||
| - | sudo make-kpkg --initrd buildpackage | + | echo " |
| </ | </ | ||
| - | == Sous Debian == | + | Et maintenant voici la commande la plus basique pour compiler : |
| - | + | < | |
| - | su -c 'make-kpkg --initrd | + | make-kpkg --initrd |
| - | + | </ | |
| - | Retournez dans le dossier précédent : | + | |
| - | + | ||
| - | cd .. | + | |
| - | + | ||
| - | Et installer les *.deb : | + | |
| - | + | ||
| - | == Sous Ubuntu == | + | |
| + | Retournez dans le dossier précédent avec: | ||
| < | < | ||
| - | sudo dpkg -i linux*.deb | + | cd .. |
| </ | </ | ||
| - | == Sous Debian == | + | Et installer les //*.deb// : |
| - | su -c 'dpkg -i linux*.deb' | + | |
| + | * __Sous **Debian**__:< | ||
| 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:// | ||
| ----- | ----- | ||
| - | // | + | // |
