如何在 Yocto 中完全重建 Linux 内核模块?
How to do a clean rebuild of Linux kernel modules in Yocto?
我可以 rm -rf tmp/ sstate-cache/ cache/
和 运行 从头开始构建整个 Yocto 就好了,但我宁愿不重建所有东西(尤其是像 Qt 这样的包可能需要一些时间)。
我试过:
bitbake -c cleansstate linux-iwg15 kernel-module-imx-gpu-viv cryptodev-module
注意:我也试过cleanall
,但结果是一样的:
任何一个内核模块一旦到达 do_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_dir}/tmp/work-shared/{MACHINE}/kernel-build-artifacts
文件夹实际包含include/generated/autoconf.h
我尝试将 kernel-build-artifacts
的内容复制到 {build_dir}/tmp/work-shared/{MACHINE}/kernel-source
,但仍然出现错误。
linux-iwg15
BitBake 配方是 here。
在重建 Linux 内核模块之前,还有什么我应该清理的吗?
干净构建后,我确实注意到 kernel-build-artifacts
包含 kernel
和 scripts
文件夹(以及 source
到 ..\kernel-source
的符号链接) 我不记得在 运行ning bitbake -c cleansstate
.
之后尝试重建时在那里
Is there anything else that I should be cleaning before rebuilding the Linux kernel modules?
是的。 bitbake -c cleansstate make-mod-scripts
任何内核 module 配方都将包含 inherit module
。这引用 meta/classes/module.bbclass 其中包含 inherit module-base
。此引用 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_KERNEL_BUILDDIR
,在 conf/bitbake.conf 中设置。)
不幸的是,内核配方将删除 STAGING_KERNEL_BUILDDIR
目录中的所有内容,因为该目录已添加到 meta/classes/kernel.bbclass[= 中的 do_shared_workdir[cleandirs]
变量中34=]。这最终会删除 make-mod-scripts 也放在那里的文件。
我可以 rm -rf tmp/ sstate-cache/ cache/
和 运行 从头开始构建整个 Yocto 就好了,但我宁愿不重建所有东西(尤其是像 Qt 这样的包可能需要一些时间)。
我试过:
bitbake -c cleansstate linux-iwg15 kernel-module-imx-gpu-viv cryptodev-module
注意:我也试过cleanall
,但结果是一样的:
任何一个内核模块一旦到达 do_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_dir}/tmp/work-shared/{MACHINE}/kernel-build-artifacts
文件夹实际包含include/generated/autoconf.h
我尝试将 kernel-build-artifacts
的内容复制到 {build_dir}/tmp/work-shared/{MACHINE}/kernel-source
,但仍然出现错误。
linux-iwg15
BitBake 配方是 here。
在重建 Linux 内核模块之前,还有什么我应该清理的吗?
干净构建后,我确实注意到 kernel-build-artifacts
包含 kernel
和 scripts
文件夹(以及 source
到 ..\kernel-source
的符号链接) 我不记得在 运行ning bitbake -c cleansstate
.
Is there anything else that I should be cleaning before rebuilding the Linux kernel modules?
是的。 bitbake -c cleansstate make-mod-scripts
任何内核 module 配方都将包含 inherit module
。这引用 meta/classes/module.bbclass 其中包含 inherit module-base
。此引用 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_KERNEL_BUILDDIR
,在 conf/bitbake.conf 中设置。)
不幸的是,内核配方将删除 STAGING_KERNEL_BUILDDIR
目录中的所有内容,因为该目录已添加到 meta/classes/kernel.bbclass[= 中的 do_shared_workdir[cleandirs]
变量中34=]。这最终会删除 make-mod-scripts 也放在那里的文件。