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 ランレベルに追加してください。
選択可能: 伝統的なネットワークインターフェース命名法を維持する
This section is obsolete. See Udev: Disable or override predictable network interface naming for updated instructions.
Network device names such as eth0 or wlan0 as provided by the kernel are normally changed on system boot (see dmesg) by the /lib/udev/rules.d/80-net-name-slot.rules udev rule.
To keep the classic naming this rule can be overwritten with an equally named empty file in the /etc/udev/rules.d directory:
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's device manager for the Linux kernel.
- 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.