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 21:28] naguam [Étape 6 Compilation] |
doc:systeme:kernel:compiler [12/05/2017 21:44] naguam [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] |
||
---|---|---|---|
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 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===== |
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 184: | Ligne 183: | ||
- | <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> | ||
+ | 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 ==== | ==== 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 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)''. | + | 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. | * **KDEB_PKGVERSION=$(make kernelversion)-1**, optionnel, donne une version aux paquets construits à la fin. | ||
Ligne 207: | 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. | ||
Ligne 225: | Ligne 235: | ||
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 ==== | ==== Avertissement ==== | ||
__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//\\ |