[[diary/Kojima]]

・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 化してみたら,思ったよりも簡単にサウンドやらプリンタやらも動いてし
まって逆の意味でびっくり(苦笑
-手元の環境を見ると ssh-keygen に失敗して key が作成されず sshd が起動していない模様。ssh-keygen はランダム性を高めるためにデバイスファイルを見ていたように思うので、そのヘンがインストール済の環境に chroot した際にうまくいってない気配。 -- [[kojima]] &new{2006-01-10 (火) 14:52:44};
-FD,telnetによるリモートログインも不可のもようです。なんとかならないかあがき中。 -- [[名倉]] &new{2006-01-10 (火) 15:15:05};

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS