回答:
modprobe/lib/modules/$(uname -r)/modules.dep.bin(.bin他のファイルが使用できない場合は、サフィックスなしで)モジュールを読み取ります。同じファイルから、依存関係がロードされます。
modprobe.koファイル名/lib/modules/$(uname -r)(例:nvidia-currentfile 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)。
modprobeはインテリジェントなコマンドであり、モジュールのロード中に依存関係を探します。他のモジュールで定義されたシンボルを持つモジュールをロードしたと仮定します(このモジュールパスはメインモジュール内で提供されます)。したがって、modprobeメインモジュールと依存モジュールをロードします。
ただし、insmodを使用すると、依存関係が読み込まれないため、などのコンパイルエラーが発生しUnresolved symbolsます。この場合、エラーを解決するには、依存モジュールを手動で探し、それらをロードする必要があります。
modprobeユーティリティは簡単に言及する価値があります。modprobeは、insmodと同様に、モジュールをカーネルにロードします。カーネルで現在定義されていないシンボルを参照するかどうかを確認するためにロードされるモジュールを見るという点で異なります。そのような参照が見つかった場合、modprobeは現在のモジュール検索パスで、関連するシンボルを定義する他のモジュールを探します。modprobeがそれらのモジュール(ロードされるモジュールに必要なモジュール)を見つけると、それらもカーネルにロードします。この状況でinsmodを代わりに使用すると、コマンドは失敗し、システムログファイルに「未解決のシンボル」メッセージが残されます