質問が簡単すぎた場合はお詫び申し上げます。ところで、LinuxシステムモジュールとLinuxカーネルモジュールの間に違いがあるかどうか尋ねたいと思います。違いがある場合、どちらもどこにありますか? /lib/module/$(uname -r) はカーネルモジュールを表示し、 /sys/module/ はシステムモジュールを表示しますか?
答え1
/lib/module/$(uname -r)
ディスクのディレクトリです。これにはファイルが含まれており、そのほとんど(*.ko
)はモジュールファイルです。つまり、カーネルモジュールコードを含むファイルです。原則として、このディレクトリ(およびサブディレクトリ)のファイルには、実行中のカーネルにロードできるモジュールが含まれています。
/sys/module
カーネルの内部構造を公開する仮想ファイルシステムのディレクトリ。このディレクトリのファイルにアクセスすると、ディスク階層に入らず、一部の内部カーネルデータ構造のみを表示するカーネルの関数が呼び出されます。の各エントリは/sys/module
実行中のカーネルのコンポーネントに対応し、コードはメモリにロードされアクティブになります。これには、ロードされたすべてのモジュールだけでなく、モジュールにロードできますが、カーネルがコンパイルされたときにカーネルに直接ビルドされるコンポーネントも含まれます。
/lib/module/$(uname -r)
アイテムに対応しないファイルを含めるのが/sys/module
一般的です。これは、コンピュータにない一部のハードウェア(またはカーネルによって管理されている他のもの)のドライバです。コンポーネントがカーネルにビルドされると、そのファイルなしでエントリが/sys/module
表示されます(/lib/module/$(uname -r)
これはこれを通知する方法)、またはモジュールが別の場所にあるファイルから手動でロードされた(または現在削除されている)かどうか。
システムがルートファイルシステムを別の場所(ネットワークやRAMディスクなど)に保存している場合、ディスク以外の場所にはほとんど保存されません。
答え2
このディレクトリは、/sys/module/
システムに必要なさまざまな情報を含むフォルダで、システム内のすべてのモジュールを名前で表示します。このディレクトリには、/lib/module/$(uname -r)
機能に応じてフォルダ階層に格納されているカーネルモジュールファイルが含まれています。
たとえば、ソフトウェアウォッチドッグカーネルモジュールファイルは/lib/module/$(uname -r)/kernel/drivers/watchdog/softdog.ko
。/sys/module/
モジュール自体のファイルです。
名前でモジュールを操作できます。modprobe [args] <module-name> [module-params]
.ko
ファイルパスを使用してモジュールを操作できますinsmod [args] <path> [module-params]
。
カーネルモジュールを操作するにはroot権限が必要です。