无需“干净”即可重建Linux内核


11

我正在基于4.11构建Mintx64的自定义内核(如果重要的话)。我已经编译并安装了它以证明它可以工作。现在,我对几个文件做了一些小的更改(在驱动程序和net子系统中,这就是为什么我需要首先编译自定义内核的原因!)

现在,我要构建修改后的内核。但是当我跑步

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

Answers:


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中压缩构建工件。


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”来解决此问题。这似乎并没有对构建产生任何不良影响,并且我已经运行定制内核一两个星期了,而没有任何问题。YMMV!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.