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


11

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

@jc__上記のビルドからの出力を参照してください。そのターゲットのmakefileがどこにあるかすぐにはわかりませんが、まだ探しています:)
T Kilney

回答:


12

make cleanだけのためであるdeb-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にしたくないので、それはクリーンだと思います。


2

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

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

このコマンドはmake clean毎回行うべきではありません。


1

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

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