3. Les sources du noyau Linux

Il faut bien reconnaître que s'attaquer à toutes les options de configuration du noyau Linux en partant de zéro est une tâche particulièrement ardue. Pour rendre la démarche plus aisée, on se propose de partir de la configuration fournie avec le paquet de la distribution. En procédant par modifications élémentaires à partir de cette configuration réputée sûre puisque permettant le fonctionnement du système actuel, on limite ainsi les possibilités d'erreurs.

Q9.

Quels sont les principaux canaux de diffusion des sources du noyau Linux ?

Rechercher un site web, un dépôt de code en ligne et le nom du paquet de la distribution.

  • Le site principal de publication des sources du noyau Linux est à l'adresse http://www.kernel.org/.

  • Le développement du système de contrôle de version git a été initié par les développeurs du noyau Linux. Depuis, des services en lignes ont été bâtis à partir de git. Les branches de développement du noyau sont disponibles sur le site GitHub à l'adresse https://github.com/torvalds/linux.

  • La distribution Debian GNU/Linux propose des paquets contenant les sources qui on servi à construire les paquets de noyau. Pour identifier ces paquets, on effectue une recherche dans le catalogue de la distribution.

    $ aptitude search linux-source
    p   linux-source      - Linux kernel source (meta-package)
    p   linux-source-4.12 - Linux kernel source for version 4.12 with Debian patches

Q10.

Donner un exemple de téléchargement des sources du noyau sans passer par une interface graphique ?

Rechercher un outil permettant de lancer un téléchargement HTTP(s).

Lorsque l'on utilise des serveurs qui ne possèdent ni écran ni clavier, il est nécessaire d'effectuer les opérations sans recours à une interface graphique. Les outils les plus courants dans ce contexte sont url et wget.

  • Téléchargement à partir du site principal de publication kernel.org.

    $ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.13.2.tar.xz
    --  https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.13.2.tar.xz
    Résolution de cdn.kernel.org (cdn.kernel.org)… 2a04:4e42:1d::432, 151.101.121.176
    Connexion à cdn.kernel.org (cdn.kernel.org)|2a04:4e42:1d::432|:443… connecté.
    requête HTTP transmise, en attente de la réponse… 200 OK
    Taille : 100574388 (96M) [application/x-xz]
    Sauvegarde en : « linux-4.13.2.tar.xz »
    <snip/>
  • Téléchargement à partir du gestionnaire de paquets de la distribution.

    # aptitude install linux-source
    Les NOUVEAUX paquets suivants vont être installés :
      linux-source linux-source-4.12{a} make{a}
    0 paquets mis à jour, 3 nouvellement installés, 0 à enlever et 0 non mis à jour.
    Il est nécessaire de télécharger 102 Mo d'archives. Après dépaquetage, 103 Mo
    seront utilisés.
    Voulez-vous continuer ? [Y/n/?]

Q11.

Quel est le groupe système qui permet de compiler un noyau ou des modules ?

Rechercher le groupe consacré aux manipulations des sources dans la liste des groupes système.

On cherche la chaîne src dans le fichier /etc/group et on ajoute l'utilisateur normal dans ce groupe.

# grep src /etc/group
src:x:40:

# adduser etu src
Ajout de l'utilisateur « etu » au groupe « src »...
Ajout de l'utilisateur etu au groupe src
Fait.

# id etu
uid=1000(etu) gid=1000(etu) groupes=1000(etu),24(cdrom),25(floppy),
29(audio),30(dip),40(src),44(video),46(plugdev)

Q12.

Quel est le répertoire du système dédié au stockage des sources du noyau Linux ?

Faire une recherche dans le document Linux Filesystem Hierarchy.

Vérifier que ce répertoire appartient bien au groupe src.

C'est le répertoire /usr/src qui doit accueillir les sources du noyau.

On vérifie que les membres du groupe système src ont bien accès en écriture à ce répertoire.

# chgrp -R src /usr/src

# chmod 2775 /usr/src

Q13.

Quelles sont les commandes «rituelles» d'installation des sources du noyau Linux ?

Pour chaque commande, expliquer les opérations réalisées et justifier le choix des options.

Il faut consulter les ressources suivantes : Debian Linux Kernel Handbook et Manuel de référence Debian - Chapitre 9.

Pour traiter cette question, on utilise le fichier source obtenu à l'aide du gestionnaire de paquets. D'après les documents de référence on doit utiliser la séquence de commandes suivante.

$ cd /usr/src/
$ tar xf linux-source-4.12.tar.xz1
$ ln -s linux-source-4.12 linux2
$ cd linux
$ cp /boot/config-4.12.0-2-686-pae .config3
$ make menuconfig4

1

Extraction de l'arborescence des sources du noyau.

2

Création d'un lien symbolique sur l'arborescence de travail. L'utilisation de ce lien permet de conserver plusieurs arborescences de sources. De cette façon, on peut travailler sur plusieurs versions de noyau.

3

Copie du fichier de configuration fourni avec le paquet de noyau. Ce fichier est réputé fiable puisqu'il correspond au noyau en cours d'exécution et que le système est opérationnel.

Cette opération est optionnelle. En l'absence du fichier .config dans l'arborescence des sources du noyau, la commande suivante procède à la copie de la configuration du noyau courant.

4

Lancement de l'interface des menus de configuration des options du noyau Linux. C'est à ce niveau que les «choses sérieuses» commencent.

La dernière commande n'est utilisable que si le paquet de bibliothèques de développement ncurses est installé. aptitude install libncurses-dev.