私のシステム(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
次の手順に従ってください。
/etc/modules-load.d/ に module_name.conf を追加します。
module_name.confファイルには、ロードするカーネルモジュール名のリストのみを含める必要があり、改行で区切る必要があります。/etc/modprobe.d/ に別の module_name.conf を追加します。
このファイルの内容は次のとおりです。
install module_name /sbin/modprobe -i -f module_name
module_name インストールが要求されると、モジュールのロード・コードに /sbin/modprobe -i -f module_name を実行するよう指示します。module_name.koを/lib/modules/$(uname -r)/kernel/drivers/net/に追加します
。カスタムカーネルモジュールファイルを /lib/modules/$(uname -r)/kernel/drivers/xxx/ に入れることができます。sudo depmod -a は
カーネル内のすべてのモジュールを徹底的に調べて調べます。再起動
lsmod | grep module_name
ロードされたカスタムカーネルモジュールを見つけることができます。