udevとは何か?
端的にいうとLinuxカーネルで使用されるデバイス管理の仕組みである。USBやHDDなどシステムに接続されるすべてのハードウェアを動的に管理してくれる。
udevの動作
Linuxカーネルは、デバイスが接続されたり取り外されたりした際にイベント(uevent)を生成します。/sys:カーネルは/sysという仮想ファイルシステムを介して、システム内のデバイスに関する情報を提供します。udevはこの情報を利用します。devd:udevdは、カーネルから送信されるueventを監視しており、デバイスが接続されたり、取り外されたりしたときに自動的に動作します。/devディレクトリ:udevdは、デバイスが接続されると自動的に**/dev**ディレクトリ内にデバイスファイルを作成します。デバイスが取り外されると、対応するデバイスファイルを削除します。
udevルール
/etc/udev/rules.d/と/lib/udev/rules.d/:これらのディレクトリには、udevの動作を制御するためのルールファイルが配置されます。
-
/etc/udev/rules.d/
:ユーザーがカスタマイズしたルールファイルを置く場所です。例えば、特定のUSBデバイスが接続されたときにスクリプトを実行させるなど、独自の処理を設定できます。 -
/lib/udev/rules.d/
:システムが提供するデフォルトのルールが配置される場所です。これらは通常、OSやパッケージによって提供されます。
udevadmコマンド
Linuxのudevデバイスマネージャを管理するためのコマンドラインツールです。
1. udevadm monitor
udevadm monitor
は、デバイスイベント(uevent)をリアルタイムで監視するコマンドです。これにより、デバイスの接続や切断、カーネルによって発生するイベントを確認できます。
sudo udevadm monitor
2. udevadm trigger
udevadm trigger
は、手動でイベントを発生させて、udevに処理を実行させるコマンドです。特定のデバイスのルール適用を再度強制的に行いたい場合や、すべてのデバイスに対して処理を再適用したい場合に使用します。
sudo udevadm trigger
3. udevadm control
udevadm control
は、udevデーモンの動作を制御するコマンドです。たとえば、新しく追加したルールを有効にするためにudevのルールを再読み込みしたり、udevデーモンを再起動したりする際に使用します。
sudo udevadm control --reload-rules
4. udevadm info
udevadm info
は、特定のデバイスに関する詳細な情報を取得するコマンドです。デバイスの属性や適用されているルール、関連するパスなどを確認するのに使用します。
特定のデバイス(例:/dev/sda)に関するすべての情報を表示する:
sudo udevadm info --query=all --name=/dev/sda