カーネルソースコードを取得するにはどうすればよいですか?


25

いくつかのデバイスドライバーを作成する予定で、Linuxカーネルソースを取得する必要があります。私のLinuxカーネルバージョンは3.2.0-23-ジェネリック-PAEと私は思いからイメージをダウンロードし、この。私が読んだ記事の多くで、新しいモジュールの挿入を開始するにはカーネルツリー全体が必要であることがわかりました。

この画像をダウンロードしてusr/src/フォルダーに貼り付けるだけで十分ですか、それとも何か他のことをする必要がありますか?


1
私は通常、マシンの1つをカスタムコンパイルするときに、「linux-source」パッケージをシナプスからインストールしますが、開発を行っている場合は、最新バージョンが必要になる場合があります。このリンクは役に立つかもしれません:help.ubuntu.com/community/Kernel/Compile
Mark Paskal

回答:


27

これにより、ストックカーネルのソースが取得されます。

apt-get source linux-source

次のように実行されているカーネルのバージョンを確認できます。

uname -r

次のように出力されます:

3.13.0-46-generic

システムで利用可能な現在のソースパッケージバージョンのリストは、次の方法で見つけることができます。

apt-cache search linux-source

カーネルのアップストリームバージョンを取得するには:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git

上記のリンクで、「trusty」はUbuntuのバージョンのコードネームです。インストールしたUbuntuのバージョンのコードネームは、次の方法で確認できます。

cat /etc/lsb-release

gitを使用してクローンを作成する場合、どのようにバージョンを指定しますか。また、私は私がコピーUSR / srcフォルダにそれをパテ場合、それは、それは十分にあるクローンの場合
Sabを

そのgitリポジトリは、特に3.2.0に保持されます。Ubuntu Precise(12.04)の内容に従います。別のバージョンが必要な場合は、ubuntu-precise.gitをubuntu-quantal.gitなどに変更します。usr / srcにコピーするだけで問題ありません。
ブライス

わかりました、ありがとう-しかし、どのようにしてそのgitリンクを見つけましたか?
サブ


そして、インストール時にソースツリーをどこで見つけることができますか...くそー、私はより良く読むべきです。答えはapt-get sourceそうではありませんapt-get install。ソースツリーよりも現在のパスになります
プロバックアップ14

8
apt-get source linux

最も簡単な方法です。リポジトリからソースをダウンロードします-実行中のバージョンと同じになります(まだカスタマイズしていない場合)。

ただし、ソースが保持されている場所を検索する場合は、次を実行できます。

apt-cache showsrc linux

「Vcs-」属性(バージョン管理システム)を探します。通常、git(Vcs-Git)またはmercurialリポジトリです。

注-これらのコマンドはどのパッケージでも機能します。興味のあるパッケージで「linux」を置き換えるだけです。また、「apt-get source」はsudoアクセスを必要とせず、ソースを現在のディレクトリにダンプすることに注意してください。


これには、ダウンロードするマシンがターゲットマシンと一致する必要があります。ネットワークがある場合にのみ本当に機能します。このページにアクセスするほとんどの読者にはネットワークがありません(そのため、突然ソースが必要になります)。私はサムドライブのtarballとしてそれを必要とします、そして、私は働くaptを持っていません。
mckenzm

これはのみにLinuxの-ヘッダをダウンロード/usr/src- いないのUbuntu 16.04に-完全なカーネルソース
Pierz

4

Launchpadからソースを直接ダウンロードする

奇妙なapt-get source ことに、特定のカーネルバージョンを探している場合、ほとんどの場合機能しないほとんどの人が推奨しています。

3.19.0-58のカーネルソースが必要だとします。
apt-get source linux-image-3.19.0-58-genericシリーズの最新のカーネルのソースを取得します。この場合は3.19.0-80です。これは、あなたが要求したものではありません。

したがって、2つのオプションがあります。

1)あきらめて、カーネル3.19.0-80をインストールして使用する apt-get source

2)ランチパッドからソースを直接取得します。

リンク

  • それらを新しいディレクトリに入れて、解凍します dpkg-source -x *.dsc

ノート:

  • より良い方法がなければなりません。
  • gitから必要なバージョンを入手できますが、ダウンロードは大規模です。Ubuntu Wikiカーネルソースコードの「gitを使用したUbuntuリリースのカーネルソースの取得」を参照してください。

これをとても明確に説明してくれてありがとう。ただし、linux-image-4.15.0-39-genericのソースはまだ見つかりません。このプロセスは不必要に複雑です。私はそれのためにグーグルで試しましたが、数キロバイトのみのパッケージを見つけ続けています。任意のヒント?
忘却

3

次のいずれかを選択してください:

sudo apt install linux-source  # downloads into system directory
sudo apt source linux-source  # downloads into working directory

にいくつかの「ソース」URLを指定するようsources.listに指示されたら、/etc/apt/sources.listファイルを編集して目的のdeb-src行のコメントを外します(たとえば、Xenialを実行している場合)。

deb http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted
# deb-src http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted

#この最後の行のを削除すると、カーネルソースを含む、ソースリポジトリのダウンロードが可能になります。

備考:

  • 最新のツールを使用します。避けてくださいapt-get
  • これらのコマンドは、現在のカーネルのソースコードをダウンロードします(私の場合4.4.0-75-generic)。
  • システムディレクトリにダウンロードすると、ファイルは/usr/src/linux-source-4.4.0/(たとえば)に保存されます。

私には動作しません(しかし、apt-getバージョンも動作しません)。Ubuntu 16.04.4、カーネル4.4.0-98-genericを実行しています。「sources.listに「ソース」URIをいくつか入れなければなりません」とあります。どうすればいいのかわかりません。
アンドリューベインブリッジ

@AndrewBainbridgeそれについての情報を追加しました。今は大丈夫ですか?
ティム

はい、ありがとう。それは私からの愚かなコメントでした。エラーメッセージをGoogleで検索するだけで済みました。とにかく、あなたの努力に賛成票を投じてください。
アンドリューベインブリッジ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.