FreeBSD Device Drivers
Des premiers pas à la maîtrise du noyau
par Edson Brandi · Version 2.0 (Avril 2026)
À propos de ce livre
FreeBSD Device Drivers : Des premiers pas à la maîtrise du noyau est un livre gratuit et open source qui vous emmène de « Je n’ai jamais écrit de code dans le noyau » à « Je sais écrire, déboguer et soumettre des pilotes FreeBSD de qualité professionnelle ». Il s’agit davantage d’un cours guidé que d’une référence, structuré autour de 38 chapitres, 6 annexes et des dizaines de laboratoires pratiques qui se compilent et se chargent sur un vrai système FreeBSD 14.x.
Le livre s’adresse à des lecteurs qui sont prêts à apprendre plutôt que déjà qualifiés. Il commence par les fondamentaux d’UNIX et du langage C, avance pas à pas à travers chaque concept que le noyau exigera de vous, et seulement ensuite ouvre la porte au développement de pilotes. Quand vous arriverez à la DMA, aux interruptions et au travail avec PCI, le vocabulaire vous semblera acquis, non imposé.
« La programmation du noyau reste de la programmation, seulement avec des règles plus explicites, plus de responsabilités et un peu plus de pouvoir. Une fois que vous comprenez cela, la peur laisse place à l’enthousiasme. » (extrait du chapitre 1)
Pourquoi ce livre ?
Il existe déjà d’excellentes références sur le noyau FreeBSD, notamment man 9, le Architecture Handbook et les articles sur Newbus. Ce qui manquait, c’est un texte unique qui :
- Part de zéro. UNIX, C et l’environnement FreeBSD sont enseignés avant qu’aucun code noyau ne soit écrit.
- Cible spécifiquement FreeBSD 14.x. Chaque API, chaque exemple, chaque laboratoire a été vérifié par rapport à l’arborescence source de FreeBSD 14.3.
- Traite les laboratoires comme des éléments de première classe. Environ la moitié du temps d’étude recommandé est pratique. Les mêmes motifs (attachement, nettoyage, verrouillage) reviennent dans tous les chapitres jusqu’à devenir un réflexe.
- Construit un pilote tout au long du livre. Le pilote
myfirst évolue chapitre après chapitre, gagnant la synchronisation, puis l’accès au matériel, puis les interruptions, puis la DMA. Vous voyez le même code mûrir entre vos mains.
- Couvre l’intégralité du cycle de vie. De « Bonjour, module noyau » jusqu’à la soumission d’une revue sur Phabricator et l’intégration d’un pilote dans l’arbre FreeBSD.
À qui s’adresse ce livre
- Les débutants qui connaissent peu le C, UNIX ou les noyaux mais sont prêts à apprendre.
- Les développeurs curieux de comprendre comment les systèmes d’exploitation fonctionnent réellement sous le capot.
- Les professionnels qui utilisent déjà FreeBSD (ou des systèmes similaires) et souhaitent approfondir leurs connaissances en apprenant comment les pilotes sont construits en pratique.
À qui ce livre ne s’adresse pas
- Aux lecteurs qui cherchent un manuel prêt à copier-coller. Le livre privilégie la compréhension aux raccourcis.
- Aux développeurs noyau aguerris qui n’ont pas besoin des bases. Le rythme part des fondations.
- Aux lecteurs souhaitant une référence matérielle encyclopédique. L’accent est mis sur le développement de pilotes FreeBSD dans le monde réel, pas sur des spécifications exhaustives de bus ou de périphériques.
Ce que vous apprendrez
Le livre est organisé en sept parties qui s’appuient les unes sur les autres :
| Partie | Titre | Objectif |
|---|
| 1 | Fondations : FreeBSD, C et le noyau | Configuration du laboratoire, UNIX, C pour le noyau, anatomie d’un pilote |
| 2 | Construire votre premier pilote | Pilotes caractère, fichiers de périphérique, lecture/écriture, E/S |
| 3 | Concurrence et synchronisation | Threads, mutex, condvars, temporisateurs, taskqueues, sémaphores |
| 4 | Intégration matérielle et au niveau de la plateforme | PCI, interruptions, MSI/MSI-X, DMA, gestion d’énergie |
| 5 | Débogage, outils et pratiques du monde réel | Trace, KGDB, débogage avancé, réglage des performances |
| 6 | Écrire des pilotes spécifiques à un transport | USB, série, stockage/VFS, pilotes réseau |
| 7 | Sujets de maîtrise : scénarios particuliers et cas limites | Portabilité, virtualisation, sécurité, embarqué, rétro-ingénierie, soumission en amont |
À la fin, vous aurez écrit et chargé vos propres modules noyau, construit un pilote de type caractère, géré de vraies interruptions et de la DMA, débogué des paniques noyau, profilé votre pilote sous charge et parcouru chaque étape de contribution de votre travail au projet FreeBSD.
Statistiques du livre
| |
|---|
| Pages | 4 500+ |
| Chapitres | 38 |
| Annexes | 6 |
| Temps de lecture | ~100 heures |
| Temps de laboratoire | ~100 heures |
| Temps d’étude total | ~200 heures (≈6 mois à 5 h/semaine) |
| Version cible de FreeBSD | 14.3 |
| Langues | Anglais (original) · Portugais brésilien (traduit par IA) · Espagnol (traduit par IA) |
| Formats | PDF · EPUB · HTML · Source Markdown |
Table des matières complète
Cliquez pour développer la liste complète des chapitres
Partie 1 : Fondations de FreeBSD, C et le noyau
- Introduction : De la curiosité à la contribution
- Configuration de votre laboratoire
- Une douce introduction à UNIX
- Un premier regard sur le langage C
- Comprendre le C pour la programmation du noyau FreeBSD
- L’anatomie d’un pilote FreeBSD
Partie 2 : Construire votre premier pilote
- Écrire votre premier pilote
- Travailler avec les fichiers de périphérique
- Lire et écrire sur des périphériques
- Gérer efficacement les entrées et sorties
Partie 3 : Concurrence et synchronisation
- Concurrence dans les pilotes
- Mécanismes de synchronisation
- Temporisateurs et travaux différés
- Taskqueues et travaux différés
- Plus de synchronisation : conditions, sémaphores et coordination
- Accéder au matériel
- Simuler du matériel
- Écrire un pilote PCI
- Gérer les interruptions
- Gestion avancée des interruptions
- DMA et transfert de données à haute vitesse
- Gestion d’énergie
Partie 5 : Débogage, outils et pratiques du monde réel
- Débogage et trace
- Intégration avec le noyau
- Sujets avancés et conseils pratiques
Partie 6 : Écrire des pilotes spécifiques à un transport
- Pilotes USB et série
- Travailler avec les périphériques de stockage et la couche VFS
- Écrire un pilote réseau
Partie 7 : Sujets de maîtrise
- Portabilité et abstraction des pilotes
- Virtualisation et conteneurisation
- Bonnes pratiques de sécurité
- Device Tree et développement embarqué
- Réglage des performances et profilage
- Techniques avancées de débogage
- E/S asynchrones et gestion des événements
- Créer des pilotes sans documentation (rétro-ingénierie)
- Soumettre votre pilote au projet FreeBSD
- Dernières réflexions et prochaines étapes