OpenEdge-labs trainings
  • OpenEdge-labs trainings
  • Thématiques
    • Cloud
      • Administration Openstack
      • Administration Openstack-avancé
      • Développement sur OpenStack
      • Openshift:Déploiement, administration, sécurisation et monitoring
    • Virtualisation
      • XCP-NG
      • Open Nebula
    • Systèmes
      • Monitoring-observabilite
        • Outils
          • monitoring
            • Prometheus
            • Victoria Metrics
            • Nagios XI pour Administrateurs
          • Observabilite
            • Opentelemetry-initiation
            • OpenTelemetry: approfondissement
            • Jaeger
            • eBPF-observabilité
            • LGTM stack
            • Grafana-Initiation
            • Grafana-approfondissement
            • Loki-initiation
            • Loki-approfondissement
        • Méthodologies
          • Stratégie d'incident management: monitoring à l'autoremédiation
          • Datavisualisation avec Grafana
          • Continuous Profiling
          • Auto-remédiation – Automatisation des Processus de Remédiation
      • Linux
        • Parcours développeur(TD)
          • Développement de Scripts et Automatisation sur Linux/Unix
          • Programmation Système Avancée sur Unix/Linux
          • Sécurité des Applications sur Unix/Linux
          • Développement et le Déploiement d'Applications Cloud-Native sur Linux
          • Linux, Drivers et Programmation Noyau
        • Parcours administrateur
          • Optimisation et le Tuning des Performances sur Linux/Unix
          • Sécurité avancée sur Linux
        • Parcours architecte(TD)
          • Conception d'Architectures Résilientes sur Linux/Unix
          • Conception d'Architectures Cloud et Hybrid Cloud sur Linux/Unix
    • Stockage
      • Etat de l’art-Systèmes de stockage open source
      • Migration vers un système de stockage open source
      • Glusterfs
      • Ceph
      • Sécurisation d'un système de stockage Open Source
    • Data
      • Opensearch
      • Opensearch-administration avancée
      • Dataviz open source
      • Kafka
      • Cassandra
    • Cloud native
      • Observabilité Avancée avec OpenTelemetry et Jaeger
      • Chaos Engineering et Résilience des Applications
      • Polyglot Persistence dans les Applications Cloud Native
      • Développement d'Architectures Serverless Open Source
      • Cloud Native Security – Zero Trust et Au-delà
      • Formation Avancée sur le Développement d'Architectures Serverless Open Source
    • IOT
      • Introduction à l'IoT
      • Analytique et Big Data pour l'IoT avec des Outils Open Source
      • Blockchain pour l'IoT avec des Technologies Open Source
      • Développement de Solutions IoT avec MicroPython et ESP8266/ESP32
      • Edge Computing avec Open Source IoT
      • Sécurité IoT avec des Outils Open Source
    • Devops
      • GitLab - Administration, CI/CD, et Gestion de Projets
      • Ingénierie de la Performance et la Planification de la Capacité
    • IA
      • Initiation à l'Intelligence Artificielle pour les Dirigeants
      • Transformation Digitale et Intelligence Artificielle (IA) pour les DSI
      • Gestion des Risques et Sécurité en IA
      • Applications Stratégiques de l'IA pour les Dirigeants
      • Intelligence Artificielle et Éthique pour les Décideurs
      • IA et Data Science pour les DSI
      • Analyse des Coûts et ROI des Projets IA
      • Stratégies d'Adoption de l'IA Open Source pour les DSI
      • Développement et Déploiement d'Applications IA Open Source
    • Edge computing
      • Développement de Solutions Edge Computing avec Open Source
      • Edge Computing pour l'IoT avec Open Source
      • Edge Computing et Conteneurisation avec Docker et Kubernetes Open Source
    • Industrie4.0
      • Parcours modulaire
      • Introduction à l'Industrie 4.0 et Sécurité Numérique
      • Architecte en Solutions IIoT et Cybersécurité Industrielle
      • Intelligence Artificielle, Cybersécurité et Digitalisation des Processus
      • Jumeau Numérique, Simulation et Sécurité
    • AIOPS(Disponible Juin 2025)
    • Cybersecurite
      • Cybersecurite industrielle
        • Parcours modulaire Cybersécurité industrielle
      • Cybersecurite-gouvernance
  • PARCOURS spécialisés de formations
    • Incident Management 360° : Stratégie, Résilience et Optimisation
    • Spécialisation Industrie 4.0
    • Cybersecurite
    • Expert en Virtualisation Open Source
