udevでデバイスファイルのシンボリックを作成

はじめに

Linux環境において、デバイスファイルのファイル名は機種により異なるが、 RXTXライブラリのようにライブラリ側で、デバイスファイル名が固定されているケースがある。 この場合は、デバイスファイルを参照するシンボリックリンクをライブラリが指定しているデバイスファイル名で作成することで、ミスマッチを回避できる。

Linux環境でデバイスファイルのシンボリックを作成する手順を記載する。

udevとは

udevは、Linuxにおいての/dev配下のデバイスファイルの管理を行う仕組みである。

USBフラッシュメモリなどのデバイスの差し込みを行うと、/dev配下にデバイスファイルが作成され、デバイスを取り外しすると、/dev配下のデバイスファイルが作成される。


シンボリックリンクを作成

RaspberryPi環境での実行する。

USBフラッシュメモリを装着すると、デバイスファイル(/dev/sda)が作成される。 以下のコマンドを実行すると、デバイスファイルの情報が表示される。

$ udevadm info -a -n /dev/sda

# SUBSYSTEMSの項目を確認する
looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2':
  KERNELS=="1-1.2"
  SUBSYSTEMS=="usb"
  DRIVERS=="usb"
  ATTRS{bDeviceClass}=="00"
  ATTRS{manufacturer}=="UFD 2.0"
  ATTRS{bmAttributes}=="80"
  ATTRS{bConfigurationValue}=="1"
  ATTRS{version}==" 2.00"
  ATTRS{devnum}=="9"
  ATTRS{bMaxPower}=="200mA"
  ATTRS{idProduct}=="3600"
  ATTRS{avoid_reset_quirk}=="0"
  ATTRS{urbnum}=="1558"
  ATTRS{bDeviceSubClass}=="00"
  ATTRS{maxchild}=="0"
  ATTRS{bcdDevice}=="0100"
  ATTRS{bMaxPacketSize0}=="64"
  ATTRS{idVendor}=="13fe"
  ATTRS{product}=="Silicon-Power32G"
  ATTRS{speed}=="480"
  ATTRS{removable}=="removable"
  ATTRS{ltm_capable}=="no"
  ATTRS{serial}=="201108SP001507B80507CD4F175B"
  ATTRS{bNumConfigurations}=="1"
  ATTRS{busnum}=="1"
  ATTRS{authorized}=="1"
  ATTRS{quirks}=="0x0"
  ATTRS{configuration}==""
  ATTRS{devpath}=="1.2"
  ATTRS{bDeviceProtocol}=="00"
  ATTRS{bNumInterfaces}==" 1"
$ vi /etc/udev/rules.d/99-test.rules

# 以下の内容を入力して保存する
SUBSYSTEMS=="usb", KERNEL=="sda", SYMLINK+="Link", MODE="0666"

USBフラッシュメモリを抜き差しすると、シンボリックリンクが作成される。

$ ls -ltir /dev/Link
33349 lrwxrwxrwx 1 root root 3 12月 17 08:04 /dev/Link -> sda