起動時にカーネルモジュールを強制的にロードする方法(modprobe -f)?

起動時にカーネルモジュールを強制的にロードする方法(modprobe -f)?

私のシステム(Debian 9)起動時にカスタムカーネルモジュールをロードしたいです。モジュールのvermagic文字列が私のカーネルバージョンと正確に一致していませんが、またはを使用してmodprobe -f module_nameロードすることができ、insmod -f /path/to/module正しく機能しているようです。

モジュール名だけを追加すると/etc/modules-load.d/modules.conf機能しません。モジュールをロードしようとすると、systemctlにsystemd-modules-load.serviceエラーが表示されます。

systemdにモジュールを強制的にロードするように指示できますか?

答え1

/etc/modprobe.dたとえば、の設定ファイルを使用してインストール動作をオーバーライドできる必要があります/etc/modprobe.d/module_name.conf

install module_name /sbin/modprobe -i -f module_name

/sbin/modprobe -i -f module_nameこれは、インストール要求があるときにモジュールロードコードを実行するように指示しますmodule_name-i処理中にディレクティブをmodprobe無視するように指示しますinstall(それ以外の場合はループが発生します)。

答え2

次の手順に従ってください。

  1. /etc/modules-load.d/ に module_name.conf を追加します。
    module_name.confファイルには、ロードするカーネルモジュール名のリストのみを含める必要があり、改行で区切る必要があります。

  2. /etc/modprobe.d/ に別の module_name.conf を追加します。
    このファイルの内容は次のとおりです。
    install module_name /sbin/modprobe -i -f module_name
    module_name インストールが要求されると、モジュールのロード・コードに /sbin/modprobe -i -f module_name を実行するよう指示します。

  3. module_name.koを/lib/modules/$(uname -r)/kernel/drivers/net/に追加します
    。カスタムカーネルモジュールファイルを /lib/modules/$(uname -r)/kernel/drivers/xxx/ に入れることができます。

  4. sudo depmod -a は
    カーネル内のすべてのモジュールを徹底的に調べて調べます。

  5. 再起動

  6. lsmod | grep module_name
    ロードされたカスタムカーネルモジュールを見つけることができます。

関連情報