Linux kernel 如何在Yocto中干净地重建Linux内核模块?

Linux kernel 如何在Yocto中干净地重建Linux内核模块?,linux-kernel,kernel-module,yocto,bsp,Linux Kernel,Kernel Module,Yocto,Bsp,我可以rm-rftmp/sstate cache/cache/从头开始运行整个Yocto构建,但我不希望重建所有内容(特别是像Qt这样的包可能需要一些时间) 我试过: bitbake-c cleansstate linux-iwg15内核模块imx gpu viv cryptodev模块 注意:我也尝试了cleanall,但结果相同: 任何一个内核模块在到达do\u compile时都会抛出此错误: ERROR: Kernel configuration is invalid.

我可以
rm-rftmp/sstate cache/cache/
从头开始运行整个Yocto构建,但我不希望重建所有内容(特别是像Qt这样的包可能需要一些时间)

我试过:

bitbake-c cleansstate linux-iwg15内核模块imx gpu viv cryptodev模块

注意:我也尝试了
cleanall
,但结果相同:

任何一个内核模块在到达
do\u compile
时都会抛出此错误:

  ERROR: Kernel configuration is invalid.
         include/generated/autoconf.h or include/config/auto.conf are missing.
         Run 'make oldconfig && make prepare' on kernel src to fix it.
{build\u dir}/tmp/work shared/{MACHINE}/kernel build artifacts
文件夹实际上包含
include/generated/autoconf.h

我尝试将
内核构建工件
的内容复制到
{build_dir}/tmp/work shared/{MACHINE}/kernel source
,但仍然得到错误

linux-iwg15
BitBake配方为

在重新构建Linux内核模块之前,我还需要清理其他东西吗

在一个干净的构建之后,我确实注意到
内核构建工件
包含
内核
脚本
文件夹(以及
源代码
。\kernel source
)我不记得在运行
bitbake-c cleansstate
后尝试重建时在那里

在重新构建Linux内核模块之前,我还需要清理其他东西吗

对<代码>bitbake-c cleansstate生成修改脚本

任何内核模块配方都将包含
继承模块
。这引用了meta/classes/module.bbclass,其中包含
继承模块基
。这引用了meta/classes/module-base.bbclass,其中包含:

# We do the dependency this way because the output is not preserved
# in sstate, so we must force do_compile to run (once).
do_configure[depends] += "make-mod-scripts:do_compile"
make mod scripts配方(位于meta/recipes kernel/make mod scripts/make mod scripts.bb)将文件添加到{build_dir}/tmp/work shared/{MACHINE}/kernel build artifacts目录。(这被称为
STAGING\u KERNEL\u BUILDDIR
,在conf/bitbake.conf中设置。)


不幸的是,内核配方将删除
STAGING\u kernel\u BUILDDIR
目录中的所有内容,因为该目录已添加到meta/classes/kernel.bbclass中的
do\u shared\u workdir[cleandirs]
变量中。这最终会删除使mod脚本也放在那里的文件。

检查这个答案。bitback-c cleanall应该对您有所帮助。@OttavioCampana感谢您的回复。不幸的是,正如我所提到的,我尝试了
bitbake-c cleanall linux-iwg15内核模块imx gpu viv cryptodev module
,但仍然得到相同的错误(它只是有一个额外的缺点,即强制每个模块重新下载源代码)。我看到了同样的问题。如果我从头开始构建,模块会干净地构建,但是如果我只是尝试清理模块状态并重新构建,内核就会像你说的那样失败。你能解决这个问题吗?@PhilBot我最近没有做太多内核特定的更改,我已经更新到Yocto 3.1 Dunfell。看起来最近的Yocto版本确实改善了重建过程,因此如果可能的话,尝试使用Dunfell可能是值得的。诚然,很多BSP都没有为最新版本提供官方支持,因此我也一直在使用“社区”版的
meta freescale
,而不是我的制造商官方BSP,它已经落后了几年。感谢您的详细解释!不客气!这实际上是一个bug,所以我也提交了一个bug报告,它看起来很快就会被修复。