This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Eudev
Warning: Display title "eudev/ja" overrides earlier display title "Eudev".
eudev は systemd を使わない構成向けの、 Gentoo の Linux カーネル用デバイスファイルマネージャーです。[1] /dev のデバイスノードを管理し、デバイスが追加されたり取り外されたりした時のユーザースペースでのすべての活動を処理します。eudevは systemd の udev のフォークであり、OpenRC、Upstart、古いカーネル、さまざまなツールチェーン、その他 udev が必要とする[2] (しかしあまりサポートされていない)ソフトウェアといった既存のソフトウェアとのよりよい互換性を得ることを目的としています。
The goal of eudev is to obtain better compatibility with existing software such as OpenRC, Upstart, older kernels, various toolchains, and anything else required[3] by (but not well supported through) udev. Configurations utilizing systemd should not use it.
/dev ディレクトリ
多くの Linux ユーザは、/dev/sda1 はカーネルが認識した最初のディスクの最初のパーティションを指す最短の手段だということを知っています。これはとても平易でしょう。
しかし、USB や IEEE1394、ホットスワップ可能な PCI などのホットプラグ対応デバイスを考えてみてください。最初のデバイスというのはこれらのうちどれのことでしょう? そして、いつまで最初のデバイスといえるのでしょう? 最初のデバイスが消えたとき、他のデバイスは何と名付けられるのでしょうか? それは進行中の処理に影響するでしょうか? 母親が(たまたま最初のプリンターになっていた)レーザープリンターのプラグを引っこ抜いたというだけの理由で印刷ジョブが高性能なレーザープリンターからほとんど壊れかけのマトリックスプリンターに突然移ってしまったとしたら、笑ってしまいませんか?
デバイスマネージャに入ってみましょう。( udev や eudev のような)今どきのデバイスマネージャならば必ず:
- ユーザスペースで動作する;
- 動的にデバイスファイルが生成されたり削除されたりする;
- 一貫したデバイス命名を行う;
- ユーザスペースのアプリケーション・プログラム・インターフェイス(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 から eudev への移行
udev 216 から eudev 1.10-r2 (2015年3月) への移行は簡単です:
root #
emerge --ask --oneshot sys-fs/eudev
システムが multilib を使っており、例えば abi_x86_32
USE フラグを以前の udev パッケージに対して有効化している場合には、それも変更することを忘れないようにしてください:
/etc/portage/package.use
package.use の udev を eudev に変更する# sys-fs/udev abi_x86_32 sys-fs/eudev abi_x86_32
伝統的な 'eth0' 命名を維持する
起動時にカーネルが作成する eth0
や eth1
のようなネットワークデバイス名(dmesg 参照)は、/lib/udev/rules.d/80-net-name-slot.rules での udev ルールを用いて変更可能です。
旧来の命名ルールを維持するには、/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 にあります。
新しい '予測可能な' 命名を使用する
新しいネットワークインターフェイスへの命名規約が変更されているので、インターフェイスを再度リンクする必要があります。追加する必要があるインターフェイスの名前が何であれ、/etc/init.d/net.lo をリンク先として使用してください。以下のコマンドでは、<interface_name>
を システムで提供されるイーサネットインターフェイスの名前に必ず置き換えてください。ifconfig コマンドを実行することでどのようなインターフェイスが存在するか知ることができます:
user $
ifconfig
存在するインターフェイスについて、/etc/init.d/ と /etc/conf.d/ の中にシンボリックリンクを作成します:
root #
ln -s /etc/init.d/net.lo /etc/init.d/net.<interface_name>
root #
ln -s /etc/conf.d/net.lo /etc/conf.d/net.<interface_name>
インターフェイスを自動的に開始するには、スクリプトを default ランレベルに追加します:
root #
rc-update add net.<interface_name> default
トラブルシューティング
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 - オリジナルの udev。
- Gentoo eudev Project - udevをフォークするGentooの公式プロジェクト。
- Allow only known usb devices
- 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.
- ↑ Project:Eudev, Gentoo Wiki, (Last modified) November 12th, 2015. Retrieved on March 11th, 2016.