Linux環境のデバイスマネージャとは何ですか?

Linux環境のデバイスマネージャとは何ですか?

Linux環境のデバイスマネージャとは何ですか?つまり、デバイスマネージャは実際に何をしますか?

https://en.wikipedia.org/wiki/Udev説明する

ウデブ(ユーザースペース/ dev)はLinuxカーネルのデバイスマネージャです。

それはどういう意味ですか?

ウィキペディアは続きます:

Udevはdevfsdとhotplugの後継バージョンで、主に/devディレクトリ内のデバイスノードを管理し、一部のデバイスに必要なファームウェアのロードを含む、ハードウェアデバイスがシステムに追加または削除されたときに発生するすべてのユーザースペースイベントを処理します。

この文は私には意味がありません。まず、「ディレクトリ内のデバイスノードを管理する  /dev」とはどういう意味ですか?

Slerbeitman 言う:

デバイスドライバを自動的に有効または無効にするソフトウェアです。 「自動」部分は、通常、新しい装置が機械に接続されていることを検出することによって実行されます。デバイスドライバを有効にすることに加えて、デバイスを自動的に設定します(たとえば、ディスクマネージャを開いたり、ドライブをマウントするコマンドを実行せずにUSBドライブを検出した場合は自動的にマウントします)。

「デバイスドライバを自動的に有効または無効にする」の目的は何ですか?では、カーネルはデバイスやプログラムと対話できますか?もしそうなら、デバイスはユーザー空間またはカーネル空間で実行できますか?

答え1

Udevは、新しく検出されたすべてのデバイス(システム起動後に「ホットプラグ」デバイスとシステム起動時に恒久的に接続された「コールドプラグ」デバイスを含む)の設定を処理します。

  • カーネルが新しく検出されたデバイスを通知するたびに、必要に応じてカーネルモジュール(ドライバ)をロードします。

  • これらのデバイスのデバイスノードを更新します/dev。所有権、グループ、権限を設定します。また、シンボリックリンクも作成します/dev/disk/by-uuid

    過去にはudevも使用されていました。作る/ devのすべてのデバイスノード(「mknod」を使用)とデバイスが切断されたら、そのノードを削除します。これは現在Linuxでは不要です。代わりにカーネルに「devtmpfs」があり、デバイスは自動的に表示されますが、udevは依然として権限の変更とシンボリックリンクの作成を担当します。

  • デバイスを初期化するために実行できるヘルパー(コードをスキャンするためにキーボードを再マップしたり、プリンタにファームウェアをアップロードしたり、/sysノブを刺すなど)、デバイスのメタデータを向上させることができるヘルパーなどのカスタムルールを処理します。ユーザースペースプログラム用(例:libinputのタッチパッドサイズ、systemd-hwdbを参照)

一般的なプロセスは次のとおりです。

  1. カーネルはデバイス(USBバスの下位レベル「USBデバイスVID:PID」)を検出し、Netlinkを介してueventを発行します。

  2. Udevの/{etc,lib,usr/lib}/udev/rules.d/.moduleロード処理は、udevが実行するほとんどすべてと同様に、そこにある特別なルールです。

  3. Udevは、ユーザースペースが反応できるようにNetlinkを介して改善されたueventをエクスポートします。

    ほとんどのプログラムは意図的に初期カーネルイベントを無視しますが、udevのブーストイベントを待ちます。このようにルールが必要なタスクを完了した後にのみデバイスの使用を開始します。

Udevは厳密には適用されません。必要なすべてのドライバを含むカーネルを手動でコンパイルまたはロードすると、modprobeほとんどの操作が機能します。 (ドライバがロードされるとすぐに認識されたデバイスに自動的に接続されます。これはudevでは処理されません。)

新しく検出されたデバイスを通知したり、追加のメタデータを提供したりするために、udevに依存するソフトウェアは機能しません。たとえば、X11は新しいモニターやマウスを接続するときには気付いていません。

関連情報