・udev とか
UNIX の世界では,各種周辺機器は /dev 以下に作成されたデバイスファイル経 由で操作することになっています.これは,全てのデータはビット列であり, ビット列のまとまりはファイルとして操作する,という UNIX の基本哲学に基 づくものですが,その結果,接続される周辺機器がさまざまに増えてくるにつ れ,/dev 以下に接続されるかも知れないあらゆるデバイス用のデバイスファイ ルを作らなければならないことになって混沌とした状態になってきました.ま た,最近では PCMCIA や USB といった活線挿抜が可能なデバイスが接続される ことが多くなり,それらに対するデバイスファイルをあらかじめ用意しておく ことが大変になってきました.
# HDD を増設するとドライブ番号(レター)が変ってしまう,という問題もある
このような問題に対応するためにカーネルが認識しているデバイスのみに動的 にデバイスファイルを用意すればいいだろう,というアイデアがあり,カーネ ル 2.4 では devfs という形で,カーネル内部で動的にデバイスファイルを生 成するような仕組みが用意されていました.
devfs も一部では愛用者がいたようですが,開発が停滞してバグが直されない とか,デバイスに対する名前付けのルールが固定的かつ伝統的なスタイルとは 違う,といった問題があり,2.6 系のカーネルではカーネルが認識しているデ バイスの状況を sysfs という形でユーザーランドから見えるようにして,この 情報を元にユーザーランドで動的にデバイスファイルを生成する udev という 機能が実装されました.
# これもバザールモデル的な内部競争の一例になりそうだ
最近のほとんどのディストリビューションではこの udev 機能を使っているの だけど,Plamo では不勉強で devfs/udev には手を出していませんでしたが, メンテナの田原さんからつつかれて(苦笑),試してみたら思ったよりも簡単に 使えるようなので,Plamo-4.2 のツリーも udev 対応にしてみました
当初は /dev 以下を全て udev で管理するにはルートパーティションをマウン トする前に udev が動いてルートパーティションも udev が作った /dev 以下 のファイル経由で使うのかと思ってたけど,実のところ,カーネル自身は自前で 周辺機器を probe しているので,root partition は /dev を使わなくてもマ ウントできるのだということに気づいたら,/etc/rc.d/rc.S の修正だけで対応 できたみたい.
# これも田原さんに指摘されて気づいたのだけど(苦笑
hotplug や pcmcia-cs 関係の調整は必要そうだけど,ざっくりと手元の環境を udev 化してみたら,思ったよりも簡単にサウンドやらプリンタやらも動いてし まって逆の意味でびっくり(苦笑