カスタム カーネルがモジュール サポート付きでビルドされているかどうかを検出できますか?

カスタム カーネルがモジュール サポート付きでビルドされているかどうかを検出できますか?

ベンダーから最小限の Linux インストールが提供されました。以前の質問への回答から、モジュール サポートの有無にかかわらずカーネルを構築できることが分かりました。接続する必要がある CANBUS デバイスがあり、これには .ko ファイルの形式でドライバーが付属しています。提供されているインストール スクリプトを使用してこれらをインストールできるようにしたいのですが、まず、カーネルがモジュール サポート付きで構築されたかどうかを知る必要があります。コマンド ラインからこれを検出することは可能ですか?

実行するとlsmod何も返されないので、現時点では .ko ファイルが存在しないことがわかりますが、これはカーネルが .ko ファイルのインストールを許可しないことを意味するのでしょうか?

答え1

ファイルシステムがある場合/proc、カーネルがモジュール サポート付きでコンパイルされている場合にのみ、ファイル/proc/modulesが存在します。ファイルが存在するが空の場合、カーネルはモジュールをサポートしていますが、現時点では何もロードされていません。ファイルが存在しない場合、カーネルはモジュールをロードできません。

を使わずにロード可能なモジュールのサポートを実現することは技術的に可能です。カーネルバイナリにおよびシステムコール/procが存在するかどうかを確認できます。圧縮バイナリ(またはなど)しかない場合は、これは簡単ではないかもしれません。init_moduledelete_modulevmlinuzuImagevmlinuz を vmlinux に解凍するにはどうすればいいですか?vmlinuzカーネルの大部分を解凍できたら、文字列 を検索しsys_init_moduleます。

モジュールがサポートされている場合でも、独自のモジュールをコンパイルするには追加のファイルが必要になることに注意してください。カーネルヘッダーこれらはCヘッダーファイルです(*.h ) であり、その一部はカーネルのコンパイル時に生成されます (そのため、カーネルソースから取得することはできません)。カーネル ソース ツリーには何が含まれていますか? これは Linux カーネル ヘッダーに関連していますか?

答え2

ほとんどのディストリビューションでは、カーネル設定を含むテキスト ファイルがどこかに保存されています。Debian システムでは、 にあります/boot/config-<kernel_version>

次に、grepそのファイルに対して次のコマンドを実行します。

grep CONFIG_MODULES /boot/config-<kernel_version>

関連情報