カーネルソースのインポート:apt-get installとapt-getソース

カーネルソースのインポート:apt-get installとapt-getソース

私はLinuxカーネルをダウンロードして修正とコンパイル方法を学ぶことを期待しています。

私はDebianディストリビューションを使用しており、デフォルトのカーネル形式ではなくLinuxカーネルのDebian修正バージョンに興味があります。kernel.org

いくつかの研究を通して、私はこれを達成するために主に2つの方法があることを発見しました。

  • ソースパッケージをインストールします(例:apt-getインストールするLinuxソース-3.19)
  • バイナリパッケージ(apt-getなど)からソースコードをダウンロードします。源泉Linux-イメージ-3.19.0-トランク-amd64)

最初のオプションはソースタールボールを/usr/src/linux-source-3.19.tar.xzにダウンロードし、後者はソースタールボール(linux_3.19.1.orig.tar.xz)、パッチ(linux_3.19.1-)をダウンロードしますします。 1〜exp1.debian.tar.xz)と説明ファイル(linux_3.19.1-1〜exp1.dsc)。後者はまた、すべてを解凍し、「linux-3.19.1」ディレクトリに抽出します。

最初は、両方のバージョンが同じカーネルバージョンとパッチレベル(apt-cacheコマンドのレポート内容に基づいています)を持つため、同じコードを生成すると思いました。ただし、apt-getで解凍されたソースを比較すると、diffコマンドは違いを報告します。インストールするapt-getで解凍されたソースを使用する源泉(パッチされたコードとパッチされていないコードの場合)

apt-getを比較するときインストールするapt-getで源泉:

$ diff -rq apt-get-install/ apt-get-source/ | wc -l
253

$ diff -rq apt-get-install/ apt-get-source/ | grep "Only in"
Only in apt-get-install/arch/arm/boot/dts: sun7i-a20-bananapro.dts
Only in apt-get-install/arch/s390/include/asm: cmb.h.1
Only in apt-get-install/drivers/dma-buf: reservation.c.1
Only in apt-get-install/drivers/dma-buf: seqno-fence.c.1
Only in apt-get-install/drivers/gpu/drm/i915: i915_irq.c.1
Only in apt-get-install/drivers/scsi: constants.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_acm.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_ecm.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_obex.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_serial.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_subset.c.1
Only in apt-get-install/include/linux: reservation.h.1
Only in apt-get-install/kernel: sys.c.1
Only in apt-get-install/lib: crc32.c.1
Only in apt-get-install/sound/soc: soc-cache.c.1

apt-getを比較するときインストールするapt-getでソースコード(+パッチ):

$ diff -rq apt-get-install/ apt-get-source+patch/
Only in apt-get-install/arch/s390/include/asm: cmb.h.1
Only in apt-get-source+patch/: debian
Only in apt-get-install/drivers/dma-buf: reservation.c.1
Only in apt-get-install/drivers/dma-buf: seqno-fence.c.1
Only in apt-get-install/drivers/gpu/drm/i915: i915_irq.c.1
Only in apt-get-install/drivers/scsi: constants.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_acm.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_ecm.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_obex.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_serial.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_subset.c.1
Only in apt-get-install/include/linux: reservation.h.1
Only in apt-get-install/kernel: sys.c.1
Only in apt-get-install/lib: crc32.c.1
Only in apt-get-source+patch/: .pc
Only in apt-get-install/sound/soc: soc-cache.c.1

これらの2つの方法が言及されたリンクを見つけましたが、それらから明確な情報を得ることはできません。

https://kernel-handbook.alioth.debian.org/ch-common-tasks.html#s-common-official https://help.ubuntu.com/community/Kernel/Compile(オプション B 対代替オプション B)

誰もが私に違いを教えてくれ、どんなものが好まれるのか助言してくれればとても感謝します。ありがとうございます。

ベストアンサー1

Debian 用語で実行すると

apt-get source linux-image-3.19.0-trunk-amd64

(またはそれに対応するapt-get source linux)実際にダウンロードして解凍しています。ソースコードパッケージ。これには、Debian カーネルチームがカーネルに追加したパッチを含む、アップストリームコード(kernel.org からダウンロードしたカーネルソースコード)とすべての Debian パッケージングが含まれます。

走るとき

apt-get install linux-source-3.19

実際には、Debianパッチを適用したLinuxカーネルのソースコードが含まれていますが、Debianパッケージングインフラストラクチャを持たないバイナリパッケージをインストールしています。

ソースパッケージの名前は、簡単に言うと、与えられたlinuxバイナリapt-get sourceパッケージ名を対応するソースパッケージ名に変換します。

ただし、パッケージは自動的にアップグレードされないため、比較する前にそのパッケージのコピーを更新して再抽出したことを確認experimentalする必要があります。現在、アーカイブのパッケージにはこのファイルが含まれています。linux-source-3.19.dtsdiff

残りの違いは非常に一般的です。コメントに示すように、パッチ修正を追跡するために使用されるソースファイルは、すべてのパッケージdebianングに含まれ、ソースパッケージにのみ含まれ、ソースパッケージにのみ含まれ、これらのファイルは生成されたマンページです。 、おそらくカーネルビルドの副作用なので、バイナリパッケージにのみ表示されます(ただし、実際にはそこにはいけません)。.pcquilt.1

参照パッケージは、を通じて取得したソースパッケージですapt-get source。これはlinux-source-3.19、使用するパッケージを含むすべてのカーネルバイナリパッケージを構築しますapt-get install。後者は、カーネルソースコードが必要な他のパッケージの便宜のために提供されています。apt-get source実行時の現在のディレクトリ。

文書に関しては Debian 文書に従ってください。カーネルマニュアル(セクション4.5)。リンクされたセクション4.2で述べたように、Debianカーネル全体を再構築するには多くのバリエーションが含まれているため、時間がかかります。

おすすめ記事