Powered by GitBook
On this page
  1. Thématiques
  2. Systèmes
  3. Linux
  4. Parcours développeur(TD)

Linux, Drivers et Programmation Noyau

Plan de Formation :

Objectifs de la Formation

  • Acquérir une compréhension approfondie de l'architecture du noyau Linux et de ses composants.

  • Apprendre à développer, déboguer et déployer des drivers sous Linux.

  • Maîtriser les concepts avancés de programmation noyau pour étendre et optimiser les fonctionnalités du système.

  • Développer des compétences pratiques à travers des cas pratiques et des laboratoires.

Public Cible

  • Développeurs systèmes et administrateurs Linux souhaitant se spécialiser dans le développement de drivers et la programmation noyau.

  • Ingénieurs logiciels travaillant sur des projets nécessitant une interaction directe avec le matériel.

  • Toute personne intéressée par la compréhension des mécanismes internes de Linux et par le développement au niveau du noyau.

Prérequis

  • Bonne maîtrise de l'administration Linux.

  • Connaissance avancée de la programmation en C.

  • Connaissance de base de l'architecture des systèmes d'exploitation.


Module 1 : Introduction au Noyau Linux

1.1. Architecture et Concepts du Noyau Linux

  • Structure du noyau Linux : Monolithique, modulaire, micro-noyaux.

  • Les composants du noyau : gestion des processus, gestion de la mémoire, systèmes de fichiers, gestion des périphériques.

  • Les espaces utilisateur et noyau : interactions et transitions.

1.2. Compilation et Personnalisation du Noyau

  • Téléchargement, configuration et compilation du noyau Linux.

  • Introduction aux options de configuration (make menuconfig).

  • Compilation de modules noyau séparés (out-of-tree modules).

1.3. Outils et Environnement de Développement

  • Configuration de l'environnement de développement noyau (utilisation de QEMU pour les tests, GDB pour le débogage).

  • Introduction aux outils de débogage et de traçage (dmesg, strace, ftrace).

Cas Pratique 1 : Compilation et Installation d'un Noyau Personnalisé

  • Téléchargement et configuration du code source du noyau Linux.

  • Compilation et installation d'un noyau personnalisé sur une machine virtuelle ou physique.

  • Test du noyau personnalisé et analyse des messages d'amorçage (boot logs).


Module 2 : Programmation des Modules Noyau

2.1. Introduction aux Modules Noyau

  • Qu'est-ce qu'un module noyau ? (chargement dynamique, modules intégrés).

  • Structure d'un module noyau : initialisation, exécution, et nettoyage.

  • Gestion des symboles exportés et des dépendances entre modules.

2.2. Écriture de Modules Noyau Simples

  • Écriture d'un module "Hello World" pour le noyau Linux.

  • Compilation et insertion d'un module (insmod, rmmod, modprobe).

  • Utilisation de dmesg pour lire les logs générés par les modules.

2.3. Interaction des Modules avec les Systèmes de Fichiers et les Périphériques

  • Utilisation des interfaces noyau pour l'accès aux périphériques (/dev, ioctl).

  • Introduction aux concepts de major et minor numbers pour les périphériques.

  • Gestion des appels système personnalisés dans les modules.

Lab 1 : Développement et Déploiement d'un Module Noyau Simple

  • Écriture, compilation et chargement d'un module noyau qui interagit avec un périphérique simple (ex. : LED, bouton).

  • Utilisation des interfaces noyau pour lire et écrire des données dans le module.


Module 3 : Développement de Drivers sous Linux

3.1. Concepts de Base des Drivers Linux

  • Qu'est-ce qu'un driver sous Linux ? Types de drivers : caractères, blocs, réseaux, USB, etc.

  • Gestion des interruptions, accès aux registres, et gestion des DMA.

  • Interaction entre les drivers et le noyau Linux.

3.2. Écriture d'un Driver de Périphérique de Caractères

  • Structure d'un driver de caractères sous Linux.

  • Utilisation des interfaces noyau pour enregistrer un driver (register_chrdev, unregister_chrdev).

  • Gestion des opérations de lecture et d'écriture avec les périphériques de caractères.

3.3. Gestion des Interruptions dans les Drivers

  • Comprendre et gérer les interruptions matérielles.

  • Inscription et gestion des gestionnaires d'interruptions (request_irq, free_irq).

  • Synchronisation dans le noyau : spinlocks, mutex, et sémaphores.

