> formation Technologies numériques > formation Systèmes d'exploitation > formation Linux, Unix, Mac OS > formation Linux, drivers et programmation noyau

Avis loadedNote : 4,6Length : 10TotalNote : 185TotalNote20 : 8
Toutes nos formations Linux, Unix, Mac OS

Formation Linux, drivers et programmation noyau

4,6 / 5
Stage pratique
Durée : 4 jours
Réf : LDI
Prix  2021 : 2550 € H.T.
Pauses et déjeuners offerts
  • Programme
  • Participants / Prérequis
  • Intra / sur-mesure
  • avis clients
Programme

Cette formation vous permettra de maîtriser le développement de pilotes de périphériques (drivers) robustes et adaptés aux différentes distributions de Linux. Vous verrez les différents types de périphériques, la gestion de la mémoire, l'implémentation de protocole réseau ainsi que les périphériques USB.

Objectifs pédagogiques

À l’issue de la formation, le participant sera en mesure de :
  • Maîtriser le développement de pilotes de périphériques
  • Comprendre en détail les mécanismes internes du noyau
  • Savoir développer et intégrer de nouveaux éléments dans le noyau Linux
  • Ecrire un pilote périphérique en mode caractère ou bloc

Travaux pratiques

Les nombreux exercices et études de cas progressifs seront réalisés sur un réseau de serveurs Linux. Tous les programmes réalisés en TP existent sous forme de squelettes que les participants complètent eux-mêmes.
PROGRAMME DE FORMATION

Présentation du noyau

  • Vue d'ensemble du système et rôle du noyau.
  • Les 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 (superviseur et utilisateur). Appels système.
  • Organisation des sources (Include/linux, Arch, Kernel, Documentation...).
  • Principe de compilation du noyau et des modules.
  • Les dépendances et symboles.
  • Les exportations de symboles.
  • Le chargement du noyau (support, argument...).

Travaux pratiques
Compilation et installation d'un noyau 3.x.

Les outils utilisables

  • Outils de développement (Gcc, Kbuild, Kconfig et Makefile...).
  • Outils de débogage (GDB, KGDB, ftrace...).
  • Environnement de débogage (Linux Trace Toolkit...).
  • Outil de gestion de version (Git...).
  • Tracer les appels système (ptrace...).

Travaux pratiques
Installer l'ensemble des outils et des sources pour générer un module pour le noyau. Configurer le système pour effectuer le chargement automatique de module au boot. Ecriture et test de modules simples.

Gestion des threads, scheduling

  • Les différents types de périphériques.
  • Contextes de fonctionnement du noyau. Protection des variables globales.
  • Représentation des threads (état, structure task_stru, thread_info...).
  • Les threads, contexte d'exécution.
  • Le scheduler de Linux et la préemption.
  • Création d'un thread noyau (kthread_create, wakeup_process...).

Travaux pratiques
Créer un module qui crée un thread noyau lors de l'insertion et le décharge 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

  • L'organisation mémoire pour les architectures UMA et NUMA.
  • L'espace d'adressage utilisateur et noyau.
  • La gestion de pages à la demande (demand paging).
  • Allocations mémoire, buddy allocator, kmalloc, slabs et pools mémoire.
  • La gestion des accès à la mémoire (les caches et la MMU).
  • Les 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 (IAPX32, VDSO).
  • Synchronisations et attentes dans le noyau, waitqueues, mutex et les completions.
  • Les ticks et les jiffies dans Linux.
  • L'horloge temps réel, RTC (real Time Clock), implémentation des timers.
  • Interface timers haute résolution, estampilles.
  • Les outils spécifiques au noyau, listes chaînées, kfifo et container_of.
  • L'interface noyau avec /proc par le procfs.

Travaux pratiques
Utilisation 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

  • Ecriture de pilotes de périphériques caractère.
  • Le VFS (Virtual File System).
  • Les méthodes associées aux périphériques caractères.
  • Gestion des interruptions DMA et accès au matériel.
  • Enregistrement des pilotes de périphériques de type caractère et optimisations.

Travaux pratiques
Ecriture 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

  • Présentation du framework, kobject, kset et kref.
  • 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.
  • 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. Ecriture d'un driver en mode isochrone.

Participants / Prérequis

» Participants

Développeurs Linux/Unix.

» Prérequis

Bonnes connaissances de Linux/Unix et de la programmation C.
Intra / sur-mesure

Demande de devis intra-entreprise
(réponse sous 48h)

Vos coordonnées

En cochant cette case, j’atteste avoir lu et accepté les conditions liées à l’usage de mes données dans le cadre de la réglementation sur la protection des données à caractère personnel (RGPD).
Vous pouvez à tout moment modifier l’usage de vos données et exercer vos droits en envoyant un email à l’adresse rgpd@orsys.fr
En cochant cette case, j’accepte de recevoir les communications à vocation commerciale et promotionnelle de la part d’ORSYS Formation*
Vous pouvez à tout moment vous désinscrire en utilisant le lien de désabonnement inclus dans nos communications.
* Les participants inscrits à nos sessions de formation sont également susceptibles de recevoir nos communications avec la possibilité de se désabonner à tout moment.
Avis clients
picto avis clients
BACHIR M. 05/07/2021
5 / 5
supports bien fournis et facilitant la compréhension, bon rythme

STANISLAS R. 05/07/2021
5 / 5
Très bien

F E. 08/06/2021
5 / 5
Enfin une formation intéressante avec un formateur compétent chez Orsys ! (c’est la première fois que ça m’arrive en 3 formations) Cours très intéressant et de bon niveau. Seuls problèmes : - le rythme a améliorer : 2.5 jours sans réellement avancer puis 1.5 jours où on va trop vite sans vraiment manipuler - (quasiment) aucun exercice à faire soi-même

JORIS . 08/06/2021
5 / 5
Contenu très dense et très enrichissant.

KIÉRAN M. 04/05/2021
4 / 5
Matériel de cours correct mais peut être amélioré (que des slides) Les exercices sont peut nombreux ou trop complexe. Pas de prise en main pas à pas.

ADÈLE J. 04/05/2021
5 / 5
Idée pour améliorer la parti pratique : des exercices avec des codes source à trous pour que l’on manipule un peu plus les fonctions utiles au developpment driver plus tôt dans la formation

THOMAS D. 28/04/2021
5 / 5
Très intéressant et intervenant très pédagogue

JORDAN S. 28/04/2021
5 / 5
-*

CHRISTOPHE G. 08/12/2020
5 / 5
Excellent, bien équilibré theorie - pratique - formateur passionné et trés compétent.

JULIEN H. 15/09/2020
3 / 5
La formation est trop courte par rapport au nombre de sujets à aborder, obligeant le formateur à survoler beaucoup de chapitres et donnant une impression de flou. Un support détaillé pour les exercices serait le bienvenu pour faciliter l’apprentissage.
Avis clients 4,6 / 5

Les avis clients sont issus des feuilles d’évaluation de fin de formation. La note est calculée à partir de l’ensemble des avis datant de moins de 12 mois.

CLASSE A DISTANCE

En inter et en intra-entreprise
Inscrivez-vous ou contactez-nous !

Pour vous inscrire

Cliquez sur la ville, puis sur la date de votre choix.
[+]
CLASSE A DISTANCE
[+]
PARIS

Horaires

Les cours ont lieu de 9h à 12h30 et de 14h à 17h30.
Les participants sont accueillis à partir de 8h45.
Pour les stages pratiques de 4 ou 5 jours, les sessions se terminent à 15h30 le dernier jour.