Logo de l'organisme de formation

La formation au coeur de l'avenir technologique

Représentation de la formation : Linux - Drivers & Programmation noyau

Linux - Drivers & Programmation noyau

Formation à distance
Durée : 28 heures (4 jours)
Durée :28 heures (4 jours)
HT
Se préinscrire
Durée :28 heures (4 jours)
HT
Se préinscrire
Durée :28 heures (4 jours)
HT
Se préinscrire

Formation créée le 12/05/2022. Dernière mise à jour le 07/10/2022.

Version du programme : 1

Programme de la formation

Objectif de formation : L'apprenant saura maîtriser le développement de drivers robustes et adaptés aux différentes distributions de Linux

Objectifs de la formation

  • Gérer le développement de pilotes de périphériques
  • Appréhender en détail les mécanismes internes du noyau
  • Développer et incorporer de nouveaux éléments dans le noyau Linux
  • Ecrire un pilote périphérique en mode caractère ou bloc

Profil des bénéficiaires

Pour qui
  • Développeurs Linux/Unix
Prérequis
  • Bases solides sur Linux/Unix
  • Compétences en programmation C

Contenu de la formation

  • Introduction au noyau
    • Tour d'horizon du système et du rôle du noyau
    • Présentation des sites de référence
    • Spécificités des noyaux 3.x et 4.x
    • Cycles de développement du noyau, les patchs
    • Mode de fonctionnement & appels système
    • Organisation des sources
    • Présentation du principe de compilation du noyau et des modules
    • Dépendances & symboles
    • Exportations de symboles
    • Chargement du noyau
    • Travaux pratiques : Compilation et installation d'un noyau 3.x.
  • Présentation des outils utilisables
    • Outils de développement
    • Outils de débogage
    • Environnement de débogage
    • Outil de gestion de version
    • Traçage des appels système
    • Travaux pratiques : installation de l'ensemble des outils et des sources pour la conception d'un module. Paramétrage vers le chargement automatique de module au boot. Déploiement et test de modules simples
  • Gestion des threads & scheduling
    • Tour d'horizon des types de périphériques
    • Fonctionnement du noyau & protection des variables globales
    • Représentation des threads
    • Contexte d'exécution
    • Scheduler de Linux et la préemption
    • Création d'un thread noyau
    • Travaux pratiques : conception d'un module de création de thread noyau lors de l'insertion et déchargement lors du rmmod. Ecriture d'un module d'horodatage d'événements à haute précision. Ecriture d'un module d'information sur les structures internes des processus.
  • Gestion de la mémoire & du temps et de proc
    • Gestion et organisation mémoire pour les architectures UMA et NUMA
    • Espace d'adressage utilisateur et noyau
    • Gestion de pages à la demande
    • Allocations mémoire, buddy allocator, kmalloc, slabs et pools mémoire
    • Gestion des accès à la mémoire
    • Problèmes liés à la sur-réservation de la mémoire
    • Gestion de la mémoire sur x86 et ARM, utilisation des Hugepages
    • Optimisation des appels systèmes
    • Synchronisations & attentes dans le noyau
    • Ticks & Jiffies dans Linux
    • Horloge temps réel, RTC (real Time Clock), implémentation des timers
    • Interface timers haute résolution & estampilles
    • Outils spécifiques au noyau, listes chaînées, kfifo et container_of
    • Interface noyau avec /proc par le procfs
    • Travaux pratiques : Usage des timers et des estampilles & implémentation d'un accès au procfs. Mise en œuvre de l'allocation mémoire dans le noyau et optimisation à l'aide des slabs.
  • Périphérique en mode caractère
    • Conception de pilotes de périphériques caractère
    • Virtual File System
    • Méthodes associées aux périphériques caractères
    • Gestion des interruptions DMA & accès au matériel
    • Enregistrement des pilotes de périphériques de type caractère et optimisations
    • Travaux pratiques : rédaction progressive d'un pilote périphérique en mode caractère. Implémentation des synchronisations d'entrée-sortie entre threads et avec la routine d'interruption. Implémentation de l'allocation mémoire.
  • Linux Driver Framework - sysfs
    • Introduction au framework
    • Les objets drivers, device driver, bus et class
    • Utilisation et génération des attributs présentés dans le sysfs
    • Interface avec le hotplug, méthodes match, probe et release
    • Gestion du firmware
    • Gestion de l'énergie, méthodes de gestion de l'énergie
    • Travaux pratiques : implémentation d'un bus, d'un driver et d'un device driver. Adaptation du pilote de périphériques caractère. Exemple d'utilisation de l'interface.
  • Périphérique en mode bloc et systèmes de fichiers
    • Principe des périphériques en mode bloc & enregistrement du driver
    • Callback de lecture et écriture & support du formatage et opérations avancées
    • Présentation de l'ordonnanceur des entrées-sorties par bloc du noyau
    • Conception des systèmes de fichiers
    • Enregistrement d'un nouveau système de fichiers
    • Travaux pratiques : exemple de pilote complet de périphérique virtuel. Exemple d'un système de fichiers personnalisé.
  • Interfaces et protocoles réseau
    • Gestion des interfaces réseau sous Linux
    • Utilisation des skbuff
    • Les hooks netfilter
    • Intégration d'un protocole
    • Travaux pratiques : exemple de driver réseau pour périphérique virtuel & implémentation de protocole réseau
  • Drivers pour périphériques USB
    • Principe des périphériques USB & interface avec le module USB-core
    • Interaction du périphérique avec le noyau Linux
    • Construction d'un URB (USB Request Block)
    • Les gadgets USB
    • Travaux pratiques : enregistrement d'un driver USB & écriture d'un driver en mode isochrone
Équipe pédagogique

Professionnel expert technique et pédagogique.

Suivi de l'exécution et évaluation des résultats
  • Feuilles de présence.
  • Questions orales ou écrites (QCM).
  • Mises en situation.
  • Formulaires d'évaluation de la formation.
  • Certificat de réalisation de l’action de formation.
Ressources techniques et pédagogiques
  • Espace numérique de travail
  • Documents supports de formation projetés
  • Exposés théoriques
  • Etude de cas concrets
  • Quiz en salle
  • Mise à disposition en ligne de documents supports à la suite de la formation

Qualité et satisfaction

Taux de satisfaction des apprenants, nombre d'apprenants, taux et causes des abandons, taux de retour des enquêtes, taux d'interruption en cours de prestation...