Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール
オンライン連載はお休み。イスカンダルへの道は遠い・・。
本日は、遠方より客人がいらっしゃった。お互い熱い思いを語りつつ、ますます「妄想」が膨らむ。分野が異なる方とのディスカッションは、ことのほか楽しく、同時に得難い刺激を受ける。「あ〜、ここの大脳皮質、全く使ってなかったよねぇ」と、反省することしきり。
話の中で飛び出した「マイコン野郎にとっての comfortable space は 32KB 」という意見に、激しく同意。32KB の箱庭世界を支配した時、往年のマイコン野郎の脳内では、おそらくエンドルフィンが出まくっていたに違いない。この ecstasy を現代に蘇らせたいものである。
GCC プログラミング工房、次々回のテーマは、カーネル 2.6 で大幅に改変されたモジュール機構を中心に解説することとなった。カーネル 2.6 はビルド工程を始めとして、いくつかの大きな変更が加えられているが、最も重大な変化はこのモジュールである。
具体的には、モジュールの初期化・終了処理ルーチンの記述が変更されていることと、ビルド方法が様変わりしている。特に後者の変化は著しく、これまでは gcc -D__KERNEL__ -DMODULE -I/usr/src/linux -c xxxxx.c という簡単な一文でモジュールが出来上がったのに対して、今後は 2.6 ソースツリーに用意されている各種 Makefile やスクリプトファイルの助けを借りなければ、ビルドできなくなっている。
これは、マグニチュード7級の大地震と言っても良いほどの変化だが、例によって事の重大性を訴える記事は少ない。それもそのはず、Linux kernel ソースツリー内部に、モジュール仕様の激変と正しい対処方法を記した文書は、用意されていないからだ。
モジュール機構の改変には、Netfilter で有名な Rusty Russell 氏が関わっている。同氏の Linux kernel に対する貢献は多大なものがあり、私自身を含め全世界のユーザーが、彼が書いたコードの恩恵を享受している訳だが、一方で Dark side も存在する。氏はいくつかの Netfilter 解説文書を公開しているが、いずれも論旨が不明瞭であり、その内容は難解である。
Netfilter 体系そのものは、シンプルな原理に基づいて作動しているため、Writing に問題があると言えるだろう。「Netfilter/iptables は難しい」と言われて久しいが、これは一重に良きドキュメントが存在しなかったことが原因ではないかと思われる。
そして今、ふたたび同じ不幸が繰り返されようとしている。カーネル 2.6 のモジュールには、従来の insmod, lsmod, rmmod などのシステムツールは使えない。Russell 氏が公開している、module-init-tools パッケージを使う必要があるが、同ソースツリーの中にも、カーネルソースツリー内部にも、Russell 氏はドキュメントを用意していない。いつもの事ながら、「コードの書きっ放し」である。
このような時、私達は一体どこに解決策を求めれば良いのだろうか?途方に暮れているプログラマーは、世界中でかなりの数に達することだろう。
Linux kernel community が頼りにならぬ以上、道しるべはソースツリー内部にしかない訳だが、コンパスも持たずに深き森に彷徨い込むのは極めて危険な行為。
新しい旅を始める前に最も大切なものは、経験豊かな技術者による優れた「Overview」である。幸いなことに、現時点でカーネル 2.6 モジュールに関する良質な Overview は、ふたつ存在する。
ひとつは、LWN.net 上で公開されている「Porting Drivers to 2.6 series」。LWN.net は、Editor である Jonathan Corbet を始めとする優れた Writer が、一部有料で Linux に関わる様々な情報を提供しているサイトであり、一月5ドルで最新の情報を入手することができる。
有り難いことに「Porting Drivers to 2.6 series」は、無料で購読できるようになっており、内容のレベルも高い。Linux Device Drivers 2nd が未だカーネル 2.6 に対応していない現時点では、唯一のまとまった資料と言えるだろう。モジュール野郎は必読である。
もうひとつは、組み込み Linux の覇者、TimeSys 社が公開している White papers から。「Migrating to the 2.6 Linux Kernel」というシリーズ中の、「Part 2: Migrating Device Drivers to the 2.6 Kernel」は手際よくまとめられた Overview であり、お勧め。
短いながらもドキュメントとしては、LWN.net よりも出来が良い。ただし、肝心な箇所については「ここから先は、製品版の Linux Development Suite に添付している解説書を参照してね」と、そつがない。
ちなみに、この White papers の PDF を参照するにはアカウント作成が必要(無料)。面倒くさい方は、LinuxDevices.com で公開されている HTML 版をどうぞ。
HTML 版の後付に著者である Hagen 氏の顔写真とプロフィールが掲載されている。Hagen 氏は TimeSys 社の Senior Product Manager であると共に、多くの著書を書いている。なるほど、Overview が上手いのも、頷ける。
LWN.net や TimeSys を見るにつけ、Linux community は、まだまだアマチュアの集団に過ぎないように思う。IBM+Linux white paper library は、さらに強烈だ。「これでもか!」というぐらい、良質で優れたドキュメントの数々を、IBM 社員が提供している。まだこのライブラリーをご存じでない方のために、知る人ぞ知る "Inline assembly for x86 in Linux" を紹介しておこう。このような良質の記事が、同ライブラリーには目白押しである。
いつの日か、日本にも世界に向けて発信する White paper library 誕生の時が、やって来るのだろうか?最近、Linux 2.6 source tree と日本の姿が、だぶって見えてならない・・。
もちろん、「無料なのだからそこまで言うのは、お門違い」という意見もあるだろう。しかし、同じ自由の御旗を掲げてはいても、Linux community と BSD community では、明らかにドキュメントに対する姿勢がことなるのである。詳細は、後日。
さて、Hagen 氏の著作中の "Hacking the TiVo" に目が止まる。「TiVo ってなによ?」