Formation en Réseaux et systèmes: Linux - Drivers & Programmation noyau - Ascent Formation
Retour aux formations
Réseaux et systèmes

Linux - Drivers & Programmation noyau

4 jour(s)28h

Description

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

Objectifs pédagogiques

  • 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

Public concerné

Développeurs Linux/Unix

Prérequis

Bases solides sur Linux/Unix
Compétences en programmation C

Déroulé du programme

1

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.
2

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
3

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.
4

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.
5

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.
6

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.
7

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é.
8

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
9

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

Informations

Durée

4 jour(s)

28h

Tarif

2390 € HT

HT