最近のudev事情

以前紹介したudevは最近、カーネル2.6の正式リリースに間に合うように急ピッチで開発が行われている。特に最近続けて005、 006、 007と新リリースが行われた。今回は、いよいよ「使える」ようになって来た最近のudevの事情について取り上げたい。

udevに関して再度取り上げなくてはと思っているうちに、005、 006、 007とリリースが出てしまった。GregKHは、2003年4月にアイデアを示したに過ぎないとも言えるバージョン0.1を公開したが、現在ではLinux-hotplugメーリングリストを中心に協力者を得て、彼の多くの時間をudevに費やしているようだ。

オタワLinux シンポジウム2003

2003年7月にオタワで開催されたLinux シンポジウム2003ではGregKHが、「udev – A Userspace Implementation of devfs」というタイトルでudevについての講演を行った。実はこのときの講演が、udev開発の実質的なキックオフであった。udevのコンセプトに関して解説されているこの講演の資料は、以下から入手できるので、興味がある方は参照されたい。

Linux シンポジウムで彼が発表を行うまで、udevはまだ最初のコンセプトモデルであるudev-0.1のままであった。このシンポジウムでGregKHはudev-0.2を発表して以来、その後開発メンバやパッチが増えるとともに、コード量も増えてきた。udevはわずかここ3ヶ月足らずの間で本格的な実装が行なわれ、使えるようになって来た事になる。

udev(再び)

udevに関しては以前にも取り上げているが、簡単に解説すると次のようになる。

udevは従来の仮想デバイスノード・ファイル・システムであるDevFSの機能をユーザ空間で実現する。sysfs、Hotplugが提供する機能とともにカーネル2.6でのデバイスの動的な割り当てをサポートする。さらには、/dev(デバイスノード)ファイルに自由で正しい名前付けを可能とさせるものである。DevFSは今後メンテナンスされないため、カーネル2.6では、DevFSの変わりにudevの利用が推奨されている。

udevはデバイスがプラグインされたときに、各デバイスドライバがsysfsツリーにリストするメジャー/マイナ番号から動的にデバイス・ノードをmknodによって作成する単純な仕組みである。udevでもメジャー/マイナ番号には、従来と同じLANALA(The Linux Assigned Names And Numbers Authority)の予約番号や取りうる値の制約がある。カーネル2.6ではメジャー番号は12ビット、マイナ番号は20ビットに拡張されたが、制限があることには変わらない。DevFSとは異なり、仮想ファイルシステムではないので、ディスク・スペースを使いたくない場合には、ramfs等を使用するといった手段を取る必要がある。/devファイル(デバイス・ノード・ファイル)とそこに隠されたメジャー/マイナ番号は非常に古典的なしくみであるが、今後もアプリケーションとデバイス、デバイスドライバとの接続点である事は変わらない。

Hotplugメーリングリスト

2003年11月23日、HotplugメーリングリストにGregKHからudev-007のアナウンス・メールが流れた。udev-005まではLKML(Linux Kernel Mailing List)でもアナウンスされていたが、udevに関する議論やリリースは現在、Hotplugメーリングリストで行われている。udevの各バージョンFAQは、kernel.orgで管理されている。

udev-007は、udevのコンフィグレーション・ファイル/etc/udev/udev.configのフォーマットに記述する CALLOITルール・パラメータのフォーマットが変更になったのと、それに伴う修正が主要な変更点である。udevの短い歴史を振り返ると、次のようになる。

バージョン 日付 主な変更点
udev0.1 4/11/2003
  • カーネル2.5向けにudevのアイデアを示した実験的実装版
udev0.2 7/25/2003
  • シンポジウム時のリリース
udev-003 10/16/2003
  • 最新の2.6系カーネルのサポート、
  • persistent database サポートの追加
  • ドキュメント、MakefileやInstall手順を初め、多くのコードやドキュメントが書き加えられた
udev-004 10/21/2003
  • devファイル作成待ち方法の変更
  • manページの中身の追加
  • libsysfsのバージョンの同期
udev-005 10/22/2003
  • klibcのサポートによる、組み込み系システムでのファイルサイズの縮小
  • 設定ファイル名をudev.config、udev.premissionに変更
  • デバイス未検出時のタイムアウト・サポート
udev-006 11/19/2003
  • コンフィグファイル中のルール記述のサポート
  • 動的な名前付けのサポート
  • udevデバイスファイルを/udevのサブディレクトリ以下で正しく操作
  • testディレクトリ以下にテスト・プログラムを整備
udev-007 11/24/2003
  • CALLOUTルール・パラメータのフォーマット変更

uDSE

udevに関連した最近の話題としてuSDEについて少し触れる。2003年10月27日にLKMLで、Mark BellonによってuSDEがアナウンスされたため、議論を呼び起こした。KernelTrafficでのサマリ・タイトルが「New DevFS Replacement uSDE, Similar To udev」とあることからもわかるように、これはudevと同様、Hotplugと連携しながら従来までのDevFSを置き換えるもので、Mark Bellonらのグループが開発中のプロジェクトである。

突然とも言えるuSDEの出現とアナウンスにより、Patrick MochelやGregKHを初めとする人々から、「なぜ開発しているのか」に関する質問が寄せられた。特に4月のGregKHのudevのアナウンスを知って、GregKHと直接メールを交換したのにもかかわらず、udevの開発には加わらず、別のアプローチを取ったことがわかり、非難を浴びた。Mark Bellonは、udevを補完する別のアプローチとしてuSDEの必要性を説いたが、結局MochelやGregKHが、uSDEに対して多くのアドバイスをしたまま議論は立ち消えた。uSDEはその後も更新されている。