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 →
Ci-dessous, les différences entre deux révisions de la page.
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 20:40] naguam [Explications] |
doc:systeme:kernel:compiler [08/05/2017 21:02] naguam [Étape 6 Configuration des options du noyau] |
||
---|---|---|---|
Ligne 71: | Ligne 71: | ||
Il faut télécharger le kernel (source et signature) depuis ce lien : | Il faut télécharger le kernel (source et signature) depuis ce lien : | ||
* [[https://www.kernel.org/|kernel.org]] | * [[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 un version voulue) du kernel à télécharger cette automatisation a été conçu pour les kernels de kernel.org si vous compilez kernel d'autres sources il vous faudra mieux comprendre le fonctionnement **gpg** et l'automatisation 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: | + | |
+ | 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>cd ~ # on va dans son répertoire perso | ||
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> | ||
- | voilà, les prochaines fois, vous n'aurez plus qu'à changer kversion, les autres commandes ne changeront pas | + | Voilà, les prochaines fois, vous n'aurez plus qu'à changer la variable '' kversion '', les autres commandes ne changeront pas. |
- | Ensuite vérification (aussi de par 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 - | grep ^.*key</code> | ||
Ligne 85: | Ligne 86: | ||
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: | + | on extrait la clé, **signature inconnue**, on va la chercher: |
<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 | <code>gpg: key 38DBBDC86092693E: public key "Greg Kroah-Hartman (Linux kernel stable release signing key) greg@kroah.com" imported | ||
Ligne 99: | Ligne 100: | ||
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 : | + | Voilà, super la signature est ok :\\ |
- | + | ''Good signature from "Greg Kroah-Hartman...''\\ | |
- | <>Good signature from "Greg Kroah-Hartman (Linux kernel stable release signing key) greg@kroah.com" [unknown]</> | + | Même si la clé n'est pas signée avec une signature de confiance.\\ |
- | + | ||
- | Même si la clé n'est pas signée avec une signature de confiance. | + | |
En cas de **"BAD signature"**, vérifier: | En cas de **"BAD signature"**, vérifier: | ||
Ligne 110: | Ligne 109: | ||
* contacter ftpadmin@kernel.org immédiatement pour investigation | * contacter ftpadmin@kernel.org immédiatement pour investigation | ||
- | <> WARNING: This key is not certified with a trusted signature</> | + | ''WARNING: This key is not certified with a trusted signature''\\ |
On va s'arrêter là dans la vérification, à moins de vouloir vérifier en contactant des signataires de cette clé. \\ | 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: | Voir les signataires: | ||
<code user>gpg --list-sigs ABAF11C65A2970B130ABE3C479BE3E4300411886</code> | <code user>gpg --list-sigs ABAF11C65A2970B130ABE3C479BE3E4300411886</code> | ||
- | |||
===== Étape 5 Décompression ===== | ===== Étape 5 Décompression ===== | ||
Ligne 139: | Ligne 137: | ||
Puis faire une des trois commandes suivantes **au choix** : | Puis faire une des trois commandes suivantes **au choix** : | ||
<code user>make olddefconfig</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). | + | * 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 : | Ou : | ||
<code user>make oldnoconfig</code> | <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. | + | * 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 : | 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> | ||
Ligne 155: | Ligne 152: | ||
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 : | 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 : | ||
- | * '' make menuconfig'' en console ncurse | + | * '' make menuconfig'' en console ncurse |
Vous pouvez aussi utilisez une interface graphique plus confortable pour naviguer dans toutes ces options, selon le DE : | Vous pouvez aussi utilisez une interface graphique plus confortable pour naviguer dans toutes ces options, selon le DE : | ||
- | * ''make gconfig'' en graphique sous gnome, xfce ou autre | + | * ''make gconfig'' en graphique pour interfaces ou DE basés sur gtk. |
- | * ''make xconfig'' en graphique sous kde | + | * ''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 raoutant des options. | + | 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. |
- | * consulter ''~/kernel/linux-4.X.X/README'' | + | * 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 | + | * 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'' | Remarque: à partir du noyau 4.10, la doc intéressante est déplacée, mais c'est indiqué dans le ''README'' | ||
Ligne 173: | Ligne 170: | ||
<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> | ||
- | ==== 6.3 Eviter de compiler debug ==== | + | ==== 6.3 Ne pas compiler de debug ==== |
Ne pas compiler le fichier de symboles dbg : | 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 par exemple, on va passer de 2h10 à 1h20 de compil, soit un gain de 38%. | + | ce n'est pas obligatoire, mais permet un gain de 38%. |
Ligne 236: | Ligne 233: | ||
- | <note>__Dans ''/etc/kernel/postinst.d/apt-auto-removal'' :__\\ | + | <note>__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//\\ | ||
Ligne 246: | Ligne 243: | ||
// # second-latest kernel, we install the latest kernel in an upgrade), but//\\ | // # second-latest kernel, we install the latest kernel in an upgrade), but//\\ | ||
// # can save up to four. Kernel refers here to a distinct release, which can//\\ | // # can save up to four. Kernel refers here to a distinct release, which can//\\ | ||
- | // # 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 (à vérifier) |