【Linux】 デバイスの管理

今回は「自宅サーバー」や「専用サーバー」向けの話題「Linuxのデバイス管理」について解説します。

デバイスとはパソコンに接続する周辺機器のことを言います。

例えば、「キーボード」「マウス」「プリンタ」「USBメモリ」「DVDドライブ」などだけでなく内蔵している「CPU」「メモリ」「HDD」もデバイスに含まれます。

Linuxのデバイス管理について

Linuxは、デバイス(周辺機器)もファイルで管理しています。

言葉を変えるとデバイスファイル(スペシャルファイル)としてデバイスを管理しています。

もともとはUNIXの思想で「デバイスもファイルとして扱う」というものです。

 

Linuxではデバイスファイルは自動的に作成されます。

作成されたデバイスファイルは「/dev」ディレクトリに配置されます。

 

/devディレクトリについて

/dev ディレクトリ配下のファイルは「キャラクタデバイス」「ブロックデバイス」に分かれています。

昔は、あらかじめ全てのデバイスファイルを(不可能ですが)/dev ディレクトリ配下に作成する必要がありました。

しかしその後 /dev 配下のファイルは「動的」に管理されるようになりました。

キャラクタデバイス

キャラクタデバイスとは、「ランダムアクセスが不可能」なデバイスで、「キーボード」「マウス」「プリンタ」などが挙げられます。

ブロックデバイス

ブロックデバイスとは、バッファを持ち「ランダムアクセスが可能」な、ブロック単位でアクセスできるデバイスです。

「ハードディスク」「フロッピーディスク」「RAMディスク」「RAIDボリューム」などが挙げられます。

デバイスファイルとは

デバイスファイルとは、プログラム(catコマンドとかApacheとかMySQLなど)がLinuxマシン上のハードウェアデバイス(HWデバイス)に、カーネルを通してアクセスをするためのものです。

 

デバイスファイルは「ファイル」ではありません。

しかしプログラムからは「ファイル」に見えます。

つまり「読み出し」「書き出し」ができます。

 

プログラムがデバイスファイルにアクセスするとカーネルはI/O要求を認識して、そのプログラムにデバイスドライバを接続します。

その結果プログラムはデバイスにアクセスできるようになります。

udevがデバイスファイルを動的に作成する

私はパソコンにLinux(CentOS7)をインストールして使っていますが、今はUSBメモリを指せば動的に認識しますし、パソコンに付属している内蔵無線LANデバイスも動的に認識してデバイスドライバも動的にインストールします。

つまり、特に何もしなくてもOSインストール直後に無線LANがすぐに使えます。

 

なぜ動的にデバイスがカーネルに認識されるのかというと、udev が動的にデバイスファイルを作成しているからです。

 

先にも書きましたが、昔のLinuxは、あらかじめ全てのデバイスファイルを(不可能ですが)/dev ディレクトリ配下に作成する必要がありました。

もし/dev ディレクトリにデバイスファイルがない場合は、カーネルの再コンパイルをして対応していました。

しかし新しいデバイスを接続するたびに、カーネルの再コンパイルをするというのは、管理が非常に難しくごく一部のエンジニアしか使いこなせませんでした。

 

しかし udev は、必要なデバイスファイルを必要な時点で動的に生成することができます。

udevの歴史

udev の歴史について簡単に振り返ります。

udev はカーネルバージョン 2.5 から導入されました。

下図によると Linux Kernel Version 2.5は、2002年ごろです。

 

参考元:https://en.wikipedia.org/wiki/Linux_kernel

 

ちなみに2017年5月現在、CentOS7.3 のカーネルバージョンは「3.10.0-514」です。

-bash-4.2$ cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

-bash-4.2$ uname -r
3.10.0-514.el7.x86_64

 

udevの内部動作

なぜデバイスをLinuxマシンに接続した瞬間に認識されるのでしょうか?

