3

実行時にカーネルにロードされたカーネルモジュールの完全な依存関係リストをコマンドラインからリストダウンする方法はありますか?

私の質問を少し明確にさせてください。

私がやろうとしていること:

  1. を使用して、ロードされたすべてのモジュールのリストを取得しますlsmod
  2. 次に、ループを実行して、現在ロードされているカーネル モジュールを削除/アンロードします。を使用してmodprobe -rいます。いくつかのモジュールが使用されているため、このステップは (明らかに) 失敗します。(使用に切り替えることはrmmod -rできますが、安全ではなく、システムをクラッシュさせる可能性があるため、切り替えたくありません。)
  3. 次に、モジュールを 1 つずつ再度ロードします。

を使用する前にすべてのモジュールの依存関係を取得できないため、失敗しているのはステップ 2 ですmodprobe -r

アイデア、提案、コメントはありますか?

4

3 に答える 3

5

ただし、lsmod o/p は不完全な場合があります。また、特定のモジュールに依存するすべてのモジュールを常に示すわけではありません。

「使用者」列の lsmod に表示されるのは、 を使用して確認できる静的シンボルの依存関係にすぎませんmodinfo

ただし、カーネル コードの一部が (try_)module_get を使用してモジュールを参照する場合、呼び出し元は記録されません。参照には所有者がなく (moduleA は moduleB にポインターを渡すことができ、module_puts ..)、Used by 列に記録するものは何もありません。

于 2010-11-21T13:15:40.113 に答える
2

man lsmod: lsmod は、 の内容を適切にフォーマットし、/proc/modules現在ロードされているカーネル モジュールを表示する簡単なプログラムです。

編集済み: も参照してください:depmod -n

于 2010-11-01T21:25:56.273 に答える