Linuxカーネルのバージョン2.4は、デバイス・ドライバに大幅な変更が加えられており、多くのアクティビティーを単純化しているが、ドライバをより効率的かつフレキシブルにする新機能はわずかである。本第2版は新しいプロセッサとバスに合わせ、これらの変更点をもれなくカバーしている。
カーネルハッカーでなくても、C言語の理解と、Unixのシステム・コールにおける、ある程度の基礎知識さえあれば、本書を理解し楽しむことができる。本書ではキャラクター・デバイス、ブロック・デバイス、ネットワーク・インタフェース用のドライバをすべてステップ・バイ・ステップ形式で説明し、また、ドライバデザインに関する問題を示唆する多面的な事例を挙げて解説している。これらの事例の実行にあたって、特別なハードウェアは必要ではない。第2版での大きな変更点はシンメトリックマルチプロセッシング(SMP)、ロック、新しいCPU、最近サポートされはじめたバスに関する考察である。OSがどのように機能するのかに興味があるのならば、本書はアドレス空間、非同期イベント、I/Oに関する見識を与えてくれる。
移植性は本書において重大な関心事である。本書はバージョン2.4を中心に書かれているが、可能なかぎりカーネル2.0までさかのぼって情報を盛り込んでいる。また、本書は異なるハードウェアプラットフォーム間で移植性をどうやって最大化するかを教えてくれる。本書中の例はIA32(PC)とIA64、PowerPC、SPARCとSPARC64、Alpha、ARM、そしてMIPS上でテストされている。
しかし、この本さえあれば、もうドライバのソースコードを長々たどる必要も、1.xのソースしかかいてないドキュメントを当てにする苦痛から開放されるだろう。
私が挙げたいこの本の長所は以下の3つである。
1:カーネル内の知識がさほどなくてもソフトウェアデバイスなら書けるようになる。
この本自体が、K&RのC言語を理解している程度のプログラマを前提にしているので、表現が平易でわかりやすい。
2:デバグ手法用例が豊富。
デバイスドライバを書くときに最も時間がかかる作業とされているのは、デバグである。この点に関しても一章を割いて、起動されたデバイスドライバからどのように情報を取得すればいいのか細かな提案が数多く記述されている。
3:デバイスドライバ周りの基礎を学習できる。
実際に、デバイスドライバを書かなくても、ただ、この本を読むだけでソフトウェアデバイスはどのように実現されているか学ぶことができる。実際に、私たちが行き詰まるのはこのような基本的事項の理解が足りないからということが非常に多いからである。
短所としては、デバイスドライバとLinux自体が開発速度の速いソフトウェアであるために、この書自体が古くなってしまう恐れがあることである。