ベンダーが提供する最小限のLinuxインストールが提供されました。前の質問への回答から、モジュールサポートの有無にかかわらずカーネルを構築できることがわかりました。 .koファイルの形式でドライバーが付属しているCANBUSデバイスを接続する必要があります。提供されているインストールスクリプトを使用してこれらをインストールできるようにしたいのですが、最初に、カーネルがモジュールサポートでビルドされているかどうかを知る必要があります-コマンドラインからこれを検出することは可能ですか?
lsmod
を実行すると何も返されないので、現時点では.koファイルがないことがわかりますが、これはカーネルが.koファイルのインストールを許可しないことを意味しますか?
/proc
ファイルシステムがある場合、ファイル/proc/modules
は、カーネルがモジュールサポートでコンパイルされている場合にのみ存在します。ファイルが存在するが空の場合、カーネルはモジュールをサポートしていますが、現時点では何もロードされていません。ファイルが存在しない場合、カーネルはモジュールをロードできません。
/proc
なしでロード可能なモジュールをサポートすることは技術的に可能です。カーネルバイナリにinit_module
およびdelete_module
システムコールが存在するかどうかを確認できます。圧縮されたバイナリ(例:vmlinuz
またはuImage
)しかない場合、これは簡単ではない可能性があります。 vmlinuz
については vmlinuzをvmlinuxに解凍するにはどうすればよいですか? を参照してください。カーネルの大部分を解凍できたら、文字列sys_init_module
を検索します。
モジュールがサポートされている場合は、とにかく独自のモジュールをコンパイルするために追加のファイルが必要になることに注意してください:カーネルヘッダー。これらはCヘッダーファイル(*.h
)であり、その一部はカーネルのコンパイル時に生成されます(したがって、カーネルソースから取得することはできません)。 カーネルソースツリーには何が含まれていますか?これはLinuxカーネルヘッダーに関連していますか? を参照してください。
ほとんどのディストリビューションは、カーネル構成を含むテキストファイルをどこかに保存します。 Debianシステムでは、/boot/config-<kernel_version>
にあります。
次に、そのファイルに対してgrep
を実行するだけです。
grep CONFIG_MODULES /boot/config-<kernel_version>