2 points par GN⁺ 2024-07-28 | 1 commentaires | Partager sur WhatsApp

Introduction

Auteur

  • Le Linux Kernel Module Programming Guide a été initialement rédigé par Ori Pomerantz pour Linux v2.2
  • Mis à jour par Peter Jay Salzman pour Linux v2.4
  • Co-maintenu par Michael Burian pour Linux v2.6
  • Exemples mis à jour par Bob Mottram pour les versions à partir de Linux v3.8
  • Mise à jour vers les versions récentes de Linux (v5.0 et plus) et corrections de la documentation LaTeX par Jim Huang

Remerciements

  • Plusieurs contributeurs ont fourni des corrections et des suggestions

Qu’est-ce qu’un module du noyau ?

  • Un module du noyau Linux est un segment de code qui peut être chargé et déchargé dynamiquement dans le noyau selon les besoins
  • Les modules du noyau permettent d’étendre les fonctionnalités du noyau sans redémarrer le système
  • Sans modules, il faudrait reconstruire le noyau et redémarrer le système à chaque ajout de nouvelle fonctionnalité

Paquets de modules du noyau

  • Ubuntu/Debian: sudo apt-get install build-essential kmod
  • Arch Linux: sudo pacman -S gcc kmod

Quels modules sont présents dans mon noyau ?

  • La commande lsmod permet de voir les modules actuellement chargés dans le noyau
  • Il est aussi possible de les consulter dans le fichier /proc/modules

Faut-il télécharger et compiler le noyau ?

  • Il n’est pas nécessaire de télécharger et compiler le noyau pour suivre ce guide
  • Il est plus sûr d’exécuter les exemples sur une distribution de test

Avant de commencer

  • Points d’attention concernant la gestion des versions des modules, l’utilisation de X Window System, SecureBoot, etc.

En-têtes

  • Il est nécessaire d’installer les fichiers d’en-tête du noyau
  • Ubuntu/Debian: sudo apt-get install kmod linux-headers-$(uname -r)
  • Arch Linux: sudo pacman -S linux-headers
  • Fedora: sudo dnf install kernel-devel kernel-headers

Exemples

  • Tous les exemples se trouvent dans le sous-répertoire examples de la documentation

Hello World

Le module le plus simple

  • Création et compilation du fichier hello-1.c
  • Explication de la manière de charger et décharger le module

Hello et Goodbye

  • Exemple d’utilisation des macros module_init et module_exit

Macros __init et __exit

  • La macro __init libère la mémoire une fois la fonction d’initialisation terminée
  • La macro __exit omet la fonction lorsque le module est intégré au noyau

Licence et documentation du module

  • Utilisation de la macro MODULE_LICENSE pour définir la licence du module
  • Exemples d’utilisation des macros MODULE_AUTHOR et MODULE_DESCRIPTION

Passage d’arguments en ligne de commande

  • Utilisation de la macro module_param pour transmettre des arguments en ligne de commande au module
  • Utilisation de la macro MODULE_PARM_DESC pour ajouter une description des arguments

Modules répartis sur plusieurs fichiers

  • Exemple de module du noyau réparti sur plusieurs fichiers source

Construction de modules pour un noyau précompilé

  • Explication de la méthode de construction de modules pour un noyau précompilé

Résumé de GN⁺

  • Ce guide est une présentation complète de la programmation des modules du noyau Linux, couvrant avec de nombreux exemples les concepts de base comme les sujets avancés
  • Les modules du noyau permettent d’étendre les fonctionnalités du système sans redémarrage, ce qui constitue un avantage majeur pour les développeurs
  • Il est important de bien comprendre et respecter les points d’attention liés à la gestion des versions des modules, à SecureBoot, etc.
  • Parmi les projets liés figurent Linux Device Drivers et The Linux Programming Interface

1 commentaires

 
GN⁺ 2024-07-28
Avis Hacker News
  • Certains estiment que l’exemple « Detecting button presses » est difficile, car il faut compiler un module RPi
    • qemu est une bonne façon de se faire la main sur le kernel hacking
  • Certains estiment que la Linux Foundation devrait financer la mise à jour de LDD (linux device driver) et des livres sur le noyau Linux
  • Retour d’expérience d’un utilisateur qui dit l’avoir lu pour la première fois il y a 22 ans
  • Des nouvelles indiquent que la dernière mise à jour du livre The Linux Memory Manager date de début juillet et qu’il est actuellement en cours d’édition
  • Questions générales sur la programmation du noyau Linux, par exemple sur le hacking de systèmes de fichiers ou de la gestion mémoire
    • Il y avait le livre « Linux Kernel Development » de Robert Love, mais il n’est probablement plus mis à jour
  • Éloges pour ce tutoriel détaillé et très pratique sur la compilation directe de modules du noyau
  • Question sur le fait de savoir si l’auteur a utilisé un LLM pour rédiger ou améliorer le texte