回答:
2つのディレクトリは、カーネルのヘッダーファイルを含む対応するパッケージによって提供されます。dpkg
コマンドを使用して、ディレクトリを提供するパッケージを見つけます。
$ dpkg -S /usr/src/linux*
linux-headers-X.XX.X-XX: /usr/src/linux-headers-X.XX.X-XX
linux-headers-X.XX.X-XX-generic: /usr/src/linux-headers-X.XX.X-XX-generic
...
最初のディレクトリ/usr/src/linux-headers-X.X.XX-XX
は、x86、amd64、powerpcなどを含む複数のアーキテクチャのヘッダーファイルで構成されているため、ファイル数が多くなり、パッケージのサイズが大きくなります。
他のディレクトリに/usr/src/linux-headers-X.X.XX-XX-generic
は、ローカルインストールを対象とするx86アーキテクチャに関連するソースコードがほとんど含まれているようです。
対応するパッケージは、たとえば次のように説明に示唆されています。
$ apt-cache show linux-headers-3.16.0-25 | grep -A3 Description-en
Description-en: Header files related to Linux kernel version 3.16.0
This package provides kernel header files for version 3.16.0, for sites
that want the latest kernel headers. Please read
/usr/share/doc/linux-lts-utopic-headers-3.16.0-25/debian.README.gz for details
私が知る限り、どちらのディレクトリにもソースコードのみが含まれ、バイナリは含まれていません。そして、両者の違いは主にソースコードのターゲットアーキテクチャです。
関連:カーネルソースツリーには何が含まれていますか?これはLinuxカーネルヘッダーに関連していますか?
どちらも
x86
関連するコードを格納しているのでx86
、2つのディレクトリのコードの違いは何ですか?– Richard Jul 29 '15 at 19:11
に含まれるディレクトリとファイルのほとんど/usr/src/linux-headers-X.X.XX-XX-generic
はシンボリックリンクであり、の実際のディレクトリとファイルを指します/usr/src/linux-headers-X.X.XX-XX
。言い換えるとarch/x86
、これら2つのディレクトリには、実際のリンクとシンボリックリンクの違いがあり、asm
ヘッダーの残りのファイルが*-generic
対応するファイルに残っています。
これらの2つのパッケージの間に、もう1つの大きな違いとして、対応するディレクトリconfig
とgenerated
ディレクトリが存在することに気付くかもしれません*-generic
。
私の最高の理解では、私は思うだろう*-generic
ディレクトリが設定とに関連するモジュールをコンパイルするために必要なヘッダファイルを保持してx86
、アーキテクチャをなしのソースディレクトリにaccidential変更を行いますlinux-headers-x.x.xx-xx
。
何よりも、2つのディレクトリは、それぞれのプラットフォームでパッケージをパッケージ化およびコンパイルするための「クリーンな」アプローチです。しかし、私はこの問題を明確にする立場にはありません。
回答者のメモ:この答えは当時は単純に書いたもので、何が正しいか間違っているかは不明ですが、その間にいくつかの説明が欠けている場合があります。したがって、この回答はコミュニティWikiになりました。そのため、評判が低い人は誰でもこの投稿を改善して、違いを完全に説明できます。
x86
関連するコードを格納しているのでx86
、2つのディレクトリのコードの違いは何ですか?