実際のカーネルソースはどこにありますか?

実際のカーネルソースはどこにありますか?

私はフォローしていますこれカーネルのコンパイル方法を学ぶために

apt-get source linux-image-$(uname -r)

現在使用している Linux カーネルのソースコードをダウンロードします。

上記のコマンドを実行すると、次のファイル (およびディレクトリ) がダウンロードされました。

user $ ls -l
total 130972
drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0
-rw-rw-r--  1 sps sps  10980684 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz
-rw-rw-r--  1 sps sps      7396 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.dsc
-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz
user $ 

の中に同じこのページには次のように記載されています:

カーネルの構築は非常に簡単です。作業ディレクトリをカーネル ソース ツリーのルートに変更し、次のコマンドを入力します。

しかし、どれが「カーネル ソース ツリーのルート」なのかはわかりません。

それは現在のディレクトリ (実行した場所apt-get source ...と上記のファイルがある場所) ですか?

それとも、ディレクトリですか:

drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0

それとも、tarballを解凍するべきでしょうか

-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz

出力uname -r:

user $ uname -r
3.19.0-30-generic
user $ 

答え1

からDebian ウィキ:

ソースパッケージ目的のソフトウェアをコンパイルまたはビルドするために必要なすべてのファイルを提供します。

最も単純な形式では、次の 3 つのファイルで構成されます。

  • アップストリームのtarballには.tar.gzエンディング

  • .dsc で終わる説明ファイル。ファイル名と内容 (Source: キーワードの後) の両方にパッケージ名が含まれます。

  • アップストリーム ソースに加えられた変更と、Debian パッケージ用に作成されたすべてのファイルを含む tarball。

    • これは.debian.tar.gz(ソース形式: 3.0)
    • または.diff.gz終了 (ソース形式: 1.0)

Ubuntu でもまったく同じです。あなたの場合もそうです:

  • 「linux-lts-vivid-3.19.0」: 実際のカーネルアップストリーム tarball「linux-lts-vivid_3.19.0.orig.tar.gz」から開始して、「linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz」に記載されている変更を加えてパッチを適用しました。
  • 「linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz」: アップストリーム ソースに加えられた変更と、Debian パッケージ用に作成されたすべてのファイルを含む tarball。
  • "linux-lts-vivid_3.19.0-30.34~14.04.1.dsc": 末尾が ".dsc" である記述ファイル。ファイル名と内容 (Source: キーワードの後) の両方にパッケージ名が含まれます。
  • "linux-lts-vivid_3.19.0.orig.tar.gz": 「.tar.gz」で終わるアップストリーム tarball (私の経験では、常に「.tar.gz」ファイルであるとは限らず、「.tar.xz」などのわずかに異なる形式になる可能性があることに注意してください)。

を実行するとapt-get source linux-image-$(uname -r)、アップストリーム tarball は、「linux-lts-vivid-3.19.0」の「linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz」にリストされている変更で自動的にパッチされます。

% apt-get source linux-image-$(uname -r)
# ...
dpkg-source: info: extracting linux in linux-3.19.0
dpkg-source: info: unpacking linux_3.19.0.orig.tar.gz
dpkg-source: info: applying linux_3.19.0-30.34.diff.gz
# ...

答え2

カーネル ツリーのルートはディレクトリですlinux-lts-vivid-3.19.0

その他のファイルについて:

tarball にはlinux-lts-vivid_3.19.0.orig.tar.gz、アップストリームでリリースされた「バニラ」カーネルが含まれています。このカーネルには、Ubuntu 開発者がパッチ、ドライバー、変更点などを追加しており、それらは に集められ、diffに圧縮されていますlinux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz

答え3

うーん。コマンドを実行すると

apt-get source linux-image-`uname -r`

コマンドは自動的にソース tarball を抽出し、パッチを適用して、カーネルにちなんで名付けられたディレクトリを作成します。あなたの場合、そのディレクトリ名は「linux-lts-vivid-3.19.0」のようです。ディレクトリ リストにそのディレクトリがあります。

つまり、これはソース ディレクトリなので、次のコマンドを実行する必要があります。

cd linux-lts-vivid-3.19.0

そして指示に従ってください

関連情報