5

を使っmake defconfigてカーネルをコンパイルしてみましたが、やはり起動に失敗しました。Canonical for Ubuntu のようなカーネル ベンダーが使用している .config ファイルは何なのか、カーネルはすぐに起動できるのか疑問に思っていました。もちろん、私はまだ初心者であり、さまざまなパラメーターを構成することは、現在私のリーグから少し外れています.

具体的には、基本的な「hello, world!」をロードしようとしています。モジュールを実行中のカーネル 2.6.32.41 に追加します。そのためには、実行中のカーネルに使用されたものと同じ .config ファイルに対してカーネル ソースをコンパイルする必要があります。

4

4 に答える 4

14

実行中のカーネルがオプション付きでコンパイルされているCONFIG_IKCONFIG_PROC場合は、次の場所で構成を取得できます/proc/config.gz

$ zcat /proc/config.gz >my_config

my_configカーネル ビルド ディレクトリにコピーして.config実行make configすると、構成ファイルにない構成オプションを求めるプロンプトが表示されます (これは、実行中のカーネルよりも新しいカーネル ソースを使用している場合にのみ発生します)。これで、現在のカーネルと同じ機能を持つ新しいカーネルをコンパイルできるはずです。

ディストリビューションは通常、独自のカーネル構成を使用します。ほとんどのドライバーは、対応するハードウェアが要求されたときに動的にロードされるモジュールとしてコンパイルされます。また、関連するブート オプション (ルート ファイルシステムを指定するオプションなど) を使用してカーネルをブートする必要があります。そのため、defconfig カーネルが起動に失敗した可能性があります。

于 2012-06-27T03:22:52.727 に答える
6

「お使いのハードウェアに適した」ものを入手することについてはわかりませんが/boot/、名前で始まるファイルを探すことで、Ubuntu が提供する構成を使用できますconfig。複数ある場合は、コマンドuname -rを使用して、現在実行しているカーネルを確認してから、適切な構成を使用できます。

于 2012-06-23T18:33:23.597 に答える
0

「defconfig」は通常、一般的に使用されるハードウェア(x86またはx86_64)に固定されており、最近のチップセットやマザーボードではない可能性があります。時々、私のLenovoラップトップのように、最新のカーネルソースのみで、いくつかの構成オプションを有効にすると、bugzillaデータベースを調べた後に機能することがあります。

ジェフ・ウェリングが言ったように、設定を使用するために、uは/bootディレクトリの下を見ることができます。私のFedoraCoreについても同じです。しかし、基本的なプログラムを「カーネルモジュール」としてコンパイルしたい場合、つまり単に「ロード可能なカーネルモジュール」を意味する場合は、カーネルソースをコンパイルする必要はありません。その現在のバージョンのカーネルヘッダーが必要です。たとえば、Ubuntu 10.04の「apt-cachesearch」は、いくつかの可能なオプションを返します。

linux-headers-2.6.38 - Header files related to Linux kernel, specifically,
linux-libc-dev - Linux Kernel Headers for development

Ubuntuは通常、独自のカーネルを持つように(kernel.orgからの)ストックカーネルにパッチを適用しました。ストックカーネルをダウンロードし、/ bootの構成ファイルを使用しようとした場合(または、10.04 LTSに基づくBacktrackのUbuntuのように、現在ロードされている構成を/proc/config.gzとして見つけることができる場合があります)。 「.config」という名前の現在の設定ファイルで「makeoldconfig」を実行する必要がある場合があります。「makeoldconfig」は、.configを使用して、カーネルソースと互換性のある新しい.configを生成します。

于 2012-06-25T03:18:38.553 に答える