udevについて 201

/ LPIC / Comment[0]
udevは/dev/以下のデバイスファイルを動的に作成、削除する仕組みです。
カーネルは接続、切断を検地した際にデバイスを/sys以下のデバイス情報に反映させ、ueventをudevdデーモンに送ります。
# ls -l /sys/dev/{block,char}
/sys/dev/block:
合計 0
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:0 -> ../../devices/virtual/block/ram0
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:1 -> ../../devices/virtual/block/ram1
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:10 -> ../../devices/virtual/block/ram10
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:11 -> ../../devices/virtual/block/ram11
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:12 -> ../../devices/virtual/block/ram12
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:13 -> ../../devices/virtual/block/ram13
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:14 -> ../../devices/virtual/block/ram14
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:15 -> ../../devices/virtual/block/ram15
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:2 -> ../../devices/virtual/block/ram2
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:3 -> ../../devices/virtual/block/ram3
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:4 -> ../../devices/virtual/block/ram4
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:5 -> ../../devices/virtual/block/ram5
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:6 -> ../../devices/virtual/block/ram6
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:7 -> ../../devices/virtual/block/ram7
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:8 -> ../../devices/virtual/block/ram8
lrwxrwxrwx 1 root root 0 8月 23 15:42 1:9 -> ../../devices/virtual/block/ram9
lrwxrwxrwx 1 root root 0 8月 23 15:42 252:0 -> ../../devices/virtual/block/dm-0
lrwxrwxrwx 1 root root 0 8月 23 15:42 7:0 -> ../../devices/virtual/block/loop0
lrwxrwxrwx 1 root root 0 8月 23 15:42 7:1 -> ../../devices/virtual/block/loop1
lrwxrwxrwx 1 root root 0 8月 23 15:42 7:2 -> ../../devices/virtual/block/loop2
lrwxrwxrwx 1 root root 0 8月 23 15:42 7:3 -> ../../devices/virtual/block/loop3
lrwxrwxrwx 1 root root 0 8月 23 15:42 7:4 -> ../../devices/virtual/block/loop4
lrwxrwxrwx 1 root root 0 8月 23 15:42 7:5 -> ../../devices/virtual/block/loop5
lrwxrwxrwx 1 root root 0 8月 23 15:42 7:6 -> ../../devices/virtual/block/loop6
lrwxrwxrwx 1 root root 0 8月 23 15:42 7:7 -> ../../devices/virtual/block/loop7
lrwxrwxrwx 1 root root 0 8月 23 15:42 8:0 -> ../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
lrwxrwxrwx 1 root root 0 8月 23 15:42 8:1 -> ../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda1
lrwxrwxrwx 1 root root 0 8月 23 15:42 8:16 -> ../../devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb
lrwxrwxrwx 1 root root 0 8月 23 15:42 8:17 -> ../../devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb/sdb1
lrwxrwxrwx 1 root root 0 8月 23 15:42 8:2 -> ../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2
lrwxrwxrwx 1 root root 0 8月 23 15:42 9:0 -> ../../devices/virtual/block/md0

/sys/dev/char:
合計 0
lrwxrwxrwx 1 root root 0 8月 23 15:42 108:0 -> ../../devices/virtual/ppp/ppp
lrwxrwxrwx 1 root root 0 8月 23 15:42 10:1 -> ../../devices/virtual/misc/psaux
lrwxrwxrwx 1 root root 0 8月 23 15:42 10:175 -> ../../devices/virtual/misc/agpgart
lrwxrwxrwx 1 root root 0 8月 23 15:42 10:184 -> ../../devices/virtual/misc/microcode
lrwxrwxrwx 1 root root 0 8月 23 15:42 10:200 -> ../../devices/virtual/misc/tun
lrwxrwxrwx 1 root root 0 8月 23 15:42 10:223 -> ../../devices/virtual/misc/uinput
lrwxrwxrwx 1 root root 0 8月 23 15:42 10:227 -> ../../devices/virtual/misc/mcelog
lrwxrwxrwx 1 root root 0 8月 23 15:42 10:228 -> ../../devices/virtual/misc/hpet
lrwxrwxrwx 1 root root 0 8月 23 15:42 10:229 -> ../../devices/virtual/misc/fuse
lrwxrwxrwx 1 root root 0 8月 23 15:42 10:235 -> ../../devices/virtual/misc/autofs
lrwxrwxrwx 1 root root 0 8月 23 15:42 10:236 -> ../../devices/virtual/misc/device-mapper
:

