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