私は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
.dts
diff
残りの違いは非常に一般的です。コメントに示すように、パッチ修正を追跡するために使用されるソースファイルは、すべてのパッケージdebian
ングに含まれ、ソースパッケージにのみ含まれ、ソースパッケージにのみ含まれ、これらのファイルは生成されたマンページです。 、おそらくカーネルビルドの副作用なので、バイナリパッケージにのみ表示されます(ただし、実際にはそこにはいけません)。.pc
quilt
.1
参照パッケージは、を通じて取得したソースパッケージですapt-get source
。これはlinux-source-3.19
、使用するパッケージを含むすべてのカーネルバイナリパッケージを構築しますapt-get install
。後者は、カーネルソースコードが必要な他のパッケージの便宜のために提供されています。apt-get source
実行時の現在のディレクトリ。
文書に関しては Debian 文書に従ってください。カーネルマニュアル(セクション4.5)。リンクされたセクション4.2で述べたように、Debianカーネル全体を再構築するには多くのバリエーションが含まれているため、時間がかかります。