Linux - Drivers & Programmation noyau
0/10
(0 avis)
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...
0/10
(0 avis)