insmod と modprobe の違いは何ですか?

insmod と modprobe の違いは何ですか?

insmod と modprobe には違いがありますか?

答え1

modprobeモジュールを読み取ります/lib/modules/$(uname -r)/modules.dep.bin(他のファイルが利用できない場合はサフィックスなし.bin)。同じファイルから依存関係が読み込まれます。

modprobe.koは、内のファイル名/lib/modules/$(uname -r)(例nvidia-current: ファイルdkms/nvidia-current.ko) とエイリアス ( modules.alias.bin) を受け入れます。組み込みモジュール ( modules.alias.bin) も認識されますが、これらのモジュールはデフォルトでロードされるため、この種のモジュールを modprob しても意味がありません。

insmod一方、 はファイルへのパスを受け入れます。モジュールは に存在する必要はありません/lib/modules/$(uname -r)が、依存関係は自動的にはロードされません。これは、 がmodprobeモジュールをロードするために使用する下位プログラムです。

モジュールに関連するその他のプログラムはrmmodおよびですmodinfo

rmmodからの名前に基づいてカーネル名を削除します/proc/modules。この名前は、必ずしも に渡された名前と同じである必要はありませんmodprobe(nvidia-currentファイルの場合、これはnvidiaたとえばです)。

modinfo.koファイル名、またはサフィックスなしのファイル名を受け入れます/lib/modules/$(uname -r)

答え2

あたりman insmod:

ほとんどのユーザーは、より賢く、モジュールの依存関係を処理できる modprobe を代わりに使用することを望むでしょう。

答え3

modprobeはインテリジェントなコマンドで、モジュールをロードするときに依存関係を探します。他のモジュールで定義されたシンボルを持つモジュールをロードしたとします (このモジュール パスはメイン モジュール内で指定されます)。したがって、modprobeメイン モジュールと依存モジュールがロードされます。

しかし、insmodを使用すると、依存関係が読み込まれないため、 のようなコンパイル エラーが発生しますUnresolved symbols。この場合、エラーを解決するには、依存モジュールを手動で探し、それらを読み込む必要があります。

答え4

modprobe コマンドは、より基本的な insmod および rmmod ユーティリティよりも多くの機能を提供します。modprobe は、Linux カーネルからモジュールをインテリジェントに追加または削除します。便宜上、モジュール名では _ と - に違いはありません (自動的にアンダースコアが変換されます)。modprobe は、/etc/modprobe.d ディレクトリ内のuname -rオプションの設定ファイル (一部のディストリビューションでは代わりに /etc/modprobe.conf ファイルを使用します) を除くすべてのモジュールとその他のファイルをモジュール ディレクトリ /lib/modules/ で検索します。

もっと知る

関連情報