その理由は、udevd デーモンが Linuxマシンに新しいデバイスが接続されたかどうかカーネルを監視しているからです。

Linuxマシンにデバイスが接続されるとカーネルに検知されます。

その反応を udevd デーモンが監視をしています。

 

ただし udevd はユーザーアプリケーションなのでカーネル内のデータに直接アクセスできません。

そこで使われるのが sys ファイルシステム(sysfs)です。

 

sysfs は、カーネルのデバイス情報を提供します。

具体的には、カーネルが検出して初期化したデバイスについて、/sysディレクトリ以下にデバイス名の付いたディレクトリを作成します。

 

udevdはこのsysfsからデバイス情報を受け取ることでデバイスを管理することができます。

man udevの翻訳

何度もmanコマンドで「udev」について勉強できるように日本語訳を記載します。

(Google翻訳を利用しています)

-bash-4.2$ man udev | col -b
UDEV(7)                                                                                                           udev                                                                                                          UDEV(7)

NAME
       udev – Dynamic device management

       udev – 動的デバイス管理

DESCRIPTION
       udev supplies the system software with device events, manages permissions of device nodes and may create additional symlinks in the /dev directory, or renames network interfaces.

   udevはデバイスイベントをシステムソフトウェアに提供し、デバイスノードの権限を管理し、/ devディレクトリに追加のシンボリックリンクを作成するか、ネットワークインタフェースの名前を変更します。

       The kernel usually just assigns unpredictable device names based on the order of discovery.

       カーネルは、通常、発見の順序に基づいて予測できないデバイス名を割り当てます。
       Meaningful symlinks or network device names provide a way to reliably identify devices based on their properties or current configuration.
       意味のあるシンボリックリンクまたはネットワークデバイス名は、デバイスのプロパティまたは現在の設定に基づいてデバイスを確実に識別する方法を提供します。

       The udev daemon, systemd-udevd.service(8), receives device uevents directly from the kernel whenever a device is added or removed from the system, or it changes its state.

       udevデーモン(systemd-udevd.service(8))は、デバイスがシステムに追加または削除されるたびにカーネルからデバイスueventsを直接受け取るか、またはデバイスの状態を変更します。
       When udev receives a device event, it matches its configured set of rules against various device attributes to identify the device.

       udevは、デバイスイベントを受信すると、設定されたルールのセットとさまざまなデバイス属性を照合してデバイスを識別します。
       Rules that match may provide additional device information to be stored in the udev database or to be used to create meaningful symlink names.

       一致するルールは、udevデータベースに格納するか、意味のあるシンボリックリンク名を作成するために使用する追加のデバイス情報を提供します。

       All device information udev processes is stored in the udev database and sent out to possible event subscribers.

       すべてのデバイス情報udevプロセスは、udevデータベースに格納され、可能なイベントサブスクライバに送信されます。
       Access to all stored data and the event sources is provided by the library libudev.

       格納されたすべてのデータおよびイベントソースへのアクセスは、ライブラリlibudevによって提供されます。

