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 [13/05/2017 08:59]
naguam [2 C'est parti! Prérequis!]
doc:systeme:kernel:compiler [13/05/2017 20:14]
naguam
Ligne 11: Ligne 11:
   * Ce tutoriel est destiné à tout le monde, qui si ils veulent, devraient 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 a la partie sécurité\\   * Ce tutoriel est destiné à tout le monde, qui si ils veulent, devraient 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 a la partie sécurité\\
  
-  * Les plus expérimentés ou ceux qui veulent aller plus loin, je vais mettre ​en bas de la page des liens pour une exploitation plus poussée de la technique (par exemple pour patcher)\\+  * Les plus expérimentés ou ceux qui veulent aller plus loin, en bas de la page des liens pour une exploitation plus poussée de la technique ​seront mis (par exemple pour patcher)\\
  
   * Dans ce tutoriel, l'​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 enregistrer au mieux les infos basiques qui seront expliquées au plus simple pour que vous n'ayez ensuite plus besoin du tutoriel pour le faire\\   * Dans ce tutoriel, l'​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 enregistrer au mieux les infos basiques qui seront expliquées au plus simple pour que vous n'ayez ensuite plus besoin du tutoriel pour le faire\\
  
-  * Donc nous allons ​faire au plus simple mais la partie sécuritée un peu plus fastidieuse est une étape importante qui elle, sera expliquée au mieux mais on ne peut pas s'en affranchir\\+  * Nous allons ​aborder la partie sécurité ​au plus simplemais mérites ​une attention certaine\\
  
-  * Donc, si vous êtes sur ce tutoriel, c'est que vous voulez compiler un kernel donc je ne vais pas répéter les raisons de le faire, mais sachez-le que ce tutoriel est à appliquer à vos risques et périls (votre responsabilité)\\+  * Donc, si vous êtes sur ce tutoriel, c'est que vous voulez compiler un kernel donc nous n'​allons ​pas répéter les raisons de le faire, mais sachez-le que ce tutoriel est à appliquer à vos risques et périls (votre responsabilité)\\
  
   * Lisez le tutoriel le tutoriel **dans ça totalitée** et respectez bien les ''​codes en **user** ou **root**''​ car il est préférable d'​utiliser le root au moins possible (normalement le root n'est nécessaire que pour l'​installation des dépendances et l'​installation du kernel à la fin)\\   * Lisez le tutoriel le tutoriel **dans ça totalitée** et respectez bien les ''​codes en **user** ou **root**''​ car il est préférable d'​utiliser le root au moins possible (normalement le root n'est nécessaire que pour l'​installation des dépendances et l'​installation du kernel à la fin)\\
Ligne 39: Ligne 39:
 ==== 2.3 Les sources ==== ==== 2.3 Les sources ====
  
-Bien sûr il vous faut télécharger la source du kernel et la signature pour vérification de l'​intégrité du kernel. \\ +Bien sûr il nous faut télécharger la source du kernel et la signature pour vérification de l'​intégrité du kernel. \\ 
-Vous pouvez ​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)\\ 
-Pour les moins expérimentés,​ téléchargez celui de kernel.org (ligne ci-dessus), vous devez avoir des fichiers qui ce terminent par ''​.tar.xz''​ et ''​.tar.sign''​\\+Vous devez avoir des fichiers qui ce terminent par ''​.tar.xz''​ 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!**__
  
-Par simplicité dans les commandes suivantes, ​je vais vous faire taper une petite commande dans un terminal (cette fois en user)\\+Par simplicité dans les commandes suivantes, ​nous allons ​taper une petite commande dans un terminal (cette fois en user)\\
 **Attention! les X sont à remplacer par la version du kernel que vous avez téléchargé sur ''​kernel.org''​**\\ **Attention! les X sont à remplacer par la version du kernel que vous avez téléchargé sur ''​kernel.org''​**\\
 <note important>​**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>​ <note important>​**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>​
