Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
FDD-book — Livre sur les pilotes de périphériques FreeBSD | Kitploit
Outils/GitHubGitHub/ebrandi/fdd-book
Sécurité des Systèmes EmbarquésRétro-ingénierieDébogueursHacking MatérielSécurité MatérielleApprentissage et ÉducationParcours et CoursAnalyse de MicrologicielLabs et Pratique
GitHubebrandi/fdd-book

FDD-book

Livre sur les pilotes de périphériques FreeBSD

600507il y a 1 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

Couverture du livre FreeBSD Device Drivers

FreeBSD Device Drivers

Des premiers pas à la maîtrise du noyau

par Edson Brandi · Version 2.0 (Avril 2026)

Licence FreeBSD Pages Statut Langues


À 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 :

À 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

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

  1. Introduction : De la curiosité à la contribution
  2. Configuration de votre laboratoire
  3. Une douce introduction à UNIX
  4. Un premier regard sur le langage C
  5. Comprendre le C pour la programmation du noyau FreeBSD
  6. L’anatomie d’un pilote FreeBSD

Partie 2 : Construire votre premier pilote

  1. Écrire votre premier pilote
  2. Travailler avec les fichiers de périphérique
  3. Lire et écrire sur des périphériques
  4. Gérer efficacement les entrées et sorties

Partie 3 : Concurrence et synchronisation

  1. Concurrence dans les pilotes
  2. Mécanismes de synchronisation
  3. Temporisateurs et travaux différés
  4. Taskqueues et travaux différés
  5. Plus de synchronisation : conditions, sémaphores et coordination

Partie 4 : Intégration matérielle et au niveau de la plateforme

  1. Accéder au matériel
  2. Simuler du matériel
  3. Écrire un pilote PCI
  4. Gérer les interruptions
  5. Gestion avancée des interruptions
  6. DMA et transfert de données à haute vitesse
  7. Gestion d’énergie

Partie 5 : Débogage, outils et pratiques du monde réel

Comment lire le livre

Le rythme recommandé est d’un chapitre par semaine, pour environ cinq heures d’étude hebdomadaire. Ce programme place le livre entier à portée sur une année académique. Certains chapitres (notamment le chapitre 4 sur le C et les chapitres matériels de la partie 4) s’étendent naturellement sur plusieurs semaines.

Les laboratoires sont fortement recommandés. La programmation du noyau récompense la mémoire musculaire d’une manière que peu de disciplines font. Le même motif d’attachement, la même chaîne de nettoyage et la même forme de verrouillage apparaissent chapitre après chapitre et pilote après pilote. Taper ces motifs, les compiler, les charger dans un noyau en cours d’exécution et les voir échouer intentionnellement est le moyen le plus efficace de les internaliser.

Si vous connaissez déjà le C, UNIX et la forme générale d’un noyau de système d’exploitation, des notes de passage rapide tout au long de la partie 1 vous indiquent quelles sections lire attentivement et lesquelles vous pouvez survoler.

Télécharger le livre

La version 2.0 est disponible dès maintenant sur la page des versions en trois langues et trois formats :

Vous pouvez également parcourir la source Markdown directement dans le répertoire content/, ou construire le livre vous-même avec scripts/build-book.sh.

À propos des traductions

La version anglaise est la version originale et faisant autorité du livre. Les éditions en portugais brésilien et en espagnol ont été traduites par IA et n’ont pas encore bénéficié d’une révision technique humaine complète. Elles sont publiées pour rendre le matériel accessible à davantage de lecteurs, mais peuvent contenir des erreurs de traduction, des formulations maladroites ou des inexactitudes techniques introduites lors de la traduction.

Si quelque chose dans une édition traduite semble peu clair, incohérent ou techniquement douteux, veuillez vous référer à la version anglaise comme source de vérité. L’aide pour la révision et l’amélioration des traductions est la bienvenue (voir Contribuer ci-dessous).

Problèmes connus dans la v2.0

