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

Ceci est une ancienne révision du document !


Compiler un kernel de kernel.org

Voir aussi le tuto : * compiler un noyau

Introduction

Compiler un kernel (plus réçent) est utile pour plusieurs choses :

  1. Pour les maniaques, juste avoir le kernel le plus réçent ! 8-o
  2. Bénéficier des nouvelles fonctionnalités offertes par celui-ci.
  3. Avoir une meilleure reconnaissance matérielle.
  4. Pouvoir peaufiner les options de compilations pour ses besoins

Il y a sûrement d'autres raisons de le faire mais ce sont celles que j'ai retenues. :-)

Testé sous stretch, future Debian Stable :

Je rappelle pour les personnes non-habituées et les habitués tête en l'air, qu'il faut bien tout lire.

Nous n'avons pas besoin d'être en root sauf pour installer les paquets apt au début et le kernel à la fin !

Étape 1 Dépendances

Installer les paquets :

apt install build-essential fakeroot libncurses5-dev dpkg-dev libssl-dev bc gnupg

C'est-à-dire :

  1. le compilateur et ses utilitaires principaux, ce qui va nous permettre de compiler en user
  2. et un utilitaire de configuration du kernel
  3. gpg pour contôler la signature des sources

Ce qui normalement :

  1. permettra la contruction des packages,
  2. permettra de configurer votre kernel par rapport à votre machine.

Pour avoir un menu graphique de configuration des options:

  • Pour les DE basés sur qt:
apt install apt install libqt4-dev

quand nous seront à l'étape FIXME nous pourrons faire:

make xconfig
  • Pour les DE basés sur gtk:
apt install libgtk2.0-dev libglade2-dev

quand nous seront à l'étape FIXME nous pourrons faire:

make gconfig

Étape 2

Les X remplacent des chiffres

On va télécharger dans son dossier personnel, dans un sous-dossier kernel.

On crée le dossier :

mkdir ~/kernel

On se déplace dedans :

cd ~/kernel

Étape 3

Les X remplacent des chiffres

On repasse en user dans le terminal, ensuite on décompresse le kernel téléchargé avec cette commande :

tar xvf linux-X.X-X.tar.xz
Je conseille de décompresser l'archive dans un répertoire vide créé par exemple ainsi :
mkdir nomdufichier

pour qu'après la compilation vous ne cherchiez pas vos .deb etc)

Puis on se rend dans l'archive décompressée :

cd linux-X.X-X/

Étape 4

Maintenant, dans cette étape, on va s'occuper de la configuration du kernel :

Il est conseillé de restaurer la configuration actuelle, pour ce faire, on peut faire au choix les commandes de type make oldconfig suivantes :

  • 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.
  • Pour les kernels plus anciens, il faudra peut-être copier la configuration de votre kernel actuel sous forme de .config
    cp /boot/config-votreKernelActuellementActifOuPrecedant .config

Puis faire une des trois commandes suivantes au choix :

make olddefconfig

Cette commande s'exécutera en choisissant les valeurs par defaut en une fois2).

Ou :

make oldnoconfig

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 :

make oldconfig

Cette commande vous demandera de valider les nouvelles options (ajoutées dans le nouveau kernel) par Y ou par N ou ou/et d'autres options encore.

Si vous avez un doute, appuyez sur la touche entrée.

Annexe optionnelle

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

ATTENTION ! j'ai dû commenter deux lignes du .config après avoir configuré les kernel avec les commandes précédentes et celle de l'annexe optionnelle) :

CONFIG_MODULE_SIG_KEY=""

et :

CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/XXXX@debian.org.cert.pem"

avec les kernel 4.9 et 4.10-rc1 et rc2, sinon on obtient :

une erreur de compilation

Voir : Cette discussion bas post #27 et piste dans le post #2 de la discussion liée à ce tutoriel dans l'entête.
Il semble donc que, soi par commande, soi par configuration (par make menuconfig ou par édition du fichier .config), qu'il faille désactiver les trusted_keys (ce que j'ai dû désactiver) ; c'est sûrement valable pour d'autres versions du kernel.

Étape 5

Nous allons maintenant pouvoir nous mettre à compiler !
Selon la manière que je vais vous présenter :

  1. il créera les packages pour ensuite
  2. installer le kernel.
fakeroot make deb-pkg -jX LOCALVERSION=-nomanecdotique KDEB_PKGVERSION=$(make kernelversion)-1

Explication

  1. fakeroot va nous permettre de compiler sans être en root
  2. make est l'outil qui va chercher les instructions dans le Makefile qui va donner les instructions au compilateur.
  3. -jX ici, le X est à remplacer par le nombre de threads pour en savoir le nombre, utiliser htop du paquet du même nom et c'est le nombre au dessus de Mem vers les cores que vous avez dans le processeur de votre machine (ce n'est pas obligatoire, mais cela permet d'augmenter la vitesse de compilation, le processeur travaillant en entier sur tout ces cores avec tout ses threads avec cette option.
  4. LOCALVERSION=-nomanecdotique, cette option est optionnelle, elle sert à nommer son kernel, pour cela, ici, il faut remplacer nomanecdotique par le nom que vous voulez, mais pas de lettres majuscules car sinon vers la fin de la compilation cela feras une erreur caractère non autorisé = la(les) lettres en majuscule.
  5. KDEB_PKGVERSION=$(make kernelversion)-1, optionnel, donne une versions 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).
Vous avez donc le temps de boire un thé ou un café, manger des Chocos-DF et d'écouter du hard-rock :-O

Étape 6

Maintenant il va falloir sortir de l'archive :

cd ..

Puis, passez en root et listez le contenu du répertoire :

ls

Vous devriez avoir obtenu les fichiers :

linux-X.X-X-nomanecdotique_X.X-X-1_amd64.changes
linux-X.X-Xnomanecdotique_X.X-X-1.debian.tar.gz
linux-X.X-X-nomanecdotique_X.X-X-1.dsc
linux-X.X-X-nomanecdotique_X.X-X-nomanecdotique.orig.tar.gz
linux-firmware-image-X.X-X-nomanecdotique_X.X-X-1_amd64.deb
linux-headers-X.X-X-nomanecdotique_X.X-X-1_amd64.deb
linux-image-X.X-X-nomanecdotique_X.X-X-1_amd64.deb
linux-image-X.X-X-nomanecdotique-dbg_X.X-X-1_amd64.deb
linux-libc-dev_X.X-X-1_amd64.deb

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.

Étape 7

Il faut donc installer les .deb avec:

dpkg -i ''lesPaquets.deb''

(nous avons donc, pour nous, seulement besoin d'installer les .deb, et accessoirement garder les autres fichiers)

On reboot la machine et cela devrait fonctionner. 8-)

Conclusion et Sources

Bravo! vous avez une machine avec le kernel de votre choix!

Source: ce lien en section 8.10.4 , Toute la page est intéressante pour tous les Fous-faciles! :-)

Excusez mon Français approximatif au niveau des tournures de phrases, je tente de corriger mais je ne suis pas très bon de ce côté là, c'est d'ailleurs un des domaines pour lesquels vous pouvez contribuer tant que cela reste cohérent avec le tutoriel.

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
2)
les lignes de validations par Y ou N seront cachées
doc/systeme/kernel/compiler.1494260183.txt.gz · Dernière modification: 08/05/2017 18:16 par naguam

Pied de page des forums

Propulsé par FluxBB