Ligne 54: Ligne 54:
  
 Maintenant nous allons passer à la vérification des sources, pour prouver l'​intégritée des fichiers Maintenant nous allons passer à la vérification des sources, pour prouver l'​intégritée 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, ​je rappelle qu'en cas de problème vous pouvez faire un post sur la page du forum reliée à ce tutotiel 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 tutotiel lien en haut de page
  
-Si vous avez utilisé les sources de kernel.org (voir la sous étape précédante),​ vous n'avez qu'a copier collé et lire une ou deux choses de retours, que je vous indiquerais ​:-)\\+Si vous avez utilisé les sources de kernel.org (voir la sous étape précédante),​ vous n'avez qu'a copier collé et lire une ou deux choses de retours :-)\\
 Si vous n'avez pas utilisé les sources du kernel.org voir l'​encadré /!\ précédant.\\ Si vous n'avez pas utilisé les sources du kernel.org voir l'​encadré /!\ précédant.\\
  
Ligne 106: Ligne 106:
 ==== 3.2 Configuration et préparation des sources ==== ==== 3.2 Configuration et préparation des sources ====
  
 +Maintenant, nous allons configurer notre kernel avec nos options voulues (ici comme presque toujours, les commandes seront appliquées en user)\\
  
 +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\\
  
-====== Partie du haut modifiée le bas en cours de modification! Mise à jour en cours ======+<code user>​make olddefconfig</​code>​
  
 +Cette commande va chercher la configuration de votre kernel actuel et met toutes les nouvelles options en "par default"​\\
  
 +Pour les plus expérimentés,​ ou les personnes bidouilleuse,​ ou même encore les personnes qui ont besoins d'​options activées en particulier,​ vous pouvez faire cette commande\\
  
 +<code user>​make menuconfig</​code>​
  
-===== Étape 5 Configuration des options ​du noyau =====+Pour plus d'​infos sur les options ​de configuration,​ les informations seront en bas de page.\\
  
-Maintenant, dans cette étape, on va s'​occuper de la configuration ​du kernel ​:+**Ensuite nous devons désactiver les clef du kernel ​car sinon nous aurons droit à une belle erreur de compilation**\\
  
-==== 5.1 Options actuelles ====+<code user>./​scripts/​config -d CONFIG_MODULE_SIG_ALL -d CONFIG_MODULE_SIG_KEY -d CONFIG_SYSTEM_TRUSTED_KEYS</​code>​
  
-Il est conseillé de restaurer la configuration actuelle, pour ce faire, on peut faire au choix les commandes de type **make oldconfig** suivantes ​:+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 :)\\
  
-  ​* **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. +**Nous allons enlever le paquet debug ''​**dbg**'' ​car il ne sert en général qu'aux développeurscela nous permettra ​de compiler en moins de temps**\\
-   +
- <​note>​Pour les kernels plus anciensil faudra peut-être copier la configuration ​de votre kernel actuel sous forme de .config+
  
-<code user>cp /​boot/​config-votreKernelActuellementActifOuPrecedant .config</​code></​note>​+Pour ce faire nous allons faire la commande suivante\\
  
-Puis faire une des trois commandes suivantes **au choix** : +<code user>./scripts/​config -d CONFIG_DEBUG_INFO</​code>​
-<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 : +Voilà, nous pouvons maintenant passer à la fameuse compilation, ​d'​autres options ​pour optimiser le temps de compilation seront indiquées\\ 
-<code user>​make oldconfig</​code>​ +Vous pouvez passer en 4.2 nous avons commencé à optimiser le tempsnous allons continuer :-)\\
-   * 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 douteappuyez sur la touche ''​entrée''​.</​note>​+
  
-=== Annexe optionnelle ​===+===== 4 C'est parti pour la compilation! La fameuse! (toujours en user et oui!) =====
  