Il s’agit d’une version préliminaire d’un très gros livre. Quelques points à connaître :

  • Certains blocs de code source dans les éditions PDF, EPUB et HTML peuvent dépasser de la page ou s’enrouler de manière maladroite. Ce sont des problèmes de présentation qui seront améliorés dans une version future ; le contenu lui-même est correct.
  • Si un exemple de code est difficile à lire dans l’un des formats rendus, les fichiers Markdown de ce dépôt sont la source de vérité. Ouvrez le fichier correspondant dans content/ pour une version propre.
  • La révision des traductions pt_BR et es_ES est prévue dans un avenir proche, selon le temps libre de l’auteur.

Structure du dépôt```

FDD-book/ ├── content/ # Book content (Markdown) │ ├── chapters/ # Chapters by Part │ └── appendices/ # Appendices A-F ├── examples/ # Source code from the book ├── translations/ │ ├── pt_BR/ # Brazilian Portuguese (AI-translated) │ └── es_ES/ # Spanish (AI-translated) └── scripts/ # Build and utility scripts

root@kitploit:~
## Contribuer

Toutes les contributions sont les bienvenues, qu'il s'agisse de corrections, de clarifications, de nouveaux exemples, de traductions ou de relectures de la part de développeurs FreeBSD et d'apprenants.

### Moyens de contribuer

- **Contenu :** ajouter de nouveaux chapitres, affiner le matériel existant
- **Relecture technique :** vérifier l'exactitude des chapitres par rapport à FreeBSD 14.x
- **Relecture de traduction :** aider à relire et améliorer les éditions traduites par IA **pt_BR** et **es_ES** ; les locuteurs natifs expérimentés en FreeBSD/noyau sont particulièrement bienvenus
- **Nouvelles traductions :** aider à traduire le livre dans une autre langue
- **Code :** améliorer les exemples, les scripts de construction et les outils
- **Signalements :** signaler des bogues, des erreurs factuelles, des passages peu clairs ou des problèmes de formatage

### Signaler un problème

Lors de la soumission d'un problème, veuillez inclure :

- La version linguistique que vous lisiez (`en_US`, `pt_BR`, `es_ES`)
- Le format utilisé (PDF, EPUB, HTML ou Markdown)
- Le chapitre ou la section où le problème apparaît
- Une brève explication du problème, ainsi qu'une correction suggérée si vous en avez une

### Flux de travail

1. Forkez le dépôt
2. Créez une branche : `git checkout -b feature/votre-modification`
3. Effectuez vos modifications et testez la construction avec `scripts/build-book.sh`
4. Commitez avec un message clair : `git commit -m "Chapitre 18 : clarifier le mapping BAR"`
5. Poussez et ouvrez une Pull Request

Quand vous êtes bloqué en lisant le livre, **signaler un problème aide**. Si un passage semble erroné ou qu'un laboratoire échoue de manière inattendue, chaque rapport rend le parcours du prochain lecteur plus fluide.

## Questions fréquentes

### Pourquoi ce livre existe-t-il ?

La réponse honnête est que le projet FreeBSD a besoin de nouveaux contributeurs, et le chemin vers le travail sur le noyau et les pilotes a toujours été plus escarpé qu'il ne le devrait. La plupart des documents existants partent du principe que vous connaissez déjà UNIX, que vous maîtrisez bien le C, que vous savez ce qu'est un bus et que vous savez lire une arborescence source du noyau. Cela fonctionne pour ceux qui sont déjà presque au point. Mais cela n'aide guère le développeur curieux qui souhaite débuter.

L'objectif de ce livre est d'abaisser cette rampe d'accès. Si ne serait-ce qu'un petit nombre de lecteurs le termine et parvient à soumettre des correctifs, à relire du code, à écrire de nouveaux pilotes, ou à devenir éventuellement committer FreeBSD, le livre aura rempli sa mission. **Former la prochaine génération de contributeurs FreeBSD est la raison pour laquelle ce travail a été écrit**.

### Dois-je connaître le C avant de commencer ?

Non. Les chapitres 4 et 5 enseignent le C depuis les bases, en se concentrant sur les parties du langage qui comptent pour le travail sur le noyau (pointeurs, structures, disposition mémoire, préprocesseur et conventions d'appel). Si vous maîtrisez déjà bien le C, des encadrés dans ces chapitres vous indiquent ce qu'il faut survoler et ce qu'il faut lire attentivement.

### Dois-je connaître UNIX ou FreeBSD ?

Non. Le chapitre 2 vous guide à travers l'installation de FreeBSD dans une VM ou sur du matériel physique, et le chapitre 3 présente la ligne de commande UNIX, le système de fichiers, les processus, les permissions et les éditeurs. À la fin de la Partie 1, vous disposerez d'un laboratoire fonctionnel et du vocabulaire pour l'utiliser.

### Ai-je besoin de matériel réel ?

Pour la majeure partie du livre, non. Une machine virtuelle exécutant FreeBSD 14.x suffit pour les fondamentaux, les premiers chapitres sur les pilotes, la concurrence et la synchronisation, ainsi qu'une grande partie du matériel sur le débogage. Le matériel réel devient utile (mais toujours pas strictement nécessaire) lorsque vous abordez les chapitres sur le PCI, les interruptions et la DMA dans la Partie 4. Ces chapitres sont rédigés de manière à ce que les concepts aient du sens même si vous ne les exécutez que dans une VM.

### Cela m'aidera-t-il à écrire des pilotes Linux ?

Indirectement, oui. La discipline de programmation du noyau se transfère très bien : stratégie de verrouillage, gestion mémoire, contexte d'interruption, mappage DMA, différence entre les chemins de code bloquants et non bloquants, ordre défensif de nettoyage. Les API spécifiques diffèrent. Après avoir lu ce livre, vous ne connaîtrez pas le modèle de périphérique Linux, mais vous reconnaîtrez ses problèmes et la forme de ses solutions, et vous pourrez lire *Linux Device Drivers* (LDD) beaucoup plus facilement.

### Pourquoi FreeBSD 14.x spécifiquement ?

Chaque API, chaque exemple et chaque laboratoire a été conçu pour être exécuté sous l'arborescence source de FreeBSD 14.3 et les pages `man 9` correspondantes. En ciblant une version spécifique, le livre peut être précis sur les signatures de fonctions, les emplacements des en-têtes et le comportement. Les concepts survivront longtemps à la version 14.x ; les numéros de lignes exacts et les petits détails des API ne le feront pas, et le livre est honnête à ce sujet.

### S'agit-il d'une publication officielle du projet FreeBSD ?

Non. Il s'agit d'un livre éducatif indépendant sur le développement de pilotes de périphériques FreeBSD. Ce n'est pas une publication officielle du projet FreeBSD. L'auteur est un committer FreeBSD et un membre de l'équipe d'ingénierie de documentation (DocEng), mais le livre reflète son travail et ses opinions, et non une position officielle du projet.

### Combien de temps cela me prendra-t-il réellement ?

Si vous lisez attentivement et faites les laboratoires, prévoyez environ 200 heures de travail total. Cela représente à peu près 100 heures de lecture et 100 heures de travaux pratiques. À cinq heures par semaine, c'est un projet de soirée d'environ six mois ; à dix heures par semaine, un sprint concentré de deux mois. Lire sans faire les laboratoires réduit le temps de moitié environ mais réduit aussi la valeur : la programmation du noyau récompense la mémoire musculaire d'une manière que peu de disciplines font.

### Puis-je sauter les laboratoires ?

Vous le pouvez, mais vous ne devriez probablement pas. Les laboratoires sont l'endroit où la prose devient réflexe. Des motifs comme l'ordre d'attachement, le déroulement du nettoyage et l'acquisition de verrous reviennent dans chaque chapitre, et la seule façon fiable de les intérioriser est de les taper, de les compiler, de les charger dans un noyau en cours d'exécution et de les voir échouer intentionnellement. Les lecteurs qui sautent les laboratoires rapportent une progression qui semble fluide au début, puis qui stagne silencieusement autour de la Partie 3 ou 4.

### Comment contribuer à FreeBSD après avoir lu ce livre ?

Le chapitre 37 couvre le flux de travail complet de soumission : comment préparer un correctif, comment utiliser Phabricator (le système de relecture de code FreeBSD), comment trouver un committer pour parrainer votre travail, comment répondre aux retours de relecture, et comment guider un pilote dans l'arborescence. Les chapitres précédents construisent les compétences techniques ; le chapitre 37 construit le flux de travail social. Les deux sont importants.

### Le livre est énorme. Par où commencer ?

Commencez par le chapitre 1 sauf si vous avez une raison de ne pas le faire. Le livre est cumulatif ; les chapitres ultérieurs s'appuient sur le vocabulaire et les habitudes établis plus tôt. Si vous connaissez déjà le C, UNIX et la forme générale d'un noyau de système d'exploitation, les notes de voie rapide dans la Partie 1 vous disent ce qu'il faut survoler. Si un sous-système spécifique vous a amené ici (USB, réseau, stockage, PCI), il est acceptable de lire attentivement les Parties 1 et 2 puis de sauter en avant, mais attendez-vous à revenir en arrière lorsque des termes des chapitres précédents réapparaissent.

### J'ai trouvé une erreur. Que dois-je faire ?

Ouvrez un problème sur GitHub. Incluez la version linguistique, le format que vous lisiez, le chapitre ou la section, une brève description du problème et une correction suggérée si vous en avez une. Chaque rapport améliore l'expérience du prochain lecteur. Les problèmes de traduction dans les éditions pt_BR et es_ES sont particulièrement bienvenus, car elles n'ont pas encore fait l'objet d'une relecture technique humaine complète.

### Le livre est-il vraiment gratuit ?

Oui. Il est publié sous la licence MIT. Vous pouvez le lire, le partager, l'imprimer, le citer, l'enrichir et le traduire. L'attribution est appréciée mais pas requise pour un usage personnel. Si vous souhaitez soutenir le travail, les choses les plus utiles que vous puissiez faire sont : parler du livre à d'autres personnes, signaler des problèmes lorsque vous en trouvez, contribuer à des relectures ou des traductions, et (si cela vous mène finalement là) soumettre votre propre travail au projet FreeBSD.

## À propos de l'auteur

Je suis Edson Brandi. Mon parcours dans la technologie n'avait rien de conventionnel. J'ai commencé comme étudiant en chimie à l'Unicamp au Brésil en 1995, sans projet de travailler avec des ordinateurs, mais avec une question persistante : *comment ça fonctionne réellement ?* Cette question m'a conduit à FreeBSD, et FreeBSD a façonné ma carrière depuis.

Dans les années qui ont suivi, j'ai fondé le **groupe d'utilisateurs brésilien FreeBSD (FUG-BR)**, co-créé le **FreeBSD LiveCD Tool Set**, et en 2002 co-fondé **FreeBSD Brasil**, une entreprise proposant des formations, du conseil et du support FreeBSD, qui fonctionne encore aujourd'hui. Je suis committer FreeBSD et actuellement membre de l'**équipe d'ingénierie de documentation FreeBSD (DocEng)**, contribuant à maintenir les systèmes qui gardent la documentation de FreeBSD vivante et accessible dans le monde entier.

Professionnellement, j'ai passé ma carrière dans le leadership en infrastructure et en ingénierie dans plusieurs secteurs, et aujourd'hui je suis directeur informatique dans une entreprise de fintech à Londres.

J'ai écrit ce livre parce que je veux que d'autres personnes curieuses aient la rampe d'accès que je n'ai jamais eue. Vous n'avez pas besoin d'un diplôme en informatique pour écrire du code noyau. Ce dont vous avez besoin, c'est de curiosité, de persévérance, de patience et d'un guide qui vous prenne là où vous êtes.

Edson Brandi · [email protected]

## Licence

Ce livre et son code source d'accompagnement sont publiés sous la **licence MIT**. Voir [LICENSE](https://github.com/ebrandi/fdd-book/blob/main/LICENSE) pour le texte intégral. Vous êtes libre de lire, partager et enrichir ce travail ; l'attribution est appréciée.

## Remerciements

- La communauté de développement FreeBSD
- Tous les contributeurs, relecteurs et traducteurs
- Tous ceux qui ont déjà signalé un problème ou posé une question qui a amélioré un chapitre

## Liens

- **Dépôt :** https://github.com/ebrandi/FDD-book
- **Problèmes :** https://github.com/ebrandi/FDD-book/issues
- **Discussions :** https://github.com/ebrandi/FDD-book/discussions
- **Auteur :** Edson Brandi · [email protected]

---

<p align="center"><em>Si ce livre vous aide, merci de mettre une étoile au dépôt et de le partager avec quelqu'un d'autre curieux de savoir comment les ordinateurs fonctionnent vraiment.</em></p>
Télécharger l’outil
PartieTitreObjectif
1Fondations : FreeBSD, C et le noyauConfiguration du laboratoire, UNIX, C pour le noyau, anatomie d’un pilote
2Construire votre premier pilotePilotes caractère, fichiers de périphérique, lecture/écriture, E/S
3Concurrence et synchronisationThreads, mutex, condvars, temporisateurs, taskqueues, sémaphores
4Intégration matérielle et au niveau de la plateformePCI, interruptions, MSI/MSI-X, DMA, gestion d’énergie
5Débogage, outils et pratiques du monde réelTrace, KGDB, débogage avancé, réglage des performances
6Écrire des pilotes spécifiques à un transportUSB, série, stockage/VFS, pilotes réseau
7Sujets de maîtrise : scénarios particuliers et cas limitesPortabilité, virtualisation, sécurité, embarqué, rétro-ingénierie, soumission en amont
Pages4 500+
Chapitres38
Annexes6
Temps de lecture~100 heures
Temps de laboratoire~100 heures
Temps d’étude total~200 heures (≈6 mois à 5 h/semaine)
Version cible de FreeBSD14.3
LanguesAnglais (original) · Portugais brésilien (traduit par IA) · Espagnol (traduit par IA)
FormatsPDF · EPUB · HTML · Source Markdown
  1. Débogage et trace
  2. Intégration avec le noyau
  3. Sujets avancés et conseils pratiques

Partie 6 : Écrire des pilotes spécifiques à un transport

  1. Pilotes USB et série
  2. Travailler avec les périphériques de stockage et la couche VFS
  3. Écrire un pilote réseau

Partie 7 : Sujets de maîtrise

  1. Portabilité et abstraction des pilotes
  2. Virtualisation et conteneurisation
  3. Bonnes pratiques de sécurité
  4. Device Tree et développement embarqué
  5. Réglage des performances et profilage
  6. Techniques avancées de débogage
  7. E/S asynchrones et gestion des événements
  8. Créer des pilotes sans documentation (rétro-ingénierie)
  9. Soumettre votre pilote au projet FreeBSD
  10. Dernières réflexions et prochaines étapes

Annexes

  • A : Référence de l’API du noyau FreeBSD
  • B : Algorithmes et logique pour la programmation système
  • C : Concepts matériels pour les développeurs de pilotes
  • D : Concepts de systèmes d’exploitation
  • E : Navigation dans les internes du noyau FreeBSD
  • F : Banc d’essai de performance et résultats
LanguePDFEPUBHTML
Anglais (original)PDFEPUBHTML
Português (Brasil), traduit par IAPDFEPUBHTML
Español, traduit par IAPDFEPUBHTML