ベンダーから最小の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>