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 24/05/2010, 09:42] – fleroi91 | 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 1: | Ligne 1: | ||
| {{tag> | {{tag> | ||
| - | |||
| - | < | ||
| - | Ubuntu (toutes version) | ||
| - | Doit théoriquement aussi marcher sur une Debian | ||
| - | </ | ||
| - | |||
| ---- | ---- | ||
| - | |||
| - | |||
| - | |||
| ====== Comment compiler un noyau de Kernel.org ====== | ====== Comment compiler un noyau de Kernel.org ====== | ||
| - | Il peut être utile de compiler | + | Il peut être utile de compiler |
| + | 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 la [[: | + | * Savoir utiliser |
| - | * Savoir ce que sont " | + | * Savoir ce que sont "[[:linux]]", "[[: |
| - | * Connaître la configuration de l' | + | * Une bonne heure pour configurer |
| - | * Une bonne heure pour configurer ; | + | * Deux bonnes heures |
| - | * Une heure ou plus pour la compilation suivant la puissance de votre ordinateur. | + | |
| ===== Dépendances ===== | ===== Dépendances ===== | ||
| + | ==== Paquets basiques ==== | ||
| + | Tout d' | ||
| + | * [[: | ||
| + | * [[: | ||
| + | * [[: | ||
| - | ==== Paquets basique ==== | + | Ou la ligne de commande pour tout installer |
| - | + | < | |
| - | Tout d'abord il faut installer le strict minimum pour la compilation | + | |
| - | [[:tutoriel: | + | FIXME |
| + | EDIT : afin de pouvoir compiler | ||
| - | [[: | + | [[https://launchpad.net/ |
| + | (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** : | + | 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) : | + | 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:// | ||
| - | ===== Téléchargement des sources ===== | + | mkdir ~/NOYAU |
| + | cd ~/NOYAU | ||
| + | git clone --depth=1 -b linux-5.10.y git:// | ||
| + | # ^ modifier ici selon la branche dont vous avez besoin | ||
| + | Donner les bons droits à vos fichiers et répertoires | ||
| - | ==== Le répertoire /usr/src ==== | + | sudo chmod -R 0755 linux-stable |
| + | cd linux-stable | ||
| - | Nous supposerons ici que vous compilerez dans le répertoire /usr/src | + | Optionnel : appliquer |
| - | Vous pouvez bien entendu utiliser un autre répertoire, | + | patch -p1 --dry-run < |
| + | patch -p1 < [fichier_de_patch] (pour appliquer le patch) | ||
| + | patch -R < [fichier_de_patch] (pour retirer le patch) | ||
| - | Il faut déjà | + | Récupérer le fichier de configuration de votre noyau **en cours d’exécution** (la branche doit être la **même |
| + | cp / | ||
| - | < | + | Compiler le noyau (répéter ces étapes à chaque compilation) |
| - | groups | + | |
| - | </ | + | |
| - | Si vous n'appartenez pas au groupe " | + | yes '' | make oldconfig |
| + | make clean | ||
| + | make -j$(nproc) deb-pkg LOCALVERSION=-custom | ||
| - | < | + | Entre chaque essai de compilation exécuter |
| - | sudo adduser $USERNAME src ## besoin | + | |
| - | 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. | + | rm vmlinux-gdb.py |
| + | |||
| + | Installer les fichiers crées dans ~/NOYAU avec | ||
| - | < | + | sudo dpkg -i *.deb |
| - | su - $USERNAME | + | |
| - | </ | + | |
| - | Allez dans le répertoire /usr/src: | + | < |
| + | Pour compiler la dernière version de développement il faudrait utiliser plus haut | ||
| - | < | + | git clone --depth=1 git:// |
| - | cd /usr/src | + | </note> |
| - | </code> | + | |
| - | Vous pouvez supprimer les sources des anciens noyaux que vous avez compilés (s'il y en a) : | ||
| - | < | + | ===== Téléchargement des sources ===== |
| - | rm -d -r ./ | + | |
| - | </ | + | |
| - | ==== Noyau ==== | + | |
| - | Ensuite il faut télécharger l'archive sur Kernel.org: | + | Tout d'abord téléchargez les sources du noyau depuis |
| - | [[http:// | + | [[http:// |
| - | Ou alors placez vous dans le dossier /usr/src et entrer la commande suivante pour télécharger le noyau . (ici la version la plus à jour 2.6.33) | + | |
| + | Téléchargez l' | ||
| < | < | ||
| - | wget http:// | + | tar xvf linux-* |
| </ | </ | ||
| - | Idéalement, | + | <note tip>Il est possible de récupérer les sources par git (voir paragraphe précédent) </note> |
| - | < | + | ===== Configuration particulière ===== |
| - | tar xvf linux-2.*.tar.bz2 | + | |
| - | </ | + | |
| - | ==== ALSA (Noyaux 2.4 seulement) ==== | + | 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' |
| - | Alsa est le nouveau système de son de Linux, très utilisé. Malheureusement il n' | + | FIXME cette partie |
| - | < | + | ==== NVIDIA ==== |
| - | sudo apt-get install alsa-source | + | |
| - | tar xvf alsa< | + | |
| - | </ | + | |
| - | Normalement tout se trouve alors dans / | + | Pour les cartes [[:Nvidia]], |
| - | + | ||
| - | 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 154: | 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 177: | 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 [[: | ||
| FIXME (Méthodes non-testée) | FIXME (Méthodes non-testée) | ||
| Ligne 186: | 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. | + | La configuration du noyau est l'étape où vous choisissez les options. Vous pouvez enlever l'ABS, ajouter des airbags, changer la transmission, |
| + | Tout d' | ||
| + | < | ||
| + | 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' | ||
| + | < | ||
| + | make oldconfig | ||
| + | </ | ||
| + | Vous pouvez garder toutes les réponses proposées par défaut et juste appuyer sur //Entrer// lorsqu' | ||
| + | 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 [[# | ||
| + | * une [[# | ||
| + | * une [[# | ||
| + | ==== Interface de configuration QT - Recommandé ==== | ||
| - | ===== Configuration ===== | ||
| - | |||
| - | Rendez-vous dans le dossier " | ||
| - | |||
| - | cd / | ||
| - | |||
| - | Récupérez la configuration de votre noyau actuel, pour ne pas avoir à tout reconfigurer et garder ce qui marche: | ||
| < | < | ||
| - | cp / | + | make xconfig |
| </ | </ | ||
| - | Initialisez votre nouveau jeu d' | + | **Si la commande précédente retourne une erreur du type "qconf: cannot connect to X server", |
| < | < | ||
| - | | + | # |
| + | $sudo xhost + | ||
| + | $su | ||
| + | #cd / | ||
| + | #make xconfig | ||
| </ | </ | ||
| - | Vous pouvez garder toutes les réponses proposées par défaut et juste appuyer sur entrer lorsqu' | ||
| - | Pour créer une configuration en **mode console** : | + | <note tip>Ne saisissez pas les **#** et **$** qui sont là à titre d' |
| - | < | + | ==== Interface de configuration en Mode console ==== |
| - | make config ## Déconseillé pour les débutants et même les autres | + | |
| - | </ | + | |
| - | Pour créer une configuration en **mode semi-graphique (menu bleu)** : | + | Déconseillé pour les débutants tout comme les autres. |
| < | < | ||
| - | | + | make config |
| </ | </ | ||
| - | Pour créer une configuration en **TK** ou en **QT** : | + | ==== Interface de configuration en Mode semi-graphique (menu bleu) ==== |
| < | < | ||
| - | | + | make menuconfig |
| </ | </ | ||
| - | **Si la commande précédente retourne une erreur du type " | + | |
| - | < | + | ==== Interface de configuration en GTK+ (interface GNOME -elle n'est pas bien finie...) |
| - | #exit | + | |
| - | $sudo xhost + | + | |
| - | $su | + | |
| - | #cd / | + | |
| - | #make xconfig | + | |
| - | </ | + | |
| - | Pour créer une configuration en GTK+ (interface GNOME -elle n'est pas bien finie...) | + | |
| < | < | ||
| - | | + | make gconfig |
| </ | </ | ||
| - | **Si vous n'avez rien à configurer, cliquez simplement sur enregistrer | + | ---- |
| - | Si vous avez envie de configurer au mieux votre noyau, aidez-vous de la page [[:tutoriel: | + | |
| + | **Si vous n'avez rien à configurer, cliquez simplement sur // | ||
| + | |||
| + | |||
| + | <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 300: | Ligne 279: | ||
| --added-modules=alsa-driver, | --added-modules=alsa-driver, | ||
| </ | </ | ||
| - | |||
| - | === --append-to-version & --revision === | ||
| - | |||
| - | **FACULTATIF** | ||
| - | |||
| - | Pour ajouter une version à votre noyau (voir [[: | ||
| - | |||
| - | |||
| Ligne 314: | 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 341: | 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 346: | 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 :-) | ||
| + | ===== Gestion des bugs ===== | ||
| + | En cas de découverte d'un bug il faut commencer par une bissection.\\ | ||
| + | Voir : [[: | ||
| ===== Liens ===== | ===== Liens ===== | ||
| - | HOW-TO : Utiliser le linux-restricted-module pour un noyau compilé | + | * [[https:// |
| - | + | * [[http://www.andesi.org/index.php?node=77|Un bon guide pour Debian | |
| - | http://ubuntuforums.org/showthread.php?t=441013 | + | * [[http://forum.ubuntu-fr.org/viewtopic.php?pid=1108685# |
| - | + | ||
| - | Un bon guide pour Debian | + | |
| - | + | ||
| - | http://www.andesi.org/index.php?node=77 | + | |
| - | + | ||
| - | Un guide pour installer la carte wifi **Intel PRO/ | + | |
| - | http:// | ||
| ----- | ----- | ||
| - | // | + | // |
