eudev

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Eudev and the translation is 92% complete.


The information in this article is representative of former times and has been archived as of 2023-10-12. It can be used for reference, but is most likely not appropriate for current usage. Generally, archived articles should not be edited.
eudev はもう Gentoo で利用できません。代わりに sys-apps/systemd-utils に含まれる udev を使用することが推奨されます。移行は無事に行えるはずですが、問題を避けるには対応するニュース項目を読み、それに従わなくてはなりません


これと混同しないでください: udev.


eudevsystemd の 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 フラグに対応しています。

Cannot load package information. Is the atom sys-fs/eudev correct?

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-triggersysinit ランレベルに追加してください

選択可能: 伝統的なネットワークインターフェース命名法を維持する

警告
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 の この投稿を参照してください。

関連項目

外部資料

参照

  1. 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.
  2. Project:Eudev, Gentoo Wiki, (Last modified) November 12th, 2015. Retrieved on March 11th, 2016.