Lab 2 : Développement d'un Driver de Périphérique de Caractères

  • Écriture d'un driver simple pour un périphérique de caractères (ex. : générateur de nombres aléatoires).

  • Gestion des interruptions et traitement des données dans le driver.


Module 4 : Drivers Avancés : Blocs, USB et Réseaux

4.1. Développement de Drivers de Blocs

  • Concepts des systèmes de fichiers et des périphériques de blocs.

  • Gestion des opérations de lecture/écriture pour les périphériques de blocs.

  • Introduction aux buffers et à la gestion de cache pour les périphériques de blocs.

4.2. Développement de Drivers USB

  • Architecture du sous-système USB dans le noyau Linux.

  • Écriture de drivers USB simples : détection, configuration et transfert de données.

  • Gestion des classes USB et communication avec les périphériques.

4.3. Développement de Drivers Réseaux

  • Introduction au sous-système réseau du noyau Linux.

  • Écriture d'un driver pour une interface réseau virtuelle.

  • Gestion des paquets réseau, des protocoles et de la pile TCP/IP dans le noyau.

Lab 3 : Développement d'un Driver de Périphérique de Blocs ou USB

  • Écriture d'un driver pour un périphérique de stockage USB ou un périphérique de blocs virtuel.

  • Gestion des opérations d'I/O et traitement des requêtes de lecture/écriture.


Module 5 : Programmation Avancée du Noyau

5.1. Appels Système et Modifications du Noyau

  • Comprendre et implémenter de nouveaux appels système dans le noyau.

  • Interception et redirection des appels système existants (hooking).

  • Gestion des permissions et sécurité dans les appels système.

5.2. Communication Inter-Processus dans le Noyau

  • Introduction aux mécanismes de communication inter-processus (IPC) dans le noyau.

  • Utilisation des files d'attente, des sémaphores et des signaux dans les modules noyau.

  • Gestion des sockets noyau pour la communication réseau.

5.3. Débogage et Analyse du Noyau

  • Utilisation de GDB pour le débogage des modules noyau.

  • Analyse des panics noyau et des crash dumps avec kexec et kdump.

  • Introduction aux outils de profilage pour le noyau (perf, ftrace).

Lab 4 : Implémentation d'un Appel Système Personnalisé

  • Développement d'un nouvel appel système pour le noyau Linux.

  • Test de l'appel système via un programme utilisateur et analyse des résultats.


Module 6 : Sécurité et Protection dans le Noyau Linux

6.1. Introduction à la Sécurité dans le Noyau

  • Principes de sécurité dans le noyau Linux.

  • Introduction à SELinux, AppArmor, et aux modules de sécurité du noyau.

6.2. Écriture de Modules de Sécurité

  • Développement de modules LSM (Linux Security Modules) pour renforcer la sécurité.

  • Gestion des hooks de sécurité et des politiques personnalisées.

6.3. Protection des Drivers et du Noyau

  • Techniques de protection contre les attaques sur les drivers (buffer overflow, rootkits).

  • Utilisation des outils de durcissement du noyau : Grsecurity, PaX.

Lab 5 : Développement d'un Module de Sécurité Basique

  • Écriture d'un module LSM simple pour surveiller et restreindre certaines actions système.

  • Déploiement et test du module sur un système Linux sécurisé.


Module 7 : Cas Pratiques et Projets de Fin de Formation

7.1. Études de Cas et Problèmes Réels

  • Analyse de cas réels de développement de drivers et de programmation noyau.

  • Discussion et résolution des défis techniques rencontrés.

7.2. Simulation de Scénarios Complexes

  • Développement et débogage d'un module noyau complexe intégrant plusieurs sous-systèmes (I/O, réseau, mémoire).

  • Optimisation du code noyau pour des performances et une sécurité accrues.

7.3. Projet Final : Développement d'un Driver ou d'une Extension Noyau

  • Choix d'un projet personnalisé (développement d'un driver, implémentation d'une fonctionnalité noyau spécifique).

  • Présentation du projet, explication des choix de conception et démonstration du fonctionnement.


Conclusion et Certification

  • Résumé des compétences acquises pendant la formation.

  • Discussion sur les tendances futures de la programmation noyau et des drivers sous Linux.

  • Évaluation finale et remise de la certification pour les participants ayant complété le cours avec succès.


PreviousDéveloppement et le Déploiement d'Applications Cloud-Native sur LinuxNextParcours administrateur

Last updated 1 month ago