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 [08/05/2017 21:10]
naguam [Étape 7 Compilation]
doc:systeme:kernel:compiler [12/05/2017 21:44]
naguam
Ligne 8: Ligne 8:
     * Création par [[user>​naguam]] 03/01/2017     * Création par [[user>​naguam]] 03/01/2017
     * Écrit très grande partie par [[user>​naguam]] ​     * Écrit très grande partie par [[user>​naguam]] ​
-    * Testé par [[user>​naguam]] le 02/01/2017+    * 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 !))    * 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 !)) 
  
Ligne 14: Ligne 14:
   * [[doc:​systeme:​noyau:​compiler | compiler un noyau]]   * [[doc:​systeme:​noyau:​compiler | compiler un noyau]]
  
-===== Introduction =====+===== Introduction ​| JE REFAIS 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=====
  
 Compiler un kernel (plus réçent) est utile pour plusieurs choses : Compiler un kernel (plus réçent) est utile pour plusieurs choses :
Ligne 31: Ligne 31:
 <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>​ <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>​
  
-======EN COURS DE MISE À JOUR======+
 ===== Étape 1 Prérequis et Dépendances ===== ===== Étape 1 Prérequis et Dépendances =====
  
Ligne 37: Ligne 37:
  
 Installer les paquets : Installer les paquets :
-<code root>apt install build-essential fakeroot libncurses5-dev dpkg-dev libssl-dev bc gnupg</​code>​+<code root>apt install build-essential fakeroot libncurses5-dev dpkg-dev libssl-dev bc gnupg dirmngr</​code>​
  
 C'​est-à-dire : C'​est-à-dire :
Ligne 51: Ligne 51:
    * Pour les DE basés sur **qt**:    * Pour les DE basés sur **qt**:
 <code root>apt install libqt4-dev</​code>​ <code root>apt install libqt4-dev</​code>​
-quand nous seront à l'​étape ​FIXME nous pourrons faire: +quand nous seront à l'**étape ​5** nous pourrons faire: 
-<​code ​root>make xconfig</​code>​+<​code ​user>make xconfig</​code>​
    * Pour les DE basés sur **gtk**:    * Pour les DE basés sur **gtk**:
 <code root>apt install libgtk2.0-dev libglade2-dev</​code>​ <code root>apt install libgtk2.0-dev libglade2-dev</​code>​
-quand nous seront à l'​étape ​FIXME nous pourrons faire: +quand nous seront à l'**étape ​5** nous pourrons faire: 
-<​code ​root>make gconfig</​code>​+<​code ​user>make gconfig</​code>​
  
 ===== Étape 2 Création répertoire de compilation ===== ===== Étape 2 Création répertoire de compilation =====
Ligne 75: Ligne 75:
 <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>​ <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: +Pour automatiser un peu, voici un exemple avec le kernel 4.10.14 (à changer par la version du kernel que vous voulez)
-<code user>cd ~ # on va dans son répertoire perso +<code user>​kversion=4.10.14 #​ la version du kernel à changer
-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.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>​ wget https://​www.kernel.org/​pub/​linux/​kernel/​v${kversion:​0:​1}.x/​linux-$kversion.tar.sign ​   # la signature des sources</​code>​
Ligne 84: Ligne 83:
 Ensuite vérification (à partir de l'​exemple précédant),​ à reproduire en fonction de votre kernel: Ensuite vérification (à partir de l'​exemple précédant),​ à reproduire en fonction de votre kernel:
  
-<code user>xz -cd linux-$kversion.tar.xz | gpg --verify linux-$kversion.tar.sign - | grep ^.*key</​code>​+<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 95: Ligne 94:
 gpg: imported: 1</​code>​ gpg: imported: 1</​code>​
 on recommence on recommence
-<code user>xz -cd linux-$kversion.tar.xz | gpg --verify linux-$kversion.tar.sign - | grep ^.*key</​code>​+<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 118: Ligne 117:
    
 On [[doc:​systeme:​tar|décompresse le kernel téléchargé]] avec cette commande : On [[doc:​systeme:​tar|décompresse le kernel téléchargé]] avec cette commande :
-<code user>tar -xaf linux-X.X-X.tar.xz</​code>​+<code user>tar -xaf linux-$kversion.tar.xz</​code>​
  
 On se **déplace dans le nouveau dossier** créé par la décompression On se **déplace dans le nouveau dossier** créé par la décompression
-<code user>cd linux-X.X-X/</​code>​+<code user>cd linux-$kversion</​code>​
  
 ===== Étape 5 Configuration des options du noyau ===== ===== Étape 5 Configuration des options du noyau =====
Ligne 133: Ligne 132:
   * **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.   * **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>​Pour les kernels plus anciens, il faudra peut-être copier la configuration de votre kernel actuel sous forme de .config</​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> ​+<code user>cp /​boot/​config-votreKernelActuellementActifOuPrecedant .config</​code></​note>
  
 Puis faire une des trois commandes suivantes **au choix** : Puis faire une des trois commandes suivantes **au choix** :
Ligne 146: Ligne 145:
 Ou encore : Ou encore :
 <code user>​make oldconfig</​code>​ <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.+   * 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>​ <note tip>Si vous avez un doute, appuyez sur la touche ''​entrée''​.</​note>​
- 
-On peut aussi partir de Zéro, en fouillant dans la doc et les architectures proposées, mais là faut aimer jouer ;) 
  
 === Annexe optionnelle === === Annexe optionnelle ===