udevdデーモンはueventを受け取ると上記デバイス情報を取得し、/etc/udev/rules.d/*.rulesのデバイス作成ルールに基づいて/dev/以下のデバイスファイルを作成、削除します。
以前はデバイスを接続するたびにmknodコマンドで手動でデバイスファイルを作成していました。
http://www.turbolinux.com/support/document/knowledge/204.html

udevadmコマンドでudevを管理することが出来ます。

構文: udevadm [サブコマンド] [オプション|ターゲット]

サブコマンド
  • info /dev/*の情報を取得
  • trigger カーネルイベントをリクエストする
  • settle イベントキューが終わるまで待つ
  • control udevdをコントロールする
  • monitor カーネルとudevイベントを監視する
  • hwdb ハードウェアデータベースインデックスをメンテナンスする
  • test イベントのシミュレートを行う

実行例

udevイベントを監視(旧コマンド: udevmonitor)
# udevadm monitor
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[677509.359740] remove /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0/host10/target10:0:0/10:0:0:0/bsg/10:0:0:0 (bsg)
KERNEL[677509.367628] remove /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0/host10/target10:0:0/10:0:0:0/scsi_generic/sg2 (scsi_generic)
UDEV [677509.368117] remove /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0/host10/target10:0:0/10:0:0:0/bsg/10:0:0:0 (bsg)
KERNEL[677509.368528] remove /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0/host10/target10:0:0/10:0:0:0/scsi_device/10:0:0:0 (scsi_device)
UDEV [677509.368894] remove /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0/host10/target10:0:0/10:0:0:0/scsi_device/10:0:0:0 (scsi_device)
KERNEL[677509.369318] remove /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0/host10/target10:0:0/10:0:0:0/scsi_disk/10:0:0:0 (scsi_disk)
KERNEL[677509.369707] remove /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0/host10/target10:0:0/10:0:0:0/block/sde/sde1 (block)

/dev/sda1のデバイス情報を取得
# udevadm info /dev/sda1
P: /devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda1
N: sda1
S: disk/by-id/ata-ST1000DM003-1CH162_Z1D21E4S-part1
S: disk/by-id/wwn-0x5000c5004df45fca-part1
S: disk/by-label/system
S: disk/by-uuid/41a150ec-0943-4928-b49c-97b859a7ac55
E: DEVLINKS=/dev/disk/by-id/ata-ST1000DM003-1CH162_Z1D21E4S-part1 /dev/disk/by-id/wwn-0x5000c5004df45fca-part1 /dev/disk/by-label/system /dev/disk/by-uuid/41a150ec-0943-4928-b49c-97b859a7ac55
E: DEVNAME=/dev/sda1
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda1
E: DEVTYPE=partition
E: ID_ATA=1
E: ID_ATA_DOWNLOAD_MICROCODE=1
E: ID_ATA_FEATURE_SET_APM=1
E: ID_ATA_FEATURE_SET_APM_CURRENT_VALUE=254
E: ID_ATA_FEATURE_SET_APM_ENABLED=1
E: ID_ATA_FEATURE_SET_HPA=1
E: ID_ATA_FEATURE_SET_HPA_ENABLED=1
E: ID_ATA_FEATURE_SET_PM=1
E: ID_ATA_FEATURE_SET_PM_ENABLED=1
E: ID_ATA_FEATURE_SET_SECURITY=1
E: ID_ATA_FEATURE_SET_SECURITY_ENABLED=0
E: ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN=108
E: ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=108
E: ID_ATA_FEATURE_SET_SMART=1
E: ID_ATA_FEATURE_SET_SMART_ENABLED=1
E: ID_ATA_ROTATION_RATE_RPM=7200
E: ID_ATA_SATA=1
E: ID_ATA_SATA_SIGNAL_RATE_GEN1=1
E: ID_ATA_SATA_SIGNAL_RATE_GEN2=1
E: ID_ATA_WRITE_CACHE=1
E: ID_ATA_WRITE_CACHE_ENABLED=1
E: ID_BUS=ata
E: ID_FS_LABEL=system
E: ID_FS_LABEL_ENC=system
E: ID_FS_TYPE=ext4
E: ID_FS_USAGE=filesystem
E: ID_FS_UUID=41a150ec-0943-4928-b49c-97b859a7ac55
E: ID_FS_UUID_ENC=41a150ec-0943-4928-b49c-97b859a7ac55
E: ID_FS_VERSION=1.0
E: ID_MODEL=ST1000DM003-1CH162
E: ID_MODEL_ENC=ST1000DM003-1CH162\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
E: ID_PART_ENTRY_DISK=8:0
E: ID_PART_ENTRY_FLAGS=0x80
E: ID_PART_ENTRY_NUMBER=1
E: ID_PART_ENTRY_OFFSET=2048
E: ID_PART_ENTRY_SCHEME=dos
E: ID_PART_ENTRY_SIZE=15622144
E: ID_PART_ENTRY_TYPE=0x83
E: ID_PART_TABLE_TYPE=dos
E: ID_REVISION=CC43
E: ID_SERIAL=ST1000DM003-1CH162_Z1D21E4S
E: ID_SERIAL_SHORT=Z1D21E4S
E: ID_TYPE=disk
E: ID_WWN=0x5000c5004df45fca
E: ID_WWN_WITH_EXTENSION=0x5000c5004df45fca
E: MAJOR=8
E: MINOR=1
E: SUBSYSTEM=block
E: USEC_INITIALIZED=68740
E: nomdmonddf=1
E: nomdmonisw=1
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可