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
Prochaine révision Les deux révisions suivantes
doc:systeme:kernel:compiler [12/05/2017 21:48]
naguam [Introduction | JE REFAIS pour simplifier, donc en cours de modification | Désolé pour la modération mais cette fois c'est la bonne de toute manière c'est à considérer comme une mise à jour]
doc:systeme:kernel:compiler [06/05/2020 13:08]
naguam [Compiler un kernel pour debian]
Ligne 1: Ligne 1:
-====== Compiler un kernel ​de kernel.org ​======+====== Compiler un kernel ​pour debian ​======
  
   * Objet : Compiler d'une source externe.   * Objet : Compiler d'une source externe.
-  ​* Niveau requis : {{tag>​avisés}} +  * Commentaires : // Tout est dans le titre :-) // 
-  ​* Commentaires : //Compiler un kernel d'une source externe aux dépôts Debian (ici celui de [[https://​www.kernel.org/​|kernel.org]]) //  +  * CrééRédigé et Testé par [[user>​naguam]] 
-  * Débutantà savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) +  * 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! ​))  
-  * Suivi : {{tag>​placé à-tester}}  +  * Niveau requis : {{tag>​Tout-niveau}} 
-    * Création par [[user>​naguam]] 03/​01/​2017 +===== 1 Notes avant de commencer =====
-    * Écrit très grande partie par [[user>​naguam]]  +
-    * Testé par [[user>​naguam]] ​le 08/05/2017 +
-  * 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 !)) +
  
-Voir aussi le tuto : +  ​Ce tutoriel est destiné à toute personne, qui si elle le veut, devrait pouvoir presque tout faire au copier-collé excepté certaines choses comme ''​le passage en root''​ ou ''​le repassage en user''​ que nous considérons comme acquis, ou encore réfléchir ​un petit peu à la partie sécurité\\
-  ​[[doc:​systeme:​noyau:​compiler | compiler ​un noyau]]+
  
-===== Introduction | JE REFAIS pour simplifierdonc en cours de modification | Désolé pour la modération mais cette fois c'est la bonne de toute manière c'est à considérer comme une mise à jour (que je fais sur un txt et que je poste après)=====+  * Les plus expérimentés ou ceux qui veulent aller plus lointrouveront ​en bas de la page des liens pour une exploitation plus poussée de la technique ​(par exemple pour patcher.).
  
-Compiler un kernel (plus réçent) est utile pour plusieurs choses : +  * Dans ce tutoriell'​explication sera faite d'une manière ''​Nous allons faire etc''​ et ''​vous'',​ comme si c'​était une personne réelle qui vous assistait pour que vous enregistriez au mieux les informations basiques qui seront expliquées au plus simple ​pour que vous n'ayez ensuite plus besoin du tutoriel pour le faire.
-  - Pour les maniaquesjuste avoir le kernel le plus réçent ! 8-o +
-  - Bénéficier des nouvelles fonctionnalités offertes par celui-ci. +
-  - Avoir une meilleure reconnaissance matérielle. +
-  - Pouvoir peaufiner ​les options de compilations ​pour ses besoins+
  
-//Il y a sûrement d'​autres raisons de le faire mais ce sont celles que j'ai retenues.// :-)+  * Nous allons aborder la partie sécurité au plus simple, ​mais elle mérite une attention certaine.
  
 +  * Si vous êtes sur ce tutoriel, c'est que vous voulez compiler un kernel : nous n'​allons pas répéter les raisons de le faire, mais sachez que ce tutoriel est à appliquer à vos risques et périls ! Votre responsabilité.
  
-Testé sous stretch, future Debian Stable ​:+  * Lisez le tutoriel **dans sa totalité** et respectez bien les ''​codes en **user** ou **root**''​ car il est préférable d'​utiliser le root le moins possible ​normalement le root n'est nécessaire que pour l'​installation des dépendances et l'​installation du kernel à la fin. 
 +  
 +  * **ATTENTION LE FORMAT DES SOURCES COMPRESSÉES PEUVENT CHANGER SUR LES SITES DE TÉLÉCHARGEMENT,​** si c'est le cas changez les ''​.xz''​ par ''​.gz''​ ou autres extentions, et si ce ne sont pas des archives TAR, tapez les commandes de décompression adaptées au format.
  
