![不“干净”地重新构建 Linux 内核](https://linux22.com/image/112741/%E4%B8%8D%E2%80%9C%E5%B9%B2%E5%87%80%E2%80%9D%E5%9C%B0%E9%87%8D%E6%96%B0%E6%9E%84%E5%BB%BA%20Linux%20%E5%86%85%E6%A0%B8.png)
我正在构建一个基于 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
...
答案1
这只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
你可以尝试制作那些德布使用不同工具make-kpkg
安装的软件包,由apt-get install kernel-package
.那么例如
make-kpkg --rootcmd=fakeroot --initrd --uc --us -j2 kernel_image kernel_headers
该命令不应该make clean
每次都执行。
答案3
我通过进入 deb-pkg 命令的 makefile 并从脚本中删除“make clean”来修复此问题。这似乎并没有对构建造成任何不良影响,而且我已经运行自定义内核一两周了,没有出现任何问题。嗯嗯!