Udev/ja

udev (user ) は Article description:: の Linux カーネルのためのデバイスマネージャです. 内のデバイスノードを管理し、デバイスを追加または削除するときのユーザ空間での操作のすべてを取り扱います.

パッケージは、 init システムを使用する Gentoo システムのためのデフォルトのデバイスマネージャとして、systemd から独立して、利用されます.

カーネル
には、以下のカーネルオプションが必要です:

USE フラグ
Portage は USE フラグを、他のパッケージの udev サポートを有効化するものであると認識しています. この USE フラグ値を USE フラグリストに追加すると (すべての Linux でデフォルトです)、 パッケージを自動でインストールするでしょう:

emerge
USE フラグを設定したら、システムを更新して変更を反映させましょう:

サービス
起動時に udev を始動させるには、 sysinit ランレベルに追加します. root 権限で以下のコマンドを実行すると可能です:

ルール
udev は、uevent (カーネルによって送信されるイベント) から抽出された値と、発見されたデバイスのプロパティに対してマッチする、ルールの集合を提供します. マッチングルールは、デバイスノードを命名して作成し、デバイスのセットアップおよび構成のために設定されたプログラムを実行することができます.

ルール定義は以下の 2 箇所に保存されます:


 * 1)  - このディレクトリ内のルールは 特定のパッケージによりインストールされ、一般にユーザが変更すべきではありません;
 * 2)  - このフォルダはエンドユーザ固有のルールのためのものです. 新しいルールはすべてこのディレクトリに追加すべきです;

In these directories, multiple rule files (with suffix ) are traversed in alphanumerical order. Inside the rules files, udev will find expressions that might match a uevent together with the state to match (is the uevent because a device is added or removed) and the command to execute.

イベントマッチングは、次のような情報に基づいています:


 * The SUBSYSTEM of the uevent (for which type of device is the uevent fired);
 * The ACTION that is taken (add, change, or remove);
 * One or more attributes (through ATTR or ATTRS), such as the device class, vendor or other device information;
 * The kernel-provided name (through KERNEL), such as sd* (for SCSI/SATA disks) or input* (for input devices such as mice and keyboards);
 * One or more environment settings (through ENV), used to send information between multiple rules.

Based on this information, the rule can then state if:


 * 1) Some information needs to be shared with later events (through environment variables)
 * 2) Links need to be created in
 * 3) Commands need to be executed

Udev does this for every rule that matches (it does not stop after the first match) to allow a flexible device management approach.

永続的なデバイス名
The kernel detects devices asynchronously, udev mirrors the kernel's filesystem and so the devices are named and numbered in order of detection. So by default udev provides no persistent device names. However there are mechanisms for some device classes to provide these:


 * Udev creates for storage devices additional symlinks based on the device's ID, and path. See the  directory. So instead of using e.g. the device file  use the file.


 * The same for input devices in the directory.


 * Using custom rules enables users to create their own device files.

Predictable network interface naming
The new network interface naming convention is not the same. So the used by  will need to be re-linked. Use as a link target for whatever interface names need to be added. Be sure to replace   in the commands below with the Ethernet interface names present on the system. It is possible to discover which interfaces exist by running the command:

Create a symbolic link for the existing interfaces in the directory:

Edit with any necessary configuration for all interfaces.

Add the script(s) to the default runlevel to have the interface(s) start automatically:

省略可能: 予測可能なネットワークインターフェース名を無効化または上書きする
Network device names such as  or   as provided by the kernel are normally changed on system boot (see ) by the  udev rule and the NamePolicy in.

This behavior may be disabled in several ways:


 * 1) Symlink  to :.
 * 2) Create a lower-numbered .link file in  which assigns a different name to the interface.
 * 3) Pass   on the kernel command line.

Reference: https://systemd.io/PREDICTABLE_INTERFACE_NAMES/

使い方
便利なコマンドをいくつか挙げると:


 * すべての udev アクティビティを監視します:




 * 与えられたデバイスファイルについてのすべてのメッセージを表示します:




 * 与えられた デバイスファイル ( を通じて取得できるかもしれません) についての udev 情報を表示します:




 * udev ルールファイルの例 - Ethernet デバイスに永続的な名前を割り当てます:




 * 内のルールファイルを変更した後は、再起動するか、以下のコマンドで udev に再読み込みさせます:




 * 既に追加されているデバイス (接続済みの USB 等) に対しては、再読み込みされたルールは、デバイスを変更する (USB を接続し直す 等) か、 によって udev にカーネルイベントを再度リクエストさせることで反映されます. 様々なイベントアクションを発動させることができます. デフォルトでは change イベントアクションが発動します:



さらなる情報は の  を読んでください.

監視中のメッセージをログとして出力する
を実行中のすべてのメッセージをログとして出力するには、次の設定ファイルを変更してください:

に新しいログファイルが作成されるでしょう.

デバッグモード
デバッグモードを有効にすると、詳細なメッセージをログに記録します:

ロギングの優先順位を設定します:

ログファイル が作成されますが、メッセージはこのファイルに出力されないでしょう. 最新版の udev はすべてのメッセージを に出力するでしょう.

デバイスファイル と  が無い
一部の版の udev は、正しく動作するために と  ファイルを必要としますが、自身でこれらを作成することができません. udev のためにこれらのファイルを手動で作成するには、次のコマンドを root 権限で実行してください:

NIC assigned eth0, but is moved to eth1
Those having dual network cards on their motherboards may run into a situation where may show no eth0 or eth1. may show their NIC detected as eth0, and later moved to eth1. Performing a will also show the NIC as eth1. This is caused by using the kernel assigned names in the first place. Users should write custom rules like to use free names like lan0 or wireless0 or use predictable interface names (which have been enabled by default since udev version 197).

Remember to also remove old files from old versions of udev:

Also make sure not to pass  on the kernel commandline. This setting would disable the predictable interface names feature of udev altogether.

外部資料

 * - デフォルトの プロバイダが  に変わりました