eudev
eudev は systemd の Linux カーネル用デバイスファイルマネージャーである udev のフォークです。[1] /dev のデバイスノードを管理し、デバイスが追加されたり取り外されたりした時のユーザースペースでのすべての活動を処理します。
eudev のゴールは、OpenRC init システム、Upstart init システム、古いカーネル、さまざまなツールチェーン、その他 udev が必要とする[2] (しかしあまりサポートされていない) ソフトウェアといった、既存のソフトウェアとのよりよい互換性を得ることです。
ebuild、eclass、emerge 等と同様に、eudev という名前は、Gentoo の創設者である Daniel Robbins が開始した 'E' 接頭辞規約に従っています。
systemd を実行するためのシステム構成ファイルは eudev では使用できません。
/dev ディレクトリ
多くの Linux ユーザは、/dev/sda1 はカーネルが認識した最初のディスクの最初のパーティションを指す最短の手段だということを知っています。これはとても平易でしょう。
しかし、USB や IEEE 1394、ホットスワップ可能な PCI などのホットプラグ対応デバイスを考えてみてください。最初のデバイスというのはこれらのうちどれのことでしょう? そして、いつまで最初のデバイスといえるのでしょう? 最初のデバイスが消えたとき、他のデバイスは何と名付けられるのでしょうか? それは進行中の処理に影響するでしょうか? 誰かが(たまたま最初のプリンターになっていた)レーザープリンターのプラグを引っこ抜いたというだけの理由で、印刷ジョブが高性能なレーザープリンターからほとんど壊れかけのマトリックスプリンターに突然移ってしまったとしたら、笑ってしまいませんか?
デバイスマネージャに入ってみましょう。今どきのデバイスマネージャならば必ず:
- ユーザスペースで動作します。
- 動的にデバイスファイルが生成されたり削除されたりします。
- 一貫したデバイス命名を行います。
- ユーザスペースのアプリケーション・プログラム・インターフェイス (API) を提供します。
デバイスの構造に変化が生じるたびにカーネルは uevent を発行し、デバイスマネージャがそれを受け取ります。それから、デバイスマネージャは /etc/udev/rules.d 、 /run/udev/rules.d および /lib/udev/rules.d ディレクトリで定義されたルールに従います。uevent 内に含まれている情報を元に実行する必要があるルール(群)を探し必要なアクションを行います。これらのアクションにはデバイスファイルの作成・削除も含まれており、また特定のファームウェアファイルのカーネルメモリへの読み込みも実行します。
インストール
USE フラグ
いくつかのパッケージは virtual/udev との統合を有効化する udev
USE フラグに対応しています。
Emerge
world 集合へ登録されるのを防ぐため、 oneshot オプションを使用してください。
root #
emerge --ask --oneshot sys-fs/eudev
設定
RC サービス
RC での名前は eudev ではなく udev です。これを sysinit ランレベルに登録する必要があります。
root #
rc-update add udev sysinit
* rc-update: udev already installed in runlevel `sysinit'; skipping
sys-fs/udev-init-scripts バージョン 29 以降では、 udev-trigger
も sysinit ランレベルに追加してください。
選択可能: 伝統的なネットワークインターフェース命名法を維持する
このセクションの情報は古くなっています。更新された手順については Udev#省略可能: 予測可能なネットワークインターフェース名を無効化または上書きするを参照してください。
カーネルによって提供される eth0 や wlan0 のようなネットワークデバイス名は、通常は /lib/udev/rules.d/80-net-name-slot.rules での udev ルールによってシステムの起動時に変更されます (dmesg 参照)。
旧来の命名ルールを維持するには、/etc/udev/rules.d ディレクトリ内に、同じ名称のファイルを空で作成することで上書きします:
root #
touch /etc/udev/rules.d/80-net-name-slot.rules
上述の手順の代わりに、net.ifnames=0
をカーネルコマンドラインに追加したり、デフォルトのポリシーを変更したり、新しいポリシーを作成することもできます。
ネットワークの命名についての興味深い資料が Freedesktop wiki の I don't like this, how do I disable this にあります。
トラブルシューティング
udevadm の使用
udevadm monitor 実行してみましょう:
user $
udevadm monitor
udevadm info に続いてデバイスパスを指定すると、デバイスの情報を取得できます:
user $
udevadm info -p /devices/pci0000:00/0000:00:1d.7
デバイスの名前を使用してパスを取得します:
user $
udevadm info -q path -n input/mouse1
/devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3.4/1-3.4:1.0/0003:046D:C404.0006/input/input24/mouse1
udevadm test に続いてイベントをテストするデバイスのパスを使用すると、イベントの実行をテストすることができます:
user $
udevadm test /devices/pci0000:00/0000:00:1d.7
すべての udevadm におけるコマンドのリストを得るには:
user $
udevadm -h
古いリリースから移行する
udev 171-r10 から eudev 1.2-r1
Gentoo forums のこの投稿を参照してください。
udev から eudev への移行中に壊れたシステム
Gentoo forums の この投稿を参照してください。
関連項目
- Udev — systemd の Linux カーネルのためのデバイスマネージャです。
- Gentoo eudev Project — udev をフォークする Gentoo の公式プロジェクト。
- Allow only known usb devices — describes how to protect a GNU/Linux system against rogue USB devices via a white listing policy.
- Google Summer of Code/2016/Ideas/Eudev
外部資料
- Gentoo Forums の Moving from udev (171-r10) to eudev (1.2-r1)
参照
- ↑ Bug 575718 - Request for council decision RE virtual/udev default provider, Gentoo's Bugzilla Main Page, (Last modified) February 27th, 2016. Retrieved on March 1st, 2016.
- ↑ Project:Eudev, Gentoo Wiki, (Last modified) November 12th, 2015. Retrieved on March 11th, 2016.