最終更新:2017-06-13 (火) 17:59:35 (889d)  

udev はてなブックマークを見る
Top / udev

userspace device management

http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev/udev.html

udevはLinuxカーネル2.6以降を対象とし、デバイス名を固定する機能を備え、動的な/devディレクトリをユーザスペースで実現する方法を提供します。

概要

  • The udev system is composed of some kernel services and the udevd daemon.
  • udev では,udevdというデーモンがカーネルの内部情報を監視しており,カーネルが新たな周辺機器を検知すれば,その機器に応じたデバイスファイルを動的に作成することができます。
  • 最近のLinuxではこの仕組みを用いて,あらかじめすべてのデバイスファイルを用意するのではなく,実際に接続されてカーネルが認識している周辺機器用のデバイスファイルのみを動的に生成できるようになっています。
  • Linux 2.4devfsの代替

メモ

  • Created by Greg Kroah Hartman
  • udevが作成したデバイスファイルは単なるシンボリックリンクファイルであるため、 カーネル内部では認識されません。

ソースコード

パッケージ

構成

udev/コマンド

  • udevadm
  • udevadm info - query sysfs or the udev database
  • udevadm trigger? - request events from the kernel
  • udevadm settle? - wait for the event queue to finish
  • udevadm control? - control the udev daemon
  • udevadm monitor - listen to kernel and udev events
  • udevadm hwdb? - maintain the hardware database index
  • udevadm test? - test an event run
  • udevadm test-builtin? - test a built-in command

メモ

  • Udev reads the /sys filesystem to check the available hardware and tries to load the necessary modules.

ドキュメント

Debian

SUSE Linux

動作

  • udevd - カーネルコア(USBPCIコアドライバなど)からのueventを待ち受ける
    • uevent - デバイスが挿入/抜去された時に送信されるメッセージ
  • メッセージとそれ自体に含まれる情報、あるいはsysfsから抽出したデバイス情報を使ってイベントをudevのルールと照合
    • ルールは辞書順に処理される
  • 合致する名前付けルールが見つかれば、デバイスファイルを作成あるいは削除する
  • 合致するルールが見つかれば、ドライバモジュールのロードや削除、あるいはユーザ空間プログラムへの通知など、指定したコマンドを実行する

設定ファイル

udev/ルール

  • All rules files are collectively sorted and processed in lexical order, regardless of the directories in which they live.
  • Rule files must have the extension .rules; other extensions are ignored.

/dev ディレクトリ内に存在すべき固定のファイルやディレクトリ

  • Linux/lib/udev/devices?ディレクトリ内に配置

ルールの再読み込み

udevadm control reload_rules
/etc/init.d/boot.udev reload

コマンド

/dev

関連

Linux 2.4

  • これまでの/devの実装であるdevfsは、現在後方互換のためだけに残されており、udevはその後任と考えられています。

systemd

  • In April 2012, udev's source tree was merged into systemd

組み込みLinux

Android

参考