Ligne 165: Ligne 162:
 Remarque: à partir du noyau 4.10, la doc intéressante est déplacée, mais c'est indiqué dans le ''​README''​ 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 ====+==== 5.2 Désactiver ​les clés du kernel ====
  
 Obligatoire pour éviter erreur de compilation et éventuellement utiliser ses clés propres Obligatoire pour éviter erreur de compilation et éventuellement utiliser ses clés propres
Ligne 183: Ligne 180:
 Nous allons maintenant pouvoir nous mettre à compiler ! \\ Nous allons maintenant pouvoir nous mettre à compiler ! \\
 Selon la manière que je vais vous présenter : Selon la manière que je vais vous présenter :
-  ​il créera les packages ​pour ensuite +  ​il créera les packages  
-  - installer le kernel.+ 
  
-<code user>​fakeroot make deb-pkg -jX LOCALVERSION=-nomanecdotique KDEB_PKGVERSION=$(make kernelversion)-1</​code>​+<code user>​fakeroot make deb-pkg -j$(nproc) ​LOCALVERSION=-nomanecdotique KDEB_PKGVERSION=$(make kernelversion)-1</​code>​
 <code user>​fakeroot make deb-pkg -j$(nproc) LOCALVERSION=-$(dpkg --print-architecture) KDEB_PKGVERSION=$(make kernelversion)-1</​code>​ <code user>​fakeroot make deb-pkg -j$(nproc) LOCALVERSION=-$(dpkg --print-architecture) KDEB_PKGVERSION=$(make kernelversion)-1</​code>​
  
-===== Explications ​=====+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. 
 +<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''​   * **fakeroot** va nous permettre de compiler sans être en ''​root''​
   * **make** est l'​outil qui va chercher les instructions dans le ''​Makefile''​ qui va donner les instructions au compilateur.   * **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 \\+  * ''​**-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.    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 \\   * **LOCALVERSION=-$(dpkg --print-architecture)**,​ optionnel, sert à nommer son kernel, au plus près du nommage Debian \\
-    vous pouvez ​utiliser ​aussi ''​nomanecdotique'',​ mais sans lettres majuscules ​car sinon à la fin, lors de la construction du paquet, cela fera une belle erreur ''​caractère non autorisé = la(les) ​lettres ​en majuscule''​. +    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 versions ​aux paquets construits à la fin.+  * **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 2 et 4h de compilation). \\ 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 2 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// :-O
  
-===== Étape ​Contemplation =====+===== Étape ​Contemplation =====
    
 Maintenant ​ on remonte pour voir les fichier crées : Maintenant ​ on remonte pour voir les fichier crées :
Ligne 209: Ligne 213:
 <code user>​ls</​code>​ <code user>​ls</​code>​
 Vous devriez avoir obtenu les fichiers : Vous devriez avoir obtenu les fichiers :
-<​code>​linux-X.X-X-architecture_X.X-X-1_architecture.changes +<​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.debian.tar.gz 
- linux-X.X-X-architecture_X.X-X-1.dsc + ​linux-X.X-X-architecture_X.X-X-1.dsc 
- linux-X.X-X-architecture_X.X-X-architecture.orig.tar.gz + ​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-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-headers-X.X-X-architecture_X.X-X-1_architecture.deb 
- linux-image-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>​ + ​linux-libc-dev_X.X-X-1_architecture.deb</​code>​ 
-si vous n'avez pas désactivé la compilation de de dbg : + 
- linux-image-X.X-X-architecture-dbg_X.X-X-1_architecture.deb +Si vous n'avez pas désactivé la compilation de de dbg : 
-Sans compter les fichiers qui étaient présents avant.+ ''​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 :-) 
 + 
 +Tout ça sans compter les fichiers qui étaient présents avant.
  
 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. 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.
  
-===== Étape ​Installation et/ou déinstallation du kernel =====+===== Étape ​Installation et/ou déinstallation du kernel =====
  
 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. 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.
 <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>​ <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) ​+(vous pouvez rajouter les autres paquets après ou directement *.deb si vous voulez tout installer)\\ 
 Pour Déinstaller:​ Pour Déinstaller:​
-<code root>​dpkg -P 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>​+<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 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.__ __Vous pouver aussi déinstaller avec apt.__
 +<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 ==== 
-<​note>​__Dans ''/​etc/​kernel/​postinst.d/​apt-auto-removal''​ :​__''​\\+__Dans ''/​etc/​kernel/​postinst.d/​apt-auto-removal''​ :​__''​\\
 // # Mark as not-for-autoremoval those kernel packages that are://\\ // # Mark as not-for-autoremoval those kernel packages that are://\\
 +// #//\\
 // #  - the currently booted version//\\ // #  - the currently booted version//\\
 // #  - the kernel version we've been called for//\\ // #  - the kernel version we've been called for//\\
Ligne 257: Ligne 268:
 <code root>mv /​etc/​kernel/​postinst.d/​apt-auto-removal /​etc/​kernel/​postinst.d/​apt-auto-removal.bak <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>​ ln -s /dev/null /​etc/​kernel/​postinst.d/​apt-auto-removal</​code>​
-</​note>​+
 ===== Conclusion et Sources ===== ===== Conclusion et Sources =====
  
doc/systeme/kernel/compiler.txt · Dernière modification: 01/10/2023 11:30 par captnfab

Pied de page des forums

Propulsé par FluxBB