-**Je rappelle pour les personnes non-habituées et les habitués tête en l'air, qu'il faut bien tout lire.**+===== 2 C'est parti! Prérequis! =====
  
 +==== 2.1 Les Dépendances ====
  
-<note importante>​Nous n'​avons pas besoin ​d'être en root, sauf pour installer ​les paquets apt au début et le kernel à la fin !</​note>​+Alors déjà, soyez sûr avant de commencer que vous avez suffisamment ​d'espace libre pour les dépendances mais aussi pour la compilation qui créera des paquets (10GB ou plus conseillés).
  
 +Il nous faudra donc installer des dépendances nécessaires à la compilation (en root)
  
-===== Étape 1 Prérequis et Dépendances =====+<code root>apt install build-essential fakeroot dpkg-dev perl libssl-dev bc gnupg dirmngr libncurses5-dev libelf-dev flex bison lsb-release rsync</​code>​
  
-Prévoir un peu de stockage (10GB pour prévoir large) car il y aura une création ​des paquets ​du kernel :-)+[[https://​www.phoronix.com/​scan.php?​page=news_item&​px=Linux-Now-Needs-Flex-Bison|Flex et Bison sont des dépendances nécessaires à partir du 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 ​:-/)
  
-Installer les paquets : +==== 2.2 Répertoire de compilation ====
-<code root>apt install build-essential fakeroot libncurses5-dev dpkg-dev libssl-dev bc gnupg dirmngr</​code>​+
  
-C'est-à-dire : +Nous allons créer un répertoire de compilation,​ c'​est ​très fortement conseillépuis nous allons aller dedans (en user!!)
-   - le compilateur et ses utilitaires principauxce qui va nous permettre de compiler ​en user +
-   - et un utilitaire de configuration du kernel +
-   - gpg pour contôler la signature des sources +
-    +
-Ce qui //​normalement//​ : +
-      - permettra la contruction des packages, +
-      - permettra de configurer votre kernel par rapport à votre machine.+
  
-Pour avoir un menu graphique de configuration des options: \\ +<code user>mkdir ~/compilation && cd ~/compilation</​code>​
-   * Pour les DE basés sur **qt**: +
-<code root>apt install libqt4-dev</​code>​ +
-quand nous seront à l'​**étape 5** nous pourrons faire: +
-<code user>make xconfig</code> +
-   * Pour les DE basés sur **gtk**: +
-<code root>apt install libgtk2.0-dev libglade2-dev<​/code> +
-quand nous seront à l'​**étape 5** nous pourrons faire: +
-<code user>​make gconfig</​code>​+
  
-===== Étape ​Création répertoire de compilation =====+==== 2.3 Les sources ​====
  
-<​note>​Les X remplacent des chiffres<​/note>+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.\\ 
 +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''​
  
-On va télécharger ​dans son dossier personnel, ​ dans un sous-dossier //kernel//.+__**Téléchargez vos sources ​dans votre répertoire de compilation créé juste avant!**__
  
-On [[doc:​systeme:​mkdir|crée le dossier]] : +Par simplicité dans les commandes suivantes, nous allons taper une petite commande dans un terminal (cette fois en user)\\ 
-<code user>​mkdir ~/kernel</​code>​ +**Attention! les X sont à remplacer par la version du kernel ​que vous avez téléchargé sur ''​kernel.org''​**\\ 
-On [[doc:​systeme:​tar|se déplace dedans]] : +<note importante>**Si vous utilisez d'​autres sources que le kernel ​de kernel.org, vous devez passer cette étape**, mais dans des commandes futures, **vous devrez remplacer** ''​linux-$kversion.tar.xz'',​ ''​linux-$kversion.tar.sign''​ et ''​linux-$kversion''​ par les équivalent que vous avez téléchargés auparavant.</note>
-<code user>cd ~/kernel</code>+
  
-===== Étape 3 Téléchargement et vérification de l'​intégrité du kernel ===== +<code user>kversion=X.X.X</code>
-  +
-Il faut télécharger le kernel (source et signature) depuis ce lien : +
-  * [[https://​www.kernel.org/​|kernel.org]]  +
-<note important>**Les commandes du cadre suivant sont à copier coller ligne par ligne en modifiant juste la version (pour une version voulue) du kernel à télécharger. Cette automatisation a été conçue pour les kernels de kernel.org.** Si vous compilez à partir d'​autres sources, il vous faudra comprendre le fonctionnement **gpg** et l'​automatisation (au copier collé par lignes) ne seras pas fonctionnelle.</note>+
  
-Pour automatiser un peu, voici un exemple avec le kernel 4.10.14 (à changer par la version du kernel que vous voulez): +==== 2.4 Vérification de l'​intégrité ​du kernel /!\ Important pour la sécurité! ====
-<code user>​kversion=4.10.14 # la version ​du kernel ​à changer +
-wget https://​www.kernel.org/​pub/​linux/​kernel/​v${kversion:​0:​1}.x/​linux-$kversion.tar.xz ​   # les sources du kernel +
-wget https://​www.kernel.org/​pub/​linux/​kernel/​v${kversion:​0:​1}.x/​linux-$kversion.tar.sign ​   # la signature des sources</​code>​ +
-Voilà, les prochaines fois, vous n'​aurez plus qu'à changer la variable ''​ kversion '',​ les autres commandes ne changeront pas.+
  
-Ensuite vérification (à partir de l'exemple précédant), à reproduire ​en fonction ​de votre kernel:+Maintenant nous allons passer ​à la vérification des sources, pour prouver ​l'intégrité des fichiers.\\ 
 +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 ​:-)\\ 
 +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)
  
 <code user>xz -cd linux-$kversion.tar.xz | gpg --verify linux-$kversion.tar.sign -</​code>​ <code user>xz -cd linux-$kversion.tar.xz | gpg --verify linux-$kversion.tar.sign -</​code>​
 +
 +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 <​code>​gpg:​ Signature made mer. 03 mai 2017 17:38:11 CEST
 gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
 gpg: Can't check signature: Pas de clef publique</​code>​ gpg: Can't check signature: Pas de clef publique</​code>​
-on extrait ​la clé, **signature inconnue**, on va la chercher:+ 
 +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>​ <code user>gpg --keyserver hkp://​keys.gnupg.net --recv-keys 647F28654894E3BD457199BE38DBBDC86092693E</​code>​
-<​code>​gpg:​ key 38DBBDC86092693E:​ public key "Greg Kroah-Hartman (Linux kernel stable release signing key) greg@kroah.com" imported + 
-gpg: no ultimately trusted keys found +Retour toujours de **l'​exemple**,​ vous devriez avoir un retour similaire
-gpg: Total number processed: 1 +
-gpg: imported: 1</​code>​ +
-on recommence +
-<code user>xz -cd linux-$kversion.tar.xz | gpg --verify linux-$kversion.tar.sign -</​code>​+
 <​code>​gpg:​ Signature made mer. 03 mai 2017 17:38:11 CEST <​code>​gpg:​ Signature made mer. 03 mai 2017 17:38:11 CEST
 gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
Ligne 102: Ligne 89:
 gpg: There is no indication that the signature belongs to the owner. 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>​ Primary key fingerprint:​ 647F 2865 4894 E3BD 4571 99BE 38DB BDC8 6092 693E</​code>​
-Voilà, super la signature est ok :\\ 
-''​Good signature from "Greg Kroah-Hartman...''​\\ 
-Même si la clé n'est pas signée avec une signature de confiance.\\ 
  
-En cas de **"​BAD ​signature"**, vérifier: +Maintenant dans ce retour et normalement dans le votre, vous devriez voir ''​**Good signature ​from....**''​ \\ 
- * la procédure +Cela montre que votre signature est vérifiée. Vous pouvez passer à l'​étape suivante.
- * le chargement +
- * contacter ftpadmin@kernel.org immédiatement pour investigation+
  
-''​WARNING: This key is not certified with a trusted ​signature''​\\ +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.
-On va s'​arrêter là dans la vérificationà moins de vouloir vérifier en contactant des signataires de cette clé. \\ +
-Voir les signataires:​ +
-<code user>gpg --list-sigs ABAF11C65A2970B130ABE3C479BE3E4300411886</​code>​ +
-===== Étape 4 Décompression ===== +
-  +
-On [[doc:​systeme:​tar|décompresse ​le kernel téléchargé]] avec cette commande : +
-<code user>tar -xaf linux-$kversion.tar.xz</​code>​+
  
-On se **déplace dans le nouveau dossier** créé par la décompression +Par contre nous pouvons ignorer ​le ''​WARNING''​.
-<code user>cd linux-$kversion</​code>​+
  
-===== Étape 5 Configuration ​des options ​du noyau =====+===== 3 Décompression et préparation ​des sources pour la compilation ​du kernel! ​=====
  
-Maintenant, dans cette étape, on va s'​occuper de la configuration du kernel :+==== 3.1 Décompression ====
  
-==== 5.1 Options actuelles ====+Nous avons fini les prérequis, nous allons maintenant préparer nos sources pour la compilation. Nous allons commencer par [[doc:​systeme:​tar|décompresser]] nos sources (en user) puis nous allons aller dans nos sources décompressées pour l'​étape suivante.
  
-Il est conseillé de restaurer la configuration actuelle, pour ce faire, on peut faire au choix les commandes de type **make oldconfig** suivantes :+<code user>tar -xaf linux-$kversion.tar.xz && cd linux-$kversion</​code>​
  
-  ​* **Avec les kernel récents**, sûrement au-dessus de la v4.x, il va chercher automatiquement le .config dans /​boot/​config-''​votreKernelActuellementActifOuPrecedant''​ et crée le .config. +<note important>​N'​oubliez pas ce que nous avons déjà dis avant en 2.3 pour l'​histoire du ''​**kversion**'' ​!</note>
-   +
- <​note>​Pour les kernels plus anciens, il faudra peut-être copier la configuration de votre kernel actuel sous forme de .config+
  
-<code user>cp /​boot/​config-votreKernelActuellementActifOuPrecedant ​.config</​code></​note>​+==== 3.2 Configuration et préparation des sources ====
  
-Puis faire une des trois commandes suivantes **au choix** : +Maintenant, nous allons configurer notre kernel avec nos options voulues ​(ici comme presque toujours, ​les commandes ​seront ​appliquées en user).
-<code user>​make olddefconfig</​code>​ +
-   * Cette commande s'​exécutera en choisissant les valeurs par defaut en une fois\\ ​(les lignes de validations par ''​Y''​ ou ''​N'' ​seront ​cachées).  +
-Ou : +
-<code user>​make oldnoconfig</​code>​ +
-   * Cette comande répond ''​N''​ à tout les nouveaux arguments, c'est utile surtout si vous avez un serveur parfaitement stable et que vous voulez mettre un kernel LTS ''​Long Term Support''​ à la place d'un kernel en fin de support.+
  
-Ou encore : +Pour les moins expérimentés ​ou ceux qui n'ont pas envie de se casser la tête vous pouvez faire la commande suivante :
-<code user>​make oldconfig</​code>​ +
-   * Cette commande vous demandera de valider ​les nouvelles options (ajoutées dans le nouveau kernel) par ''​Y'' ​ou par ''​N'' ​ ou|et d'​autres options encore. +
-<note tip>​Si ​vous avez un doute, appuyez sur la touche ''​entrée''​.</​note>​+
  
-=== Annexe optionnelle ===+<code user>​make olddefconfig</​code>​
  
-Pour les plus avisés et/ou les bidouilleurs-fous,​ vous pouvez gratter à la main dans la configuration ​du kernel par cette interface //​semi-graphique//​ de configuration : +Cette commande va chercher ​la configuration ​de votre kernel ​actuel et met toutes les nouvelles options en "par default"​.
-   * ''​ make menuconfig''​ en console ncurse+
  
-Vous pouvez aussi utilisez une interface graphique ​plus confortable pour naviguer dans toutes ces optionsselon le DE : +Pour les plus expérimentés, ou les personnes bidouilleuse,​ ou même encore les personnes qui ont besoin d'options activées ​en particulier,​ vous pouvez faire cette commande :
-   * ''​make gconfig''​ en graphique pour interfaces ​ou DE basés sur gtk. +
-   * ''​make xconfig'​' en graphique pour interfaces ou DE basés sur qt.+
  
-Vous passerez un agéable moment à parcourir la documentation des sources pour découvrir les options possibles ou les matériels qu'il est possible de prendre en compte en rajoutant des options. +<code user>​make menuconfig<​/code>
-  * consulter ''​~/kernel/​linux-4.X.X/​README''​ +
-  * l'​index de la documentation du kernel se trouve dans ''​~/​kernel/​linux-4.x/​Documentation/​00-INDEX'',​ à lire pour aller plus loin +
-Remarque: à partir du noyau 4.10, la doc intéressante est déplacée, mais c'est indiqué dans le ''​README''​+
  
-==== 5.2 Désactiver ​les clés du kernel ====+Pour plus d'​infos sur les options de configuration,​ les informations seront en bas de page.
  
-Obligatoire pour éviter ​erreur de compilation ​et éventuellement utiliser ses clés propres +**Ensuite nous devons désactiver les clef du kernel car sinon nous aurons droit à une belle erreur de compilation**
-En savoir plus: https://​lists.debian.org/​debian-kernel/​2016/​04/​msg00579.html+
  
 <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>​
  
-==== 5.3 Ne pas compiler ​de debug ====+Maintenant __**si vous êtes bourrin et que vous voulez tout créer passez en étape 4.1**__, sinon pour optimiser le temps de compilation continuez de lire :) 
 + 
 +**Nous allons enlever le paquet ​debug ''​**dbg**''​ car il ne sert en général qu'aux développeurs,​ cela nous permettra de compiler en moins de temps** 
 + 
 +Pour ce faire nous allons faire la commande suivante :
  
-Ne pas compiler le fichier de symboles dbg : 
 <code user>​./​scripts/​config -d CONFIG_DEBUG_INFO</​code>​ <code user>​./​scripts/​config -d CONFIG_DEBUG_INFO</​code>​
-ce n'est pas obligatoire,​ mais permet un gain de 38%. 
  
 +Voilà, nous pouvons maintenant passer à la fameuse compilation. D'​autres options pour optimiser le temps de compilation seront indiquées.\\
 +Vous pouvez passer en 4.2. Nous avons commencé à optimiser le temps, nous allons continuer :-)
  
-===== Étape 6 Compilation ​=====+===== 4 C'est parti pour la compilation! La fameuse! (toujours en user et oui!) =====
  
-Nous allons maintenant pouvoir nous mettre à compiler ! \\ +<note important>​Il est fort possible ​que vous ayez des réponses à donner au moment de la compilation,​ tapez ''​**entrée**''</​note>​ 
-Selon la manière ​que je vais vous présenter : +<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>​
-  ​il créera les packages ​ +
- +
  
-<code user>​fakeroot make deb-pkg -j$(nproc) LOCALVERSION=-nomanecdotique KDEB_PKGVERSION=$(make kernelversion)-1</​code>​ +==== 4.Pour la compilation bourin ​(indiquée soulignée et gras dans la partie précédente) ====
-<code user>​fakeroot make deb-pkg -j$(nprocLOCALVERSION=-$(dpkg --print-architecture) KDEB_PKGVERSION=$(make kernelversion)-1</​code>​+
  
-A cause de l'​**étape 5 2nde sous-partie** il se pourrait que vous le terminal vous demande de valider ou d'​écrire quelque chose, tapez ''​**entrée**'' ​à chaque fois. +Nous pouvons donc nous mettre ​à compiler ​:
-<note important>​ +
-Vous pouvez aussi aussi remplacer ''​deb-pkg''​ par ''​bindeb-pkg''​ cela permettra de ne pas compiler ​   +
-  * linux...debian.tar.gz +
-  * linux...dsc +
-  * linux...orig.tar.gz +
-Cela permet d'​avoir encore de compiler en moins de temps en plus du temps gagné si vous désactivez le **dgb étape 5.3**</​note>​ +
-==== Explications ====+
  
-  * **fakeroot** va nous permettre de compiler sans être en ''​root''​ +<code user>make deb-pkg ​-j"$(nproc)" ​LOCALVERSION=-"$(dpkg --print-architecture)" ​KDEB_PKGVERSION="$(make kernelversion)-1"</​code>​
-  * **make** est l'​outil qui va chercher les instructions dans le ''​Makefile''​ qui va donner les instructions au compilateur. +
-  * ''​**-j$(nproc)**''​ on attribue tous les ''​threads''​ possibles, on peut remplacer ''​**$(nproc)**''​ par le nombre de threads voulu en ne dépaçant pas le nombre maximum de threads maximum de votre processeur \\ +
-   ce n'est pas obligatoire,​ mais cela permet d'​augmenter la vitesse de compilation,​ le processeur travaillant en entier sur tout ses cores avec tout ses threads avec cette option. +
-  * **LOCALVERSION=-$(dpkg --print-architecture)**, optionnel, sert à nommer son kernel, au plus près du nommage Debian \\ +
-    vous pouvez aussi comme dans l'​exemple avec ''​nomanecdotique''​ remplacer ''​nomanecdotique''​ par un nom custom, mais sans lettre(s) majuscule(s) car sinon à la fin, lors de la construction du paquet, cela fera une belle erreur ''​caractère non autorisé = la(les) lettre(s) en majuscule(s)''​. +
-  * **KDEB_PKGVERSION=$(make kernelversion)-1**, optionnel, donne une version aux paquets construits à la fin.+
  
-Maintenant, suivant la puissance de votre processeur, cela va prendre un peu de temps (20 min si vous avez un processeur très puissant genre intel core i7 overclocké et une semaine pour un pIImmx, en tout cas dans la plupart des cas des machines actuelles, c'est environ entre 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 et 4h de compilation). 
-//Vous avez donc le temps de boire un thé ou un café, manger des Chocos-DF et d'​écouter du hard-rock// ​:-O+Vous avez donc le temps de boire un thé ou un café, manger des Chocos-DF et d'​écouter du hard-rock!!//</​note>​
  
-===== Étape 7 Contemplation ​=====+Ensuite, passez à __**l'​étape 4.3**__ si vous voulez des explications simples pour juste certaines parties de la commande\\ 
 +Sinon passez directement à __**l'​étape 5**__ 
 + 
 +==== 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 pouvons nous mettre à compiler 
 + 
 +<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). 
 +Vous avez donc le temps de boire un thé ou un café, manger des Chocos-DF et d'​écouter du hard-rock!!//</​note>​ 
 + 
 +Ensuite, passez à __**l'​étape suivante (4.3)**__ si vous voulez des explications simples pour juste certaines parties de la commande\\ 
 +Sinon passez directement à __**l'​étape 5**__ 
 + 
 +==== 4.3 Explications basiques ==== 
 + 
 +  * ''​**-j"​$(nproc)"​**''​ prend le nombre de threads total de votre processeur (la compilation sera la plus rapide possible), pour les connaisseurs,​ vous pouvez mettre ''​**-jX**''​ en remplaçant X par le nombre de cores que vous voulez allouer dans la limite du nombre de threads maximums, **c'​est optionnel sans cet argument, cela n'​utilisera qu'un seul thread** ​
    
-Maintenant ​ on remonte pour voir les fichier crées :+  * ''​**LOCALVERSION=-"​$(dpkg --print-architecture)"​**''​ cela donne le nom custom de votre architecture,​ vous pouvez aussi mettre un nom custom sans majuscules derrière ''​**LOCALVERSION=-**'',​ c'est **un argument optionnel** 
 + 
 +  * ''​**KDEB_PKGVERSION="​$(make kernelversion)-1"​**''​ cet argument sert à versionner le kernel ''​**1**''​ (soit version 1) **c'​est encore optionnel mais il est conseillé**  
 + 
 +===== 5 Installation ou désinstallation des paquets ===== 
 + 
 +Tout d'​abord nous devons aller dans le répertoire précédent 
 <code user>cd ..</​code>​ <code user>cd ..</​code>​
-Puis, [[doc:​systeme:​superutilisateur|passez en root]] et [[doc:​systeme:​ls|listez le contenu du répertoire]] : 
-<code user>​ls</​code>​ 
-Vous devriez avoir obtenu les fichiers : 
-<​code>​ linux-X.X-X-architecture_X.X-X-1_architecture.changes 
- ​linux-X.X-X-architecture_X.X-X-1.debian.tar.gz 
- ​linux-X.X-X-architecture_X.X-X-1.dsc 
- ​linux-X.X-X-architecture_X.X-X-architecture.orig.tar.gz 
- ​linux-firmware-image-X.X-X-architecture_X.X-X-1_architecture.deb 
- ​linux-headers-X.X-X-architecture_X.X-X-1_architecture.deb 
- ​linux-image-X.X-X-architecture_X.X-X-1_architecture.deb 
- ​linux-libc-dev_X.X-X-1_architecture.deb</​code>​ 
  
-Si vous n'avez pas désactivé la compilation de de dbg : +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)
- ''​linux-image-X.X-X-architecture-dbg_X.X-X-1_architecture.deb''+
  
-Si vous avez utilisé "​bindeb-pkg" à **l'​étape 6** dans la note importante vous pouvez voir à cette étape les trois permiers paquets listé ci-dessus n'​apparaissent pas et c'est normal, c'est pour cela que vous avez utilisés cet argument :-)+<code root>​dpkg ​-*.deb</​code>​
  
-Tout ça sans compter les fichiers qui étaient présents avant.+Pour Désinstaller:​
  
-Les fichiers se terminant par ''​.deb''​ sont les paquets installables directement,​ les autres sont les nouvelles sources, les modifications apportées enregistrées dans le ''​.change''​ et la signature des clefs.+<code root>​dpkg -P *.deb</​code>​
  
-===== Étape 8 Installation et/ou déinstallation du kernel =====+**/!\ À bien être dans le bon répertoire /!\** 
  
-Pour installer le kernel, nous devons au minimum installer l'​image et les headers mais je conseille d'​installer tout les .deb si vous ne manquez pas d'​espace de stockage. +__Vous ​pouvez ​aussi désinstaller avec apt.__
-<code root>​dpkg -i linux-image-X.X-X-architecture_X.X-X-1_architecture.deb linux-headers-X.X-X-architecture_X.X-X-1_architecture.deb</​code>​ +
-(vous pouvez rajouter les autres paquets après ou directement *.deb si vous voulez tout installer)\\  +
-Pour Déinstaller:​ +
-<code root>​dpkg -P linux-image-X.X-X-architecture_X.X-X-1_architecture.deb  +
-dpkg -P linux-headers-X.X-X-architecture_X.X-X-1_architecture.deb</​code>​ +
-(vous pouvez ​rajouter les autres paquets après ou directement *.deb si vous voulez tout déinstaller en faisant attention à bien être dans le bon répertoire)\\+
  
-__Vous pouver aussi déinstaller avec apt.__ +<note warning>​Moisur la plupart des machines ​sur lesquelles j'ai appliqué le tutorielj'​avais ensuite un message au boot de ''​pcspkr is already registered''​. Du coupj'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 macines ​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></​note>​+
  
 ==== Avertissement ==== ==== Avertissement ====
Ligne 259: Ligne 211:
 // # potentially be installed in multiple flavours counting as one kernel.//''​ // # potentially be installed in multiple flavours counting as one kernel.//''​
  
-Ce script n'est peut-être présent que sur Stretch, pas sur Jessie ​(à vérifier)+Ce script n'est peut-être présent que sur Stretch, pas sur Jessie ​FIXME
  
 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 version de noyaux 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
  
-Pas testé, mais logiquement ça pourrait ressembler à ça : 
-<code root>mv /​etc/​kernel/​postinst.d/​apt-auto-removal /​etc/​kernel/​postinst.d/​apt-auto-removal.bak 
-ln -s /dev/null /​etc/​kernel/​postinst.d/​apt-auto-removal</​code>​ 
  
 ===== Conclusion et Sources ===== ===== Conclusion et Sources =====
Ligne 274: Ligne 223:
 **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]]\\ 
 +[[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://​www.kernel.org/​doc/​html/​latest/​process/​applying-patches.html|Et enfin pour patcher]] 
 +** 
 + 
doc/systeme/kernel/compiler.txt · Dernière modification: 01/10/2023 11:30 par captnfab

Pied de page des forums

Propulsé par FluxBB