web-dev-qa-db-ja.com

「クリーン」なしでLinuxカーネルを再構築する

4.11をベースにしたカスタムカーネルを構築しています(Mintx64の場合)。動作することを証明するために、すでにコンパイルしてインストールしています。今、私はいくつかのファイルにいくつかの小さな変更を加えました(ドライバーとネットサブシステムでは、これが最初にカスタムカーネルをコンパイルする必要がある理由です!)

次に、変更したカーネルをビルドします。しかし走ると

fakeroot make -j5 deb-pkg LOCALVERSION=myname KDEB_PKGVERSION=1 

ビルドシステムは、すべての負荷を「クリーン」にすることから始まるように見えるので、すぐに停止しました。残念ながら、私が使用しているコンピューターは優れたCPUに恵まれておらず、ゼロから構築するのに何時間もかかります。したがって、可能であればもう一度やり直すことは避けたいです。

すべてを「クリーン」にせずに増分ビルドのみを作成することは可能ですか、それともカーネルビルドシステムの要件ですか?

私が得た出力は:

CHK      include/config/kernel.release
make clean
CLEAN .
CLEAN Arch/x86/lib
...
11
T Kilney

make cleandeb-pkgターゲット専用です。 scripts/package/Makefileをご覧ください。

deb-pkg: FORCE
        $(MAKE) clean
        $(call cmd,src_tar,$(KDEB_SOURCENAME))
        $(MAKE) KBUILD_SRC=
        +$(call cmd,builddeb)

bindeb-pkg: FORCE
        $(MAKE) KBUILD_SRC=
        +$(call cmd,builddeb)

代わりにbindeb-pkgをビルドすると、クリーンアップは行われません。とにかく、おそらくソースパッケージは必要ありません。

ソースtarball内のビルドアーティファクトをtarにしたくないので、それはクリーンだと思います。

12
RawwrBag

make-kpkgによってインストールされる別のツールapt-get install kernel-packageを使用して、それらのdebパッケージを作成してみることができます。次に例えば

make-kpkg --rootcmd=fakeroot --initrd --uc --us -j2 kernel_image kernel_headers

このコマンドは、毎回make cleanを実行しないでください。

2
J.J. Hakala

これを修正するには、deb-pkgコマンドのmakefileに移動し、スクリプトから「make clean」を削除します。これはビルドに悪影響を及ぼさないようで、カスタムカーネルを1〜2週間問題なく実行しています。 YMMV!

1
T Kilney