4 udevルールのカスタマイズ

ルールが評価される順序は重要です。udevでは、ルールが字句順に処理されます。カスタム・ルールを追加するには、デフォルト・ルールの前にudevでこれらのルールを検索して評価する必要があります。

次の手順例は、シンボリック・リンクをディスク・デバイス/dev/sdbに追加するudevルール・ファイルを実装する方法を示しています。

  1. /etc/udev/rules.dにルール・ファイルを作成します。

    udevによって他のルール・ファイルの前に読み取られるルール・ファイルを、/etc/udev/rules.dの下に10-local.rulesなどのファイル名で作成します。

    10-local.rulesの次のルールは、/dev/sdbを参照するシンボリック・リンク/dev/my_diskを作成します。

    KERNEL=="sdb", ACTION=="add", SYMLINK="my_disk"

    /devのデバイス・ファイルをリストすると、udevによってルールがまだ適用されていないことが示されます:

    ls /dev/sd* /dev/my_disk
    ls: cannot access /dev/my_disk: No such file or directory
    /dev/sda  /dev/sda1  /dev/sda2  /dev/sdb
  2. udevadm testコマンドを使用して新しいルールをテストします。

    udevがそのルールを適用してデバイスを作成する手順をシミュレートするには、次のようにudevadm testコマンドと/sys/class/block階層の下にリストされたsdbのデバイス・パスを使用できます。

    udevadm test /sys/class/block/sdb
    calling: test
    version ...
    This program is for debugging only, it does not run any program
    specified by a RUN key. It may show incorrect results, because
    some values may be different, or not available at a simulation run.
    ...
    LINK 'my_disk' /etc/udev/rules.d/10-local.rules:1
    ...
    creating link '/dev/my_disk' to '/dev/sdb'
    creating symlink '/dev/my_disk' to 'sdb
    ...
    ACTION=add
    DEVLINKS=/dev/disk/by-id/ata-VBOX_HARDDISK_VB186e4ce2-f80f170d 
      /dev/disk/by-uuid/a7dc508d-5bcc-4112-b96e-f40b19e369fe 
      /dev/my_disk
    ...
  3. systemd-udevdサービスを再起動します。
    sudo systemctl restart systemd-udevd
  4. ルールがアクティブであることを確認します。

    udevでルール・ファイルが処理された後、シンボリック・リンク/dev/my_diskが追加されます:

    ls -F /dev/sd* /dev/my_disk
    /dev/my_disk@  /dev/sda  /dev/sda1  /dev/sda2  /dev/sdb
  5. (オプション)ルールとシンボリック・リンクが削除されるように、変更を元に戻します。

    変更を元に戻すには、/etc/udev/rules.d/10-local.rulesおよび/dev/my_diskを削除してから、systemctl restart systemd-udevdを再度実行します。

    sudo rm /etc/udev/rules.d/10-local.rules
    sudo rm /dev/my_disk
    sudo systemctl restart systemd-udevd