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 →
Ceci est une ancienne révision du document !
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é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 fairecodes 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)
Alors déjà, soyez sûr avant de commencer que vous avez suffisamment de stockage libre pour les dépendances mais aussi car la compilation crééra des paquets (10GB ou plus conseillés)
Il nous faudra donc ensuite, installer des dépendances nécessaires à la compilation (en root)
apt install build-essential fakeroot dpkg-dev libssl-dev bc gnupg dirmngr libncurses5-dev
Nous allons créer un repertoire de compilation, c'est très fortemment conseillé puis nous allons aller dedans (en user!!)
mkdir ~/compilation && cd ~/compilation
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.
Nous pouvons par exemple les télécharger chez 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
et .tar.sign
Téléchargez vos sources dans votre répertoire de compilation créé juste avant!
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
linux-$kversion.tar.xz
, linux-$kversion.tar.sign
et linux-$kversion
par les équivalent que vous avez téléchargés auparavant.
kversion=X.X.X
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, 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
Si vous n'avez pas utilisé les sources du kernel.org voir l'encadré /!\ précédant.
Donc là nous allons commencer la vérification (en user)
xz -cd linux-$kversion.tar.xz | gpg --verify linux-$kversion.tar.sign -
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)
gpg: Signature made mer. 03 mai 2017 17:38:11 CEST gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E gpg: Can't check signature: Pas de clef publique
Là nous pouvons voir que pour l'instant 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)
gpg --keyserver hkp://keys.gnupg.net --recv-keys 647F28654894E3BD457199BE38DBBDC86092693E
Retour toujours de l'exemple, vous devriez avoir un retour similaire
gpg: Signature made mer. 03 mai 2017 17:38:11 CEST gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E gpg: Good signature from "Greg Kroah-Hartman (Linux kernel stable release signing key) greg@kroah.com" [unknown] gpg: WARNING: This key is not certified with a trusted signature! 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
Maintenant dans ce retour et normalement dans le votre, vous devriez voir Good signature from….
Cela montre que votre signature est vérifiée c'est parfais vous pouvez passer à l'étape suivante
Dans un 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
Par contre nous pouvons ignorer le WARNING
Nous avons fini les prérequis, nous allons maintenant préparer nos sources pour la compilation donc nous allons déjà commencer par décompresser nos sources (en user) puis nous allons aller dans nos sources décompressées pour l'étape suivante
tar -xaf linux-$kversion.tar.xz && cd linux-$kversion
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
make olddefconfig
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
make menuconfig
Pour plus d'infos sur les options de configuration, les informations seront en bas de page.
Ensuite nous devons désactiver les clef du kernel car sinon nous aurons droit à une belle erreur de compilation
./scripts/config -d CONFIG_MODULE_SIG_ALL -d CONFIG_MODULE_SIG_KEY -d CONFIG_SYSTEM_TRUSTED_KEYS
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
./scripts/config -d CONFIG_DEBUG_INFO
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
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é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 fairecodes 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)
Alors déjà, soyez sûr avant de commencer que vous avez suffisamment de stockage libre pour les dépendances mais aussi car la compilation crééra des paquets (10GB ou plus conseillés)
Il nous faudra donc ensuite, installer des dépendances nécessaires à la compilation (en root)
apt install build-essential fakeroot dpkg-dev libssl-dev bc gnupg dirmngr libncurses5-dev
Nous allons créer un repertoire de compilation, c'est très fortemment conseillé puis nous allons aller dedans (en user!!)
mkdir ~/compilation && cd ~/compilation
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.
Nous pouvons par exemple les télécharger chez 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
et .tar.sign
Téléchargez vos sources dans votre répertoire de compilation créé juste avant!
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
linux-$kversion.tar.xz
, linux-$kversion.tar.sign
et linux-$kversion
par les équivalent que vous avez téléchargés auparavant.
kversion=X.X.X
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, 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
Si vous n'avez pas utilisé les sources du kernel.org voir l'encadré /!\ précédant.
Donc là nous allons commencer la vérification (en user)
xz -cd linux-$kversion.tar.xz | gpg --verify linux-$kversion.tar.sign -
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)
gpg: Signature made mer. 03 mai 2017 17:38:11 CEST gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E gpg: Can't check signature: Pas de clef publique
Là nous pouvons voir que pour l'instant 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)
gpg --keyserver hkp://keys.gnupg.net --recv-keys 647F28654894E3BD457199BE38DBBDC86092693E
Retour toujours de l'exemple, vous devriez avoir un retour similaire
gpg: Signature made mer. 03 mai 2017 17:38:11 CEST gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E gpg: Good signature from "Greg Kroah-Hartman (Linux kernel stable release signing key) greg@kroah.com" [unknown] gpg: WARNING: This key is not certified with a trusted signature! 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
Maintenant dans ce retour et normalement dans le votre, vous devriez voir Good signature from….
Cela montre que votre signature est vérifiée c'est parfais vous pouvez passer à l'étape suivante
Dans un 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
Par contre nous pouvons ignorer le WARNING
Nous avons fini les prérequis, nous allons maintenant préparer nos sources pour la compilation donc nous allons déjà commencer par décompresser nos sources (en user) puis nous allons aller dans nos sources décompressées pour l'étape suivante
tar -xaf linux-$kversion.tar.xz && cd linux-$kversion
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
make olddefconfig
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
make menuconfig
Pour plus d'infos sur les options de configuration, les informations seront en bas de page.
Ensuite nous devons désactiver les clef du kernel car sinon nous aurons droit à une belle erreur de compilation
./scripts/config -d CONFIG_MODULE_SIG_ALL -d CONFIG_MODULE_SIG_KEY -d CONFIG_SYSTEM_TRUSTED_KEYS
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
./scripts/config -d CONFIG_DEBUG_INFO
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
entrée
Nous pouvons donc nous mettre à compiler
fakeroot make deb-pkg -j$(nproc) LOCALVERSION=-$(dpkg --print-architecture) KDEB_PKGVERSION=$(make kernelversion)-1
Ensuite, passez à l'étape 4.3 si vous voulez explications simples pour juste certaines parties de la commande
Sinon passez directement à l'étape 5
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
fakeroot make bindeb-pkg -j$(nproc) LOCALVERSION=-$(dpkg --print-architecture) KDEB_PKGVERSION=$(make kernelversion)-1
Ensuite, passez à l'étape suivante (4.3) si vous voulez explications simples pour juste certaines parties de la commande
Sinon passez directement à l'étape 5
-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 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 optionnelKDEB_PKGVERSION=$(make kernelversion)-1
cet argument sert à versionner le kernel 1
(soit version 1) c'est encore optionnel mais il est conseillé 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 ====
Dans /etc/kernel/postinst.d/apt-auto-removal
:
# Mark as not-for-autoremoval those kernel packages that are:
#
# - the currently booted version
# - the kernel version we've been called for
# - the latest kernel version (as determined by debian version number)
# - the second-latest kernel version
#
# In the common case this results in two kernels saved (booted into the
# 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
# 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)
Il faut que je teste un peu plus, mais généralement, il ne reste que 2 noyaux installés. ce lien en section 8.10.4, Toute la page est intéressante pour tous les Fous-faciles! **