eudev

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Eudev and the translation is 100% 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 を使用することが推奨されます。移行は無事に行えるはずですが、問題を避けるには対応するニュース項目を読み、それに従わなくてはなりません
Resources
これと混同しないでください: 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 ランレベルに追加してください

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

警告
このセクションの情報は古くなっています。更新された手順については 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 の この投稿を参照してください。

関連項目

外部資料

参照

  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.