
FreeBSD デバイスドライバブック
最初の一歩からカーネルマスタリーへ
著者: Edson Brandi · バージョン 2.0 (2026年4月)
FreeBSD デバイスドライバ: 最初の一歩からカーネルマスタリーへは、無料のオープンソース書籍であり、「カーネルコードを書いたことがない」という状態から、「本番品質の FreeBSD ドライバを書き、デバッグし、投稿できる」ようになるまでを導きます。リファレンスではなくガイド付きコースとして設計されており、38 の章、6 つの付録、および実際の FreeBSD 14.x システム上でコンパイルおよびロードできる多数のハンズオンラボで構成されています。
この本は、すでに資格のある読者ではなく、学ぶ意欲がある読者を対象としています。UNIX の基礎と C 言語から始まり、カーネルが要求するすべての概念を段階的に説明し、その後で初めてドライバ開発の扉を開きます。DMA、割り込み、PCI ワークに到達する頃には、その用語は無理に覚えたものではなく、自然に身についているでしょう。
「カーネルプログラミングは依然としてプログラミングであり、ルールがより明示的で、責任が大きく、力も少し強いだけです。それを理解すれば、恐怖は興奮に変わります。」(第 1 章より)
すでに優れた FreeBSD カーネルリファレンスは存在します(man 9、アーキテクチャハンドブック、Newbus の論文など)。これまで欠けていたのは、以下のような一貫したテキストです。
myfirst ドライバは章ごとに進化し、同期、ハードウェアアクセス、割り込み、DMA を順に獲得していきます。同じコードが自分の手で成熟していく様子を目の当たりにできます。この本は、相互に構築する 7 つのパートに編成されています。
| パート | タイトル | 焦点 |
|---|---|---|
| 1 | 基礎:FreeBSD、C、カーネル | ラボのセットアップ、UNIX、カーネルワークのための C、ドライバの解剖 |
| 2 | 最初のドライバを構築する | キャラクタドライバ、デバイスファイル、read/write、I/O |
| 3 | 並行性と同期 | スレッド、ミューテックス、条件変数、タイマー、タスクキュー、セマフォ |
| 4 | ハードウェアとプラットフォームレベルの統合 | PCI、割り込み、MSI/MSI-X、DMA、電源管理 |
| 5 | デバッグ、ツール、実践的な手法 | トレーシング、KGDB、高度なデバッグ、パフォーマンスチューニング |
| 6 | トランスポート固有のドライバを作成する | USB、シリアル、ストレージ/VFS、ネットワークドライバ |
| 7 | マスタリーのテーマ:特殊なシナリオとエッジケース | 移植性、仮想化、セキュリティ、組込み、リバースエンジニアリング、アップストリームへの投稿 |
最後には、独自のカーネルモジュールを作成してロードし、キャラクタドライバを構築し、実際の割り込みと DMA を処理し、カーネルパニックをデバッグし、負荷下でドライバをプロファイリングし、作業を FreeBSD プロジェクトに貢献するためのすべてのステップを経験していることでしょう。
| ページ数 | 4,500+ |
| 章 | 38 |
| 付録 | 6 |
| 読書時間 | 約 100 時間 |
| ラボ時間 | 約 100 時間 |
| 合計学習時間 | 約 200 時間(週 5 時間なら約 6 ヶ月) |
| 対象 FreeBSD リリース | 14.3 |
| 言語 | 英語(オリジナル)・ブラジルポルトガル語(AI 翻訳)・スペイン語(AI 翻訳) |
| フォーマット | PDF · EPUB · HTML · Markdown ソース |
推奨ペースは週 1 章、学習時間は週約 5 時間です。このペースなら、1 学年の間に本書全体を終えることができます。一部の章(特に第 4 章の C 言語と、パート 4 のハードウェアに関する章)は自然と複数の週にわたります。
ラボは強く推奨します。 カーネルプログラミングは、他の分野にはないほど筋肉記憶が重要です。同じアタッチパターン、同じクリーンアップチェーン、同じロックの形状が章を超えて繰り返し現れます。それらのパターンを実際にタイプし、コンパイルし、実行中のカーネルにロードし、意図的に失敗させることは、それらを内面化する最も効果的な方法です。
すでに C、UNIX、OS カーネルの一般的な形状を知っている場合は、パート 1 全体にわたる fast-path ノートが、どのセクションを注意深く読むべきか、どのセクションを斜め読みできるかを示しています。
バージョン 2.0 は、リリースページで 3 言語、3 フォーマットで入手可能です。
| 言語 | EPUB | HTML | |
|---|---|---|---|
| 英語(オリジナル) | EPUB | HTML | |
| Português (Brasil), AI 翻訳 | EPUB | HTML | |
| Español, AI 翻訳 | EPUB | HTML |
Markdown ソースは content/ ディレクトリから直接閲覧することも、scripts/build-book.sh を使って自分で書籍をビルドすることもできます。
英語版は本書のオリジナルかつ権威あるバージョンです。 ブラジルポルトガル語版とスペイン語版は AI を使用して翻訳されており、まだ完全な人間による技術レビューを受けていません。 より多くの読者がアクセスできるように公開されていますが、翻訳時に誤訳、不自然な表現、技術的な不正確さが含まれている可能性があります。
翻訳版で不明瞭、矛盾、または技術的に疑わしい点があれば、英語版を信頼の源として参照してください。翻訳のレビューと改善への協力は大歓迎です(以下の 貢献 を参照)。
これは非常に大きな書籍のドラフトリリースです。以下の点に注意してください。
content/ 以下の該当ファイルを開いて、クリーンなバージョンを参照してください。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
## Contributing
あらゆる種類の貢献を歓迎します。修正、明確化、新しい例、翻訳、そしてFreeBSD開発者や学習者からのレビューを含みます。
### 貢献方法
- **コンテンツ:** 新しい章の追加、既存資料の洗練
- **技術レビュー:** FreeBSD 14.x に対する正確性のための章のレビュー
- **翻訳レビュー:** AI翻訳された **pt_BR** 版と **es_ES** 版のレビューと改善の支援。FreeBSD/カーネル経験のあるネイティブスピーカーを特に歓迎します。
- **新しい翻訳:** 書籍を別の言語に翻訳する支援
- **コード:** サンプル、ビルドスクリプト、ツールの改善
- **Issues:** バグ、事実誤認、不明瞭な箇所、書式の問題を報告
### 問題の報告
問題を報告する際は、以下を含めてください:
- 読んでいた言語バージョン(`en_US`、`pt_BR`、`es_ES`)
- 使用していた形式(PDF、EPUB、HTML、Markdown)
- 問題が発生した章またはセクション
- 問題の短い説明と、可能であれば修正提案
### ワークフロー