どこ/実際のカーネルソースはどこですか?


8

私はこれに従ってカーネルのコンパイルを学びます。使った

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 $ 

回答:


8

Debian Wikiから:

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

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

  • .tar.gzで終わる 上流のtarball

  • 末尾が.dscの記述ファイル。ファイル名とコンテンツ(Source:キーワードの後)の両方にパッケージの名前が含まれます。

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

    • これには.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)と、「linux-lts-vivid-3.19.0」の「linux-lts-vivid_3.19.0-30.34〜14.04.1.diff.gz」にリストされている変更が上流のtarballに自動的にパッチされます。

% 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
# ...

4

カーネルツリーのルートはディレクトリ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


4

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

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

このコマンドは、ソースtarballを自動的に抽出し、パッチを適用して、カーネルの後に呼び出されるディレクトリを作成します。あなたの場合、それは 'linux-lts-vivid-3.19.0'と呼ばれているように見えます-それはあなたのディレクトリリストにあります。

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

cd linux-lts-vivid-3.19.0

その後、指示に従ってください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.