RULES FILES
       The udev rules are read from the files located in the system rules directory /usr/lib/udev/rules.d, the volatile runtime directory /run/udev/rules.d and the local administration directory /etc/udev/rules.d.

       udevルールは、システムルールディレクトリ/usr/lib/udev/rules.d、揮発性ランタイムディレクトリ/run/udev/rules.d、ローカル管理ディレクトリ/etc/udev/rules.dにあるファイルから読み込まれます。
       All rules files are collectively sorted and processed in lexical order, regardless of the directories in which they live.

       すべてのルールファイルは、それらが存在するディレクトリに関係なく、語彙順にまとめてソートされ、処理されます。
       However, files with identical filenames replace each other.

       ただし、同じファイル名のファイルは互いに置き換えられます。
       Files in /etc have the highest priority, files in /run take precedence over files with the same name in /usr/lib.

       /etc 内のファイルが最も優先度が高く、/run 内のファイルは /usr/lib 内の同じ名前のファイルよりも優先されます。
       This can be used to override a system-supplied rules file with a local file if needed; a symlink in /etc with the same name as a rules file in /usr/lib, pointing to /dev/null, disables the rules file entirely.

       これは、必要に応じてシステム提供のルールファイルをローカルファイルで上書きするために使用できます。 /dev/nullを指す /usr/lib 内の rules ファイルと同じ名前の /etc 内のシンボリックリンクは、rulesファイルを完全に無効にします。
       Rule files must have the extension .rules; other extensions are ignored.

       ルールファイルの拡張子は.rulesでなければなりません。 他の拡張子は無視されます。

       Every line in the rules file contains at least one key-value pair.

       rulesファイルの各行には少なくとも1つのキーと値のペアが含まれています。
       Except for empty lines or lines beginning with “#”, which are ignored.

       空行または “#”で始まる行を除き、無視されます。
       There are two kinds of keys: match and assignment.

       2種類のキーがあります:一致と割り当て。
       If all match keys match against their values, the rule gets applied and the assignment keys get the specified values assigned.

       すべての一致キーがその値と一致する場合、ルールが適用され、割り当てキーには指定された値が割り当てられます。

       A matching rule may rename a network interface, add symlinks pointing to the device node, or run a specified program as part of the event handling.

       マッチングルールは、ネットワークインタフェースの名前を変更したり、デバイスノードを指すシンボリックリンクを追加したり、イベント処理の一部として指定されたプログラムを実行することができます。

       A rule consists of a comma-separated list of one or more key-value pairs. Each key has a distinct operation, depending on the used operator. Valid operators are:

       ルールは、1つ以上のキーと値のペアのカンマ区切りのリストで構成されます。 それぞれのキーは、使用される演算子に応じて異なる操作をします。 有効な演算子は次のとおりです。

       “==”
           Compare for equality.

           平等のための比較

       “!=”
           Compare for inequality.

           不等式の比較

       “=”
           Assign a value to a key. Keys that represent a list are reset and only this single value is assigned.

           キーに値を割り当てます。 リストを表すキーはリセットされ、この単一の値だけが割り当てられます。

       “+=”
           Add the value to a key that holds a list of entries.

           エントリのリストを保持するキーに値を追加します。

       “-=”
           Remove the value from a key that holds a list of entries.

           エントリのリストを保持するキーから値を削除します。

       “:=”
           Assign a value to a key finally; disallow any later changes.

           最後にキーに値を割り当てます。 後で変更を許可しない。

       The following key names can be used to match against device properties. Some of the keys also match against properties of the parent devices in sysfs, not only the device that has generated the event.

       次のキー名を使用して、デバイスのプロパティと一致させることができます。 一部のキーは、イベントを生成したデバイスだけでなく、sysfsの親デバイスのプロパティとも一致します。
       If multiple keys that match a parent device are specified in a single rule, all these keys must match at one and the same parent device.

       親デバイスと一致する複数のキーが1つのルールで指定されている場合、これらのキーはすべて1つの同じ親デバイスで一致する必要があります。

       ACTION
           Match the name of the event action.

           イベントアクションの名前と一致します。

       DEVPATH
           Match the devpath of the event device.

           イベントデバイスのdevpathと一致します。

       KERNEL
           Match the name of the event device.

           イベントデバイスの名前と一致します。

       NAME
           Match the name of a network interface. It can be used once the NAME key has been set in one of the preceding rules.

           ネットワークインターフェイスの名前と一致します。 上記のルールのいずれかでNAMEキーが設定されていれば使用できます。

       SYMLINK
           Match the name of a symlink targeting the node. It can be used once a SYMLINK key has been set in one of the preceding rules. There may be multiple symlinks; only one needs to match.

           ノードを対象とするシンボリックリンクの名前と一致させます。 前述の規則の1つにSYMLINKキーが設定されている場合に使用できます。 複数のシンボリックリンクが存在する可能性があります。 1つだけ一致する必要があります。

       SUBSYSTEM
           Match the subsystem of the event device.

           イベントデバイスのサブシステムに一致します。

       DRIVER
           Match the driver name of the event device. Only set this key for devices which are bound to a driver at the time the event is generated.

           イベントデバイスのドライバ名を一致させます。 イベント発生時にドライバにバインドされているデバイスに対してのみ、このキーを設定します。

       ATTR{filename}
           Match sysfs attribute values of the event device. Trailing whitespace in the attribute values is ignored unless the specified match value itself contains trailing whitespace.

           イベントデバイスのsysfs属性値と一致します。 指定された一致値に末尾の空白が含まれていない限り、属性値の末尾の空白は無視されます。

       KERNELS
           Search the devpath upwards for a matching device name.

           devpathを上向きに検索し、一致するデバイス名を探します。

       SUBSYSTEMS
           Search the devpath upwards for a matching device subsystem name.

           devpathを上向きに検索し、一致するデバイス・サブシステム名を探します。

       DRIVERS
           Search the devpath upwards for a matching device driver name.

           devpathを上向きに検索して、一致するデバイスドライバ名を探します。

       ATTRS{filename}
           Search the devpath upwards for a device with matching sysfs attribute values.

           sysfsの属性値が一致するデバイスがあるかどうか検索します。
           If multiple ATTRS matches are specified, all of them must match on the same device.

           複数のATTRS一致が指定されている場合、それらのすべてが同じデバイス上で一致する必要があります。
           Trailing whitespace in the attribute values is ignored unless the specified match value itself contains trailing whitespace.

           指定された一致値に末尾の空白が含まれていない限り、属性値の末尾の空白は無視されます。

       TAGS
           Search the devpath upwards for a device with matching tag.

           タグが一致するデバイスを検索する。

       ENV{key}
           Match against a device property value.

           デバイスのプロパティ値と照合します。

          

       TAG
           Match against a device tag.

           デバイスタグと照合します。

       TEST{octal mode mask}
           Test the existence of a file. An octal mode mask can be specified if needed.

           ファイルの存在をテストします。 必要に応じて、8進モードのマスクを指定できます。

       PROGRAM
           Execute a program to determine whether there is a match; the key is true if the program returns successfully.

           プログラムが実行され、一致するかどうかが判断されます。 プログラムが正常に戻ると、キーはtrueになります。
           The device properties are made available to the executed program in the environment.

           デバイスのプロパティは、環境内の実行されたプログラムで使用できるようになります。

           The program’s standard output is available in the RESULT key.

           プログラムの標準出力はRESULTキーで利用できます。

           This can only be used for very short-running foreground tasks.

           これは非常に短期間のフォアグラウンドタスクにのみ使用できます。
           For details, see RUN.

           詳細は、RUNを参照してください。

       RESULT
           Match the returned string of the last PROGRAM call.

           最後のPROGRAM呼び出しの戻り文字列と一致します。
           This key can be used in the same or in any later rule after a PROGRAM call.

           このキーは、PROGRAM呼び出し後の同じルールまたは後のルールで使用できます。

       Most of the fields support shell glob pattern matching and alternate patterns.

       ほとんどのフィールドはシェルのglobパターンのマッチングと代替パターンをサポートしています。
       The following special characters are supported:

       次の特殊文字がサポートされています。

       “*”
           Matches zero or more characters.

           ゼロ個以上の文字に一致します。

       “?”
           Matches any single character.

           任意の1文字に一致します。

       “[]”
           Matches any single character specified within the brackets.

          角括弧内に指定された任意の1文字と一致します。
           For example, the pattern string “tty[SR]” would match either “ttyS” or “ttyR”.

           たとえば、パターン文字列 “tty [SR]”は “ttyS”または “ttyR”と一致します。
           Ranges are also supported via the “-” character.

           範囲は ” – “文字でもサポートされています。
           For example, to match on the range of all digits, the pattern “[0-9]” could be used.

           たとえば、すべての桁の範囲を一致させるには、パターン “[0-9]”を使用できます。
           If the first character following the “[” is a “!”, any characters not enclosed are matched.

           “[“が “!”の後の最初の文字は、囲まれていない文字と一致します。

       “|”
           Separates alternative patterns.

           別のパターンを区切ります。
           For example, the pattern string “abc|x*” would match either “abc” or “x*”.

           たとえば、パターン文字列 “abc | x *”は “abc”または “x *”と一致します。

       The following keys can get values assigned:

       次のキーで値を割り当てることができます。

       NAME
           The name to use for a network interface.

           ネットワークインタフェースに使用する名前。
           See systemd.link(5) for a higher-level mechanism for setting the interface name.

           インタフェース名を設定する上位レベルのメカニズムについては、systemd.link(5)を参照してください。
           The name of a device node cannot be changed by udev, only additional symlinks can be created.

           デバイスノードの名前はudevで変更することはできません。追加のシンボリックリンクだけを作成することができます。

       SYMLINK
           The name of a symlink targeting the node.

           ノードをターゲットとするシンボリックリンクの名前。
           Every matching rule adds this value to the list of symlinks to be created.

           すべてのマッチングルールは、作成するシンボリックリンクのリストにこの値を追加します。

           The set of characters to name a symlink is limited.

           シンボリックリンクに名前を付ける一連の文字は限られています。
           Allowed characters are “0-9A-Za-z#+-.:=@_/”, valid UTF-8 character sequences, and “\x00” hex encoding.

           有効な文字は “0-9A-Za-z#+ – 。:= @ _ /”、有効なUTF-8文字シーケンス、および “\ x00” 16進エンコーディングです。
           All other characters are replaced by a “_” character.

           他のすべての文字は “_”文字に置き換えられます。

           Multiple symlinks may be specified by separating the names by the space character.

           複数のシンボリックリンクは、スペース文字で名前を区切って指定することができます。
           In case multiple devices claim the same name, the link always points to the device with the highest link_priority.

           複数のデバイスが同じ名前を主張する場合、リンクは常に最も高いlink_priorityを持つデバイスを指します。
           If the current device goes away, the links are re-evaluated and the device with the next highest link_priority becomes the owner of the link.

           現在のデバイスが消えた場合、リンクは再評価され、次に高いlink_priorityを持つデバイスがリンクの所有者になります。
           If no link_priority is specified, the order of the devices (and which one of them owns the link) is undefined.

           link_priorityが指定されていない場合、デバイスの順序(およびそのリンクのいずれかが所有されているか)は未定義です。

           Symlink names must never conflict with the kernel’s default device node names, as that would result in unpredictable behavior.

           Symlinkの名前は、カーネルのデフォルトのデバイス・ノード名と決して衝突してはなりません。その結果、予期しない動作が発生します。

       OWNER, GROUP, MODE
           The permissions for the device node.

           デバイスノードのアクセス許可。
           Every specified value overrides the compiled-in default value.

           指定された値はすべて、コンパイルされたデフォルト値を上書きします。

       SECLABEL{module}
           Applies the specified Linux Security Module label to the device node.

           指定したLinuxセキュリティモジュールのラベルをデバイスノードに適用します。

       ATTR{key}
           The value that should be written to a sysfs attribute of the event device.

           イベントデバイスのsysfs属性に書き込まれる値。

       ENV{key}
           Set a device property value.

           デバイスプロパティ値を設定します。
           Property names with a leading “.”  are neither stored in the database nor exported to events or external tools (run by, for example, the PROGRAM match key).

           先頭に “.”が付いたプロパティ名 データベースに格納されず、イベントや外部ツール(PROGRAM一致キーなどによって実行される)にもエクスポートされません。

       TAG
           Attach a tag to a device.

           デバイスにタグを付けます。
           This is used to filter events for users of libudev’s monitor functionality, or to enumerate a group of tagged devices.

           これは、libudevのモニタ機能のユーザのためのイベントをフィルタリングするため、またはタグ付きデバイスのグループを列挙するために使用されます。
           The implementation can only work efficiently if only a few tags are attached to a device.

           実装は、デバイスに少数のタグだけが接続されている場合にのみ効率的に機能します。
           It is only meant to be used in contexts with specific device filter requirements, and not as a general-purpose flag.

           これは、特定のデバイスフィルタ要件を持つコンテキストでのみ使用され、汎用フラグとしては使用されません。
           Excessive use might result in inefficient event handling.

           過度に使用すると、効率の悪いイベント処理が行われる可能性があります。

       RUN{type}
           Add a program to the list of programs to be executed after processing all the rules for a specific event, depending on “type”:

          「タイプ」に応じて、特定のイベントのすべてのルールを処理した後に実行するプログラムのリストにプログラムを追加します。

           “program”
               Execute an external program specified as the assigned value.

               割り当てられた値として指定された外部プログラムを実行します。
               If no absolute path is given, the program is expected to live in /usr/lib/udev; otherwise, the absolute path must be specified.

               絶対パスが指定されていない場合、プログラムは /usr/lib/udev に存在するはずです。 それ以外の場合は、絶対パスを指定する必要があります。

               This is the default if no type is specified.

               タイプが指定されていない場合のデフォルトです。

           “builtin”
               As program, but use one of the built-in programs rather than an external one.

               プログラムとしては、外部プログラムではなく組み込みプログラムの1つを使用します。

           The program name and following arguments are separated by spaces.

           プログラム名とそれに続く引数はスペースで区切られます。
           Single quotes can be used to specify arguments with spaces.

           スペースで引数を指定するには、一重引用符を使用できます。

           This can only be used for very short-running foreground tasks.

           これは非常に短期間のフォアグラウンドタスクにのみ使用できます。
           Running an event process for a long period of time may block all further events for this or a dependent device.

           長期間にわたってイベントプロセスを実行すると、このデバイスまたは従属デバイスの今後のイベントがすべてブロックされる可能性があります。

           Starting daemons or other long-running processes is not appropriate for udev; the forked processes, detached or not, will be unconditionally killed after the event handling has finished.

           デーモンやその他の長時間実行されるプロセスの起動は、udevでは適切ではありません。 分離されたかどうかにかかわらず、フォークされたプロセスは、イベントの処理が完了した後で無条件に終了します。

       LABEL
           A named label to which a GOTO may jump.

           GOTOがジャンプする可能性のある名前付きラベル。

       GOTO
           Jumps to the next LABEL with a matching name.
           一致する名前で次のLABELにジャンプします。

       IMPORT{type}
           Import a set of variables as device properties, depending on “type”:

           「タイプ」に応じて、デバイスプロパティとして変数のセットをインポートします。

           “program”
               Execute an external program specified as the assigned value and import its output, which must be in environment key format.

               割り当てられた値として指定された外部プログラムを実行し、その出力をインポートします。これは環境キー形式でなければなりません。
               Path specification, command/argument separation, and quoting work like in RUN.

               パス仕様、コマンド/引数分離、およびRUNのような引用作業。

           “builtin”
               Similar to “program”, but use one of the built-in programs rather than an external one.

               “プログラム”と似ていますが、外部プログラムではなく組み込みプログラムの1つを使用します。

           “file”
               Import a text file specified as the assigned value, the content of which must be in environment key format.

               割り当てられた値として指定されたテキストファイルをインポートします。その内容は環境キー形式でなければなりません。

           “db”
               Import a single property specified as the assigned value from the current device database.

               現在のデバイスデータベースから、割り当てられた値として指定された1つのプロパティをインポートします。
               This works only if the database is already populated by an earlier event.

               これは、以前のイベントによってデータベースがすでに設定されている場合にのみ機能します。

           “cmdline”
               Import a single property from the kernel command line.

               カーネルのコマンドラインから単一のプロパティーをインポートします。
               For simple flags the value of the property is set to “1”.

               単純なフラグの場合、プロパティの値は “1”に設定されます。

           “parent”
               Import the stored keys from the parent device by reading the database entry of the parent device.

               親デバイスのデータベースエントリを読み取ることによって、親デバイスから格納されたキーをインポートします。
               The value assigned to IMPORT{parent} is used as a filter of key names to import (with the same shell glob pattern matching used for comparisons).

               IMPORT {parent}に割り当てられた値は、インポートするキー名のフィルタとして使用されます(比較に使用される同じシェルのglobパターンマッチングで)。

           This can only be used for very short-running foreground tasks. For details see RUN.

           これは非常に短期間のフォアグラウンドタスクにのみ使用できます。 詳細については、RUNを参照してください。

       WAIT_FOR
           Wait for a file to become available or until a timeout of 10 seconds expires.

           ファイルが使用可能になるのを待つか、タイムアウトが10秒になるまで待ちます。
           The path is relative to the sysfs device; if no path is specified, this waits for an attribute to appear.

           パスはsysfsデバイスとの相対パスです。 パスが指定されていない場合は、属性が表示されるのを待ちます。

       OPTIONS
           Rule and device options:

           ルールとデバイスのオプション:

           link_priority=value
               Specify the priority of the created symlinks.

               作成されたシンボリックリンクの優先度を指定します。
               Devices with higher priorities overwrite existing symlinks of other devices.

               高い優先順位を持つデバイスは、他のデバイスの既存のシンボリックリンクを上書きします。
               The default is 0.

               デフォルトは0です。

              

           string_escape=none|replace
               Usually control and other possibly unsafe characters are replaced in strings used for device naming.

               通常、制御やその他のおそらく危険な文字は、デバイスの命名に使用される文字列に置き換えられます。
               The mode of replacement can be specified with this option.

              このオプションで置換モードを指定することができます。

           static_node=
               Apply the permissions specified in this rule to the static device node with the specified name.

               このルールで指定された権限を、指定された名前の静的デバイスノードに適用します。
               Also, for every tag specified in this rule, create a symlink in the directory /run/udev/static_node-tags/tag pointing at the static device node with the specified name.

               また、このルールで指定されたすべてのタグについて、指定された名前を持つ静的デバイスノードを指す/ run / udev / static_node-tags /タグディレクトリにシンボリックリンクを作成します。
               Static device node creation is performed by systemd-tmpfiles before systemd-udevd is started.

               静的デバイスノードの作成は、systemd-udevdが起動する前にsystemd-tmpfilesによって実行されます。
               The static nodes might not have a corresponding kernel device; they are used to trigger automatic kernel module loading when they are accessed.

               静的ノードには、対応するカーネルデバイスがない可能性があります。 それらがアクセスされたときにカーネルモジュールの自動ロードを起動するために使用されます。

           watch
               Watch the device node with inotify; when the node is closed after being opened for writing, a change uevent is synthesized.

               inotifyでデバイスノードを監視する。 書き込みのためにノードを開いた後にノードを閉じると、変更イベントが合成されます。

           nowatch
               Disable the watching of a device node with inotify.

               inotifyでデバイスノードの監視を無効にする。

       The NAME, SYMLINK, PROGRAM, OWNER, GROUP, MODE, and RUN fields support simple string substitutions.

       NAME、SYMLINK、PROGRAM、OWNER、GROUP、MODE、およびRUNフィールドは、単純な文字列の置換をサポートします。
       The RUN substitutions are performed after all rules have been processed, right before the program is executed, allowing for the use of device properties set by earlier matching rules.

       RUN置換は、プログラムが実行される直前にすべてのルールが処理された後に実行され、以前の一致ルールによって設定されたデバイスプロパティの使用を可能にする。
       For all other fields, substitutions are performed while the individual rule is being processed.

       他のすべてのフィールドでは、個々のルールが処理されている間に置換が実行されます。
       The available substitutions are:

       使用可能な置換は次のとおりです。

       $kernel, %k
           The kernel name for this device.

           このデバイスのカーネル名。

       $number, %n
           The kernel number for this device.

           このデバイスのカーネル番号。
           For example, “sda3” has kernel number “3”.

           たとえば、 “sda3″はカーネル番号 “3”を持ちます。

       $devpath, %p
           The devpath of the device.

           デバイスのdevpath。

       $id, %b
           The name of the device matched while searching the devpath upwards for SUBSYSTEMS, KERNELS, DRIVERS, and ATTRS.

           SUBSYSTEMS、KERNELS、DRIVERS、ATTRSのためにdevpathを上向きに検索している間にマッチしたデバイスの名前。

       $driver
           The driver name of the device matched while searching the devpath upwards for SUBSYSTEMS, KERNELS, DRIVERS, and ATTRS.

           SUBSYSTEMS、KERNELS、DRIVERS、ATTRSのためにdevpathを上向きに検索しながら、デバイスのドライバ名が一致しました。

       $attr{file}, %s{file}
           The value of a sysfs attribute found at the device where all keys of the rule have matched.

           ルールのすべてのキーが一致したデバイスで検出されたsysfs属性の値。
           If the matching device does not have such an attribute, and a previous KERNELS, SUBSYSTEMS, DRIVERS, or ATTRS test selected a parent device, then the attribute from that parent device is used.

           一致するデバイスにこのような属性がなく、以前のKERNELS、SUBSYSTEMS、DRIVERS、またはATTRSテストで親デバイスが選択されている場合、その親デバイスの属性が使用されます。

           If the attribute is a symlink, the last element of the symlink target is returned as the value.

           属性がシンボリックリンクの場合、シンボリックリンクターゲットの最後の要素が値として返されます。

       $env{key}, %E{key}
           A device property value.

           デバイスプロパティ値。

       $major, %M
           The kernel major number for the device.

           デバイスのカーネルメジャー番号。

       $minor, %m
           The kernel minor number for the device.

           デバイスのカーネルマイナー番号。

       $result, %c
           The string returned by the external program requested with PROGRAM.

           PROGRAMで要求された外部プログラムから返された文字列。
           A single part of the string, separated by a space character, may be selected by specifying the part number as an attribute: “%c{N}”.

           スペース文字で区切られた文字列の単一の部分は、部品番号を属性 “%c {N}”として指定することによって選択することができます。
           If the number is followed by the “+” character, this part plus all remaining parts of the result string are substituted: “%c{N+}”.

           数字の後に “+”文字が続く場合、この部分と結果文字列の残りの部分は “%c {N +}”で置き換えられます。

       $parent, %P
           The node name of the parent device.

           親デバイスのノード名。

       $name
           The current name of the device.

          デバイスの現在の名前。
           If not changed by a rule, it is the name of the kernel device.

           ルールによって変更されていない場合は、カーネルデバイスの名前です。

       $links
           A space-separated list of the current symlinks.

           現在のシンボリックリンクのスペースで区切られたリスト。
           The value is only set during a remove event or if an earlier rule assigned a value.

           この値は、削除イベント中に設定されるか、以前のルールで値が割り当てられている場合にのみ設定されます。

       $root, %r
           The udev_root value.

           udev_rootの値。

       $sys, %S
           The sysfs mount point.

           sysfsマウントポイント。

       $devnode, %N
           The name of the device node.

           デバイスノードの名前。

       %%
           The “%” character itself.

           “%”文字自体。

       $$
           The “$” character itself.

           “$”文字自体。

SEE ALSO
       systemd-udevd.service(8), udevadm(8), systemd.link(5)

systemd 219                                                                                                                                                                                                                     UDEV(7)

 

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください