配布kernel-header
パッケージには、その名前が示すように、カーネルモジュールなどのソフトウェアをビルドするために必要なカーネルヘッダーファイル(および必要な配管)のみが含まれています。
ビルド出力を除いて、カーネルソースディレクトリでバイナリファイルを見つけることを期待しないでください。(自分でカーネルを設定および構築する場合、カーネルソースディレクトリには、コンパイルされたオブジェクト、モジュール、構築されたカーネル自体、およびそれを機能させるいくつかの他のバイナリビットとピースも含まれます。)
KConfig
ファイルはカーネル設定オプションの説明です(およびそれらの依存関係)は、特定のディレクトリ/モジュールで利用可能です。
それ以外は、すべて(ほとんど)Cソースコード、ヘッダーファイル、およびMakefile
sです。あちこちにいくつかのヘルパースクリプトがあり、アセンブリソースもあります。
ヘッダーパッケージ(インストールしたもの)には、上記のヘッダー部分(すべてではなく、「エクスポートされた」ヘッダーのみ)、およびビルドインフラストラクチャの一部のみが含まれます。ですから、あなたが見ているものは期待されています。ヘッダーパッケージには Cソースコードは含まれません(一部のスタブおよびビルドインフラストラクチャコードを除く)。このタイプのパッケージを持つことの全体的なポイントは、スペース(および帯域幅)を節約することです。Linuxカーネルソースツリー全体はかなり大きく、自分でカーネルをコンパイルするつもりがない場合は完全に不要です。ヘッダーパッケージは、ディストリビューションによって構築および出荷され、モジュールの構築に必要なものだけを提供しますが、それ以上は提供しません。(確かに、コンパイルされたカーネルは含まれていません。)
コメントへの対処:ヘッダーパッケージはどこにも移動しません。それらはカーネルの特定のバージョン用に構築され、特定のディレクトリにパッケージ化されています。それだけです。それは単なるファイルのセットです。(ヘッダーパッケージは、現在の安定したカーネルバイナリパッケージと必ずしも同じバージョンではないことに注意してください-ヘッダーパッケージは汎用であり、実行中の実際のカーネルより遅れることがあります。ただし、カーネルからのものであってはなりません。現在インストールされている(またはターゲットの)カーネルよりも新しいバージョン。)
通常、インストールされたカーネルバイナリは、/boot
ブートローダーバイナリと構成ファイルとともにディレクトリにインストールされます。(これは、デフォルトではマウントされない独立したファイルシステムである場合があります。)ファイルの正確な名前は、カーネルとディストリビューションによって異なります。(ブートローダーも同様です。)
インストールされたカーネルモジュールは、次のサブディレクトリにあります。
/lib/modules/`uname -r`/
例えば私のシステムでは、彼らは現在
/lib/modules/3.1.4-gentoo/
完全なカーネルソースコード:Ubuntuでは、完全なカーネルソースでカーネルを自分で構築する場合は、こちらの手順に従ってインストールする必要があります。
また、ソースのtarballをダウンロードしkernel.org
てどこかで展開することもできます(このtarballを使用する場合は、Ubuntuがインストールしたファイルを上書きしないでください。
/usr/src/linux
カーネルソースを置く従来の場所ですが、カーネルソースを他の場所に置くことを妨げるものは何もありません。多くの場合、このパスはディレクトリへの単なるシンボリックリンクでもあります。例えば、私は自分のマシンでこれを持っています:
$ ls -l /usr/src/linux
lrwxrwxrwx 1 root root 18 Dec 7 17:03 /usr/src/linux -> linux-3.1.4-gentoo
シンボリックリンクは、カーネルソースに依存するアプリケーションの構築を簡素化するためにあります。そのパスを実行中の(またはターゲットの)カーネルにリンクすることで、ツリー外でモジュールをビルドするときに正確なバージョンまたはパス情報を指定する必要がなくなります。少なくともソースベースのディストリビューションを支援します。