udev


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

かつては、利用される可能性のある数千のデバイスファイルを/dev以下にあらかじめ用意しておく必要が
あったが、現在では、必要に応じてudevがsysfsと連携して、動的にデバイスファイルを管理するようになっている。

ハードウェアが接続されると、カーネルがそれを検知し、カーネル情報を監視しているudevdデーモンが必要なデバイスファイルを
動的に作成する。つまり、実際にカーネルが認識しているハードウェアに対応するデバイスファイルのみが用意されることになる。

udevはユーザ空間で動作するプロセスである。ユーザ空間とカーネル空間は分離されているので、アプリケーションはカーネル内部の情報に
直接アクセスできない。そこでudevはsysfsから情報を得ている。susfsは、カーネル内部情報をファイルシステムの形で投影する仕組みで、
/sysディレクトリ以下から、システムに接続されているデバイスの情報を得ることができる。
そういった用途には従来procfsが使われてきたが、もともとprocfsはプロセス情報を管理する仕組みなので、今後はカーネル情報についてはsysfsに移行していくだろう。

新しいデバイスをカーネルが認識すると、udevdはsysfsの情報を元に、必要なデバイスファイルを作成する。
その際に参照される設定ファイルは/etc/udev/rules.dディレクトリ以下にある。

$ ls /etc/udev/rules.d
05-udev-early.rules   60-pcmcia.ules  90-dm.rules
40-multipath.rules    60-raw.rules    90-hal.rules
50-udev.rules         60-wacom.rules  95-pam-console.rules

ファイル名が数字で始まっているが、番号の若い者から順に適用されることになっている。
ファイルの内容は以下のとおり。

■/etc/udev/rules.d/50-udev.rulesの例
KERNEL=="tty",             NAME="%k",    GROUP="tty",   MODE="0666",
OPTIONS="last_rule"

これはカーネルが「tty」というデバイス名を認識した場合、所有グループをtty、パーミッションを0666としてデバイスファイルを作成する、というルールである。
「last_rule」は、ほかにも条件にマッチするルールが見つかっても、そちらのルールは適用しない、という意味である。
%kはカーネルから伝えられた名前に置き換えられる。

■/etc/udev/rules.d/50-udev.rulesの例2
KERNEL=="mice", NAME="input/%k"
KERNEL=="mouse*",     NAME="input/%k" 

これは、カーネルの認識したデバイス名が「mice」「mouse*」であれば、デバイスファイルは/dev/input/mice などで作成する、というルールである。

■/etc/udev/rules.d/50-udev.rulesの例3
KERNEL=="ram1", SYMLINK+="ram"

これは、/dev/ramは/dev/ram1のシンボリックリンクとるする、というルールである。
KERNELなどに指定するパラメータ、つまりsysfsがどのようにデバイスを扱っているかと言う情報は、udevinfoコマンドで調べることが出来る。
|新しいページ|検索|ページ一覧|RSS|@ウィキご利用ガイド | 管理者にお問合せ
|ログイン|