-Pour les plus avisés et/ou les bidouilleurs-fousvous pouvez gratter à la main dans la configuration du kernel par cette interface //​semi-graphique//​ de configuration : +<note important>​Il est fort possible que nous ayez des questions a répondre au moment de la compilationtapez ''​**entrée**''​</​note>​
-   ​* ​'' ​make menuconfig'' ​en console ncurse+
  
-Vous pouvez aussi utilisez une interface graphique plus confortable pour naviguer ​dans toutes ces options, selon le DE : +==== 4.1 Pour la compilation bourin (indiquée soulignée et gras dans la partie précédante) ====
-   * ''​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. +Nous pouvons donc nous mettre ​à compiler\\
-  * 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 ====+<code user>​fakeroot make deb-pkg -j$(nproc) LOCALVERSION=-$(dpkg --print-architecture) KDEB_PKGVERSION=$(make kernelversion)-1</​code>​
  
-Obligatoire ​pour éviter erreur ​de compilation ​et éventuellement utiliser ses clés propres +<​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). 
-En savoir plus: https://​lists.debian.org/​debian-kernel/2016/04/msg00579.html+Vous avez donc le temps de boire un thé ou un café, manger des Chocos-DF et d'​écouter du hard-rock!!//</note>
  
-<code user>./​scripts/​config -d CONFIG_MODULE_SIG_ALL -d CONFIG_MODULE_SIG_KEY -d CONFIG_SYSTEM_TRUSTED_KEYS</​code>​+Ensuite, passez à __**l'​étape 4.3**__ si vous voulez explications simples pour juste certaines parties de la commande\\ 
 +Sinon passez directement à __**l'​étape 5**__\\
  
-==== 5.3 Ne pas compiler ​de debug ====+==== 4.2 Toujours plus d'​optimisation ​de temps en ne créant que les paquets nécessaires ​====
  
-Ne pas compiler le fichier de symboles dbg : +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 reconstruitesil vous faut faire __**étape 4.1**__\\
-<code user>​./​scripts/​config ​-d CONFIG_DEBUG_INFO</​code>​ +
-ce n'est pas obligatoiremais permet un gain de 38%.+
  
 +Nous pouvons nous mettre à compiler\\
  
-===== Étape 6 Compilation ===== +<code user>​fakeroot make bindeb-pkg -j$(nproc) LOCALVERSION=-$(dpkg --print-architecture) KDEB_PKGVERSION=$(make kernelversion)-1</​code>​
- +
-Nous allons maintenant pouvoir nous mettre à compiler ! \\ +
-Selon la manière que je vais vous présenter : +
-  * il créera les packages  +
-  +
- +
-<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>​ +
- +
-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''​ +==== 4.3 Explications basiques ====
-  * **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 2 et 4h de compilation). \\ +  * ''​**-j$(nproc)**''​ prend le nombre de threads total de votre processeur (la compilation sera la plus rapide possible), ​pour les connaisseursvous 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 argumentcela n'utilisera qu'un seul thread, \\
-//Vous avez donc le temps de boire un thé ou un cafémanger des Chocos-DF et d'écouter du hard-rock// :-O+
  
-===== Étape 7 Contemplation ===== +  * ''​**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**\\
-  +
-Maintenant ​ on remonte pour voir les fichier crées : +
-<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 : +  * ''​**KDEB_PKGVERSION=$(make kernelversion)-1**''​ cet argument sert à versionner le kernel ''​**1**'' ​(soit version 1) **c'est encore optionnel mais il est conseillé** \\
- ''​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 :-)+===== Installation ou déinstallation des paquets ​=====
  
-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.+======Toujours en cours de mise à jour======
  
 ===== Étape 8 Installation et/ou déinstallation du kernel ===== ===== Étape 8 Installation et/ou déinstallation du kernel =====
doc/systeme/kernel/compiler.txt · Dernière modification: 01/10/2023 11:30 par captnfab

Pied de page des forums

Propulsé par FluxBB