logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

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édentes Révision précédente
Prochaine révision
Révision précédente
doc:systeme:kernel:compiler [20/04/2018 20:23]
naguam [4 C'est parti pour la compilation! La fameuse! (toujours en user et oui!)]
doc:systeme:kernel:compiler [01/10/2023 11:30] (Version actuelle)
captnfab
Ligne 2: Ligne 2:
  
   * Objet : Compiler d'une source externe.   * Objet : Compiler d'une source externe.
-  * Niveau requis : {{tag>​Tout-niveau}} 
   * Commentaires : // Tout est dans le titre :-) //   * Commentaires : // Tout est dans le titre :-) //
   * Créé, Rédigé et Testé par [[user>​naguam]]   * Créé, Rédigé et Testé par [[user>​naguam]]
   * Discussion liée à ce tutoriel : [[https://​debian-facile.org/​viewtopic.php?​id=16415 | Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs ! Tant qu'​elles sont correctement justifiées (raisons valables) | Vous pouvez aussi y poser des questions! ))    * Discussion liée à ce tutoriel : [[https://​debian-facile.org/​viewtopic.php?​id=16415 | Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs ! Tant qu'​elles sont correctement justifiées (raisons valables) | Vous pouvez aussi y poser des questions! )) 
 +  * Niveau requis : Tout niveau
 ===== 1 Notes avant de commencer ===== ===== 1 Notes avant de commencer =====
  
Ligne 31: Ligne 30:
 Il nous faudra donc installer des dépendances nécessaires à la compilation (en root) Il nous faudra donc installer des dépendances nécessaires à la compilation (en root)
  
-<code root>apt install build-essential fakeroot dpkg-dev libssl-dev bc gnupg dirmngr ​libncurses5-dev libelf-dev</​code>​+<code root>apt install build-essential fakeroot dpkg-dev ​perl libssl-dev bc gnupg dirmngr ​libncurses-dev libelf-dev ​flex bison lsb-release rsync dwarves</​code>​
  
-[[https://​www.phoronix.com/​scan.php?​page=news_item&​px=Linux-Now-Needs-Flex-Bison|Dépendances futures pour le 4.16]] à cause d'une modification du [[http://​www.tuxmachines.org/​node/​108705|kconfig pour la gestion]] ​du kernel dans un paquet pour snappy..Vive canonical (ironie :-/)+''​dwarves''​ est nécessaire avec la configuration debian à partir de debian bullseye, et uniquement si vous laissez la partie debug activée dans la suite du tutoriel.
  
-À installer seulement si vous voulez compiler le 4.16 dans le futur quand il sortira ​en rc etc +Si vous avez les dépôts src dans votre sources.list et que, n'​avoir que le minimum de dépendances ne vous importe pas, vous pouvez également faire (en root)
  
-<code root>​apt ​install flex bison</​code> ​+<code root>​apt ​build-dep linux</​code>​ 
 + 
 +Cela installera les dépendances exactes du kernel packagé dans debian; dépendances choisies et utilisées par les mainteneurs. 
 + 
 +Normalement ça s'​accorde assez bien avec une configuration faite avec ''​make olddefconfig'',​ que nous verrons plus tard dans le tutoriel.
  
 ==== 2.2 Répertoire de compilation ==== ==== 2.2 Répertoire de compilation ====
Ligne 47: Ligne 50:
 ==== 2.3 Les sources ==== ==== 2.3 Les sources ====
  
-Bien sûr, il nous faut télécharger les sources du kernel et la signature pour vérification de l'​intégrité du kernel.\\+Bien sûr, il nous faut télécharger ​
 + 
 +  * les sources du kernel ​//(lien "​tarball"​ sur kernel.org)// ​et  
 +  * la signature pour vérification de l'​intégrité du kernel ​//(lien "​pgp"​ sur kernel.org)// ​. 
 Nous pouvons par exemple, les télécharger chez [[https://​www.kernel.org/​|kernel.org]],​ le site officiel du kernel linux. (conseillé pour les moins expérimentés)\\ Nous pouvons par exemple, les télécharger chez [[https://​www.kernel.org/​|kernel.org]],​ le site officiel du kernel linux. (conseillé pour les moins expérimentés)\\
-Vous devez avoir des fichiers qui ce terminent par ''​.tar.xz''​ (ou''​.tar.gz''​) et ''​.tar.sign''​+Vous devez avoir deux fichiers qui se terminent ​respectivement ​par ''​.tar.xz''​ (ou''​.tar.gz''​) et ''​.tar.sign''​
  
 __**Téléchargez vos sources dans votre répertoire de compilation créé juste avant!**__ __**Téléchargez vos sources dans votre répertoire de compilation créé juste avant!**__
Ligne 64: Ligne 71:
 C'est une étape assez fastidieuse mais importante car si il y a un problème de mauvaise signature **c'​est mauvais signe**, pour les moins expérimentés,​ en cas de problème vous pouvez faire un post sur la page du forum reliée à ce tutoriel (lien en haut de page). C'est une étape assez fastidieuse mais importante car si il y a un problème de mauvaise signature **c'​est mauvais signe**, pour les moins expérimentés,​ en cas de problème vous pouvez faire un post sur la page du forum reliée à ce tutoriel (lien en haut de page).
  
-Si vous avez utilisé les sources ​de kernel.org (voir la sous-étape précédente),​ vous n'avez qu'a copier-coller et lire une ou deux choses de retours :-)\\ +Cette procédure est bien expliquée sur le site officiel du noyau linux donc je conseille ​de la suivre en adaptant ​les commandes avec votre version ​du noyau.
-Si vous n'avez pas utilisé ​les sources ​du kernel.org, voir l'​encadré /!\ précédent.+
  
-Donc là nous allons commencer la vérification (en user)+[[https://​www.kernel.org/​signature.html | Lien explicatif ]]
  
-<code user>xz -cd linux-$kversion.tar.xz | gpg --verify linux-$kversion.tar.sign -</​code>​ +Vous pouvez utiliser un outil de traduction pour le lire en français ​si l'anglais est compliqué pour vous.\\ 
- +Pour plus d'aiden'hésitez pas à demander sur la page du forum reliée ​à ce tutoriel ​(lien en haut de page).
-Attention à ne pas oublier ​le ''​**-**''​ à la fin +
- +
-Cela devrait vous retourner quelque chose ressemblant à cet **exemple** (même ​si la ''RSA key''​ sera différente selon vos sources) : +
- +
-<​code>​gpg:​ Signature made mer. 03 mai 2017 17:38:11 CEST +
-gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E +
-gpg: Can't check signature: Pas de clef publique</​code>​ +
- +
-Là nous pouvons voir que vous n'avez pas de clef publique et qu'il ne peut pas checker la signature.\\ +
-Nous allons donc la chercher :-) +
- +
-**La commande qui va suivre est un exemple**nous devons retaper la ''**RSA key**''​ trouvée par la première commande ​à la place ce celle de l'​exemple ​(encore et toujours ​en user). +
- +
-<code user>gpg --keyserver hkp://​keys.gnupg.net --recv-keys 647F28654894E3BD457199BE38DBBDC86092693E</​code>​ +
- +
-Retour toujours ​de **l'​exemple**,​ vous devriez avoir un retour similaire. +
- +
-<​code>​gpg:​ Signature made mer. 03 mai 2017 17:38:11 CEST +
-gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E +
-gpg: Good signature from "Greg Kroah-Hartman (Linux kernel stable release signing keygreg@kroah.com"​ [unknown] +
-gpg: WARNING: This key is not certified with a trusted signature! +
-gpg: There is no indication that the signature belongs to the owner. +
-Primary key fingerprint:​ 647F 2865 4894 E3BD 4571 99BE 38DB BDC8 6092 693E</​code>​ +
- +
-Maintenant dans ce retour et normalement dans le votre, vous devriez voir ''​**Good signature from....**''​ \\ +
-Cela montre que votre signature est vérifiée. Vous pouvez passer à l'​étape suivante. +
- +
-Dans le cas où vous n'avez pas ''​Good signature from...'',​ il faut tout arrêter et contacter le créateur de vos sources et télécharger d'​autres sources. +
- +
-Par contre nous pouvons ignorer le ''​WARNING''​.+
  
 ===== 3 Décompression et préparation des sources pour la compilation du kernel! ===== ===== 3 Décompression et préparation des sources pour la compilation du kernel! =====
Ligne 110: Ligne 86:
 <code user>tar -xaf linux-$kversion.tar.xz && cd linux-$kversion</​code>​ <code user>tar -xaf linux-$kversion.tar.xz && cd linux-$kversion</​code>​
  
-<note important>​N'​oubliez pas ce que nous avons déjà ​dis avant en 2.3 pour l'​histoire du ''​**kversion**''​ !</​note>​+<note important>​N'​oubliez pas ce que nous avons déjà ​dit avant en 2.3 pour l'​histoire du ''​**kversion**''​ !</​note>​
  
 ==== 3.2 Configuration et préparation des sources ==== ==== 3.2 Configuration et préparation des sources ====
Ligne 128: Ligne 104:
 Pour plus d'​infos sur les options de configuration,​ les informations seront en bas de page. Pour plus d'​infos sur les options de configuration,​ les informations seront en bas de page.
  
-**Ensuite nous devons désactiver les clef du kernel car sinon nous aurons droit à une belle erreur de compilation**+**Ensuite nous devons désactiver les clefs du kernel car sinon nous aurons droit à une belle erreur de compilation** 
 + 
 +En effet le kernel debian est signé avec les clefs debian. Reprendre leur configuration c'est tenter de réutiliser leurs clefs, sauf que comme c'est pas le même kernel avec les même sources, ça va poser problème. 
 + 
 +Nous voulons donc générer de nouvelles clefs. La commande suivante permet donc de désactiver les actuelles, et au début de la compilation,​ deux validations (entrée pour une valeur par default) vous seront demandé et les nouvelles clef générées.
  
 <code user>​./​scripts/​config -d CONFIG_MODULE_SIG_ALL -d CONFIG_MODULE_SIG_KEY -d CONFIG_SYSTEM_TRUSTED_KEYS</​code>​ <code user>​./​scripts/​config -d CONFIG_MODULE_SIG_ALL -d CONFIG_MODULE_SIG_KEY -d CONFIG_SYSTEM_TRUSTED_KEYS</​code>​
Ligne 146: Ligne 126:
  
 <note important>​Il est fort possible que vous ayez des réponses à donner au moment de la compilation,​ tapez ''​**entrée**''</​note>​ <note important>​Il est fort possible que vous ayez des réponses à donner au moment de la compilation,​ tapez ''​**entrée**''</​note>​
-<note warning>À partir du 4.17-rc1, **fakeroot se fait automatiquement!** donc **tapez la commande sans fakeroot** Sinon vous allez avoir **une erreur**</​note>​+<note warning>Maintenant, **fakeroot ​doit être installé mais se fait automatiquement** ​(testé 4.16 et 4.17-rc1) ​donc si en compilant ​**une version ancienne**vous avez une erreur, ajoutez fakeroot avant la commande de compilation</​note>​
  
 ==== 4.1 Pour la compilation bourin (indiquée soulignée et gras dans la partie précédente) ==== ==== 4.1 Pour la compilation bourin (indiquée soulignée et gras dans la partie précédente) ====
Ligne 152: Ligne 132:
 Nous pouvons donc nous mettre à compiler : Nous pouvons donc nous mettre à compiler :
  
-<code user>fakeroot ​make deb-pkg -j"​$(nproc)"​ LOCALVERSION=-"​$(dpkg --print-architecture)"​ KDEB_PKGVERSION="​$(make kernelversion)-1"</​code>​+<code user>​make deb-pkg -j"​$(nproc)"​ LOCALVERSION=-"​$(dpkg --print-architecture)"​ KDEB_PKGVERSION="​$(make kernelversion)-1"</​code>​
  
 <​note>//​Maintenant,​ suivant la puissance de votre processeur, cela va prendre un peu de temps (10 min si vous avez un processeur très puissant genre intel core i7 overclocké ou amd ryzen, et une semaine pour un pIImmx, en tout cas dans la plupart des cas des machines actuelles, c'est environ entre 1 et 4h de compilation). <​note>//​Maintenant,​ suivant la puissance de votre processeur, cela va prendre un peu de temps (10 min si vous avez un processeur très puissant genre intel core i7 overclocké ou amd ryzen, et une semaine pour un pIImmx, en tout cas dans la plupart des cas des machines actuelles, c'est environ entre 1 et 4h de compilation).
Ligne 162: Ligne 142:
 ==== 4.2 Toujours plus d'​optimisation de temps en ne créant que les paquets nécessaires ==== ==== 4.2 Toujours plus d'​optimisation de temps en ne créant que les paquets nécessaires ====
  
-Nous allons créer les paquets avec ''​bindeb-pkg'',​ cela ne créer que les binaires les plus utiles (certains indispensables) si vous voulez les nouvelles sources reconstruites,​ il vous faut faire __**étape 4.1**__+Nous allons créer les paquets avec ''​bindeb-pkg'',​ cela ne va créer que les binaires les plus utiles (certains indispensables) si vous voulez les nouvelles sources reconstruites,​ il vous faut faire __**l'étape 4.1**__
  
 Nous pouvons nous mettre à compiler Nous pouvons nous mettre à compiler
  
-<code user>fakeroot ​make bindeb-pkg -j"​$(nproc)"​ LOCALVERSION=-"​$(dpkg --print-architecture)"​ KDEB_PKGVERSION="​$(make kernelversion)-1"</​code>​+<code user>​make bindeb-pkg -j"​$(nproc)"​ LOCALVERSION=-"​$(dpkg --print-architecture)"​ KDEB_PKGVERSION="​$(make kernelversion)-1"</​code>​
  
 <​note>//​Maintenant,​ suivant la puissance de votre processeur, cela va prendre un peu de temps (10 min si vous avez un processeur très puissant genre intel core i7 overclocké ou amd ryzen, et une semaine pour un pIImmx, en tout cas dans la plupart des cas des machines actuelles, c'est environ entre 1 et 4h de compilation). <​note>//​Maintenant,​ suivant la puissance de votre processeur, cela va prendre un peu de temps (10 min si vous avez un processeur très puissant genre intel core i7 overclocké ou amd ryzen, et une semaine pour un pIImmx, en tout cas dans la plupart des cas des machines actuelles, c'est environ entre 1 et 4h de compilation).
Ligne 188: Ligne 168:
 <code user>cd ..</​code>​ <code user>cd ..</​code>​
  
-Ensuite, pour installer le kernel, nous devons au minimum installer l'​image et les headers **mais je conseille d'​installer ​tout les .deb créés si vous ne manquez pas d'​espace de stockage.** (commandes suivantes faites en root)+Ensuite, pour installer le kernel, nous devons au minimum installer l'​image et les headers **mais je conseille d'​installer ​tous les .deb créés si vous ne manquez pas d'​espace de stockage.** (commandes suivantes faites en root)
  
 <code root>​dpkg -i *.deb</​code>​ <code root>​dpkg -i *.deb</​code>​
  
-Pour Désinstaller:+Pour désinstaller:
  
 <code root>​dpkg -P *.deb</​code>​ <code root>​dpkg -P *.deb</​code>​
Ligne 200: Ligne 180:
 __Vous pouvez aussi désinstaller avec apt.__ __Vous pouvez aussi désinstaller avec apt.__
  
-<note warning>​Moi,​ sur la plupart des machines sur lesquelles j'ai appliqué le tutoriel, j'​avais ensuite un message au boot de ''​pcspkr is already registered''​. Du coup, j'ai dû le blacklister : <code root>​echo "​blacklist pcspkr"​ > /​etc/​modprobe.d/​blacklist-pcspkr.conf</​code>​ (de plus pcspkr est un module kernel qui sert seulement au beeps systeme ​en tty par exemple quand on fait retour trop loin pour supprimer du texte)</​note>​+<note warning>​Moi,​ sur la plupart des machines sur lesquelles j'ai appliqué le tutoriel, j'​avais ensuite un message au boot de ''​pcspkr is already registered''​. Du coup, j'ai dû le blacklister : <code root>​echo "​blacklist pcspkr"​ > /​etc/​modprobe.d/​blacklist-pcspkr.conf</​code>​ (de plus pcspkr est un module kernel qui sert seulement au beep système ​en tty par exemple quand on fait retour trop loin pour supprimer du texte)</​note>​
  
 ==== Avertissement ==== ==== Avertissement ====
Ligne 219: Ligne 199:
  
 Il faut que je teste un peu plus, mais généralement,​ il ne reste que 2 noyaux installés. \\ Il faut que je teste un peu plus, mais généralement,​ il ne reste que 2 noyaux installés. \\
-N'​installez jamais plusieurs ​version ​de noyaux ​sans vérifier que l'​avant-dernier fonctionne, sinon...+N'​installez jamais plusieurs ​versions ​de noyau sans vérifier que l'​avant-dernier fonctionne, sinon...
   * désinstallez un noyau qui ne convient pas auparavant   * désinstallez un noyau qui ne convient pas auparavant
   * ou an//nul//ez ce script   * ou an//nul//ez ce script
Ligne 228: Ligne 208:
 **Bravo! vous avez une machine avec le kernel de votre choix!** **Bravo! vous avez une machine avec le kernel de votre choix!**
  
-**voir aussi+**À voir aussi
 [[https://​debian-handbook.info/​browse/​fr-FR/​stable/​sect.kernel-compilation.html|ce lien en section 8.10.4]], [[https://​debian-handbook.info/​browse/​fr-FR/​stable/​sect.kernel-compilation.html|ce lien en section 8.10.4]],
 Toute la page est intéressante pour tous les Fous-faciles! :-)\\ Toute la page est intéressante pour tous les Fous-faciles! :-)\\
- +[[https://​www.kernel.org/​doc/​html/​latest/​index.html|La doc officielle de kernel.org]]\\ 
-D'​autres liens cool\\ +[[https://www.kernel.org/doc/html/latest/process/​changes.html#​current-minimal-requirements|En particulier,​ les dépendances minimums ​pour ceux qui tenteraient sur n'importe quelle distribution]]\\ 
- ​[[https://​github.com/kyodev/kyodeb/wiki/kernel.org-CompilationDebian|intéressant ​pour ceux qui veulent un tuto plus complet (page github d'une personne géniale qui a aidé) avec encore d'​autre lien en bas de la page github]] :-) \\ +[[https://www.kernel.org/doc/html/latest/process/​applying-patches.html|Et enfin pour patcher]]\\ 
- ​[[https://​github.com/kyodev/kyodeb/wiki/kernel.org-CompilationDebian-PatchVersion|Pour les gens qui veulent ​patcher ​(toujours de la même personne)]] \\+[[https://​www.debian.org/​doc/​manuals/​debian-kernel-handbook/​|Doc officielle debian]]
 ** **
  
  
doc/systeme/kernel/compiler.1524248601.txt.gz · Dernière modification: 20/04/2018 20:23 par naguam

Pied de page des forums

Propulsé par FluxBB