KBUILD_DEFCONFIG_KMACHINE ?= defconfig_file不像我预期的那样工作。
我学到的第一课:defconfig != .config
裸内核构建(没有yocto):在arch/arm/config/xy_defconfig下面由make savedefconfig创建的新的defconfig文件不等于.config文件。我假设linux内核扩展了一些符号并创建了最终的.config。
Yocto :这是一个问题:Yocto无法正确处理arch/arm/config/xy_defconfig下面的defconfig文件。当使用yocto构建linux内核时..。内核只有一半大小,不能引导。这是因为yocto没有展开.config中缺少的符号,而make defconfig会这样做。
你如何处理这个问题?
更新:
计算出一个额外的make xy_defconfig,完成这个任务,并创建正确的.config文件。这是一个丑陋的黑客,任何更好的想法都是非常受欢迎的。
将此添加到我的自定义linux-xy.bb文件中。
KBUILD_DEFCONFIG ?= xy_defconfig
do_makedefconfig() {
oe_runmake -C ${B} ARCH=${ARCH} $KBUILD_DEFCONFIG
}
addtask do_makedefconfig after do_configme before do_compile发布于 2018-01-31 10:46:27
linux_%..bbappend
FILESEXTRAPATHS_prepend : "${THISDIR}:"
SRC_URI += "file://your-defconfig" grep -inr "INTREE_DEFCONFIG",则搜索宏INTREE_DEFCONFIG_pn-linux-ti = "am335x_phytec_defconfig"如果同一文件中已经存在宏,则替换defconfig名称。
发布于 2018-02-02 14:23:39
kernel-yocto方法
KBUILD_DEFCONFIG变量由kernel-yocto类处理,因此需要继承它。这通常是通过包含文件linux-yocto.inc间接完成的,所以您应该有这一行linux配方:
require recipes-kernel/linux/linux-yocto.inc请注意,KBUILD_DEFCONFIG_KMACHINE由两部分组成。第一个是变量名(KBUILD_DEFCONFIG),第二个是内核机器覆盖(KMACHINE)。所以你需要改变覆盖以适应你的机器。这就是为什么在文档1中用斜体写KMACHINE部件的原因。
KBUILD_DEFCONFIG_raspberrypi2 = "bcm2709_defconfig"默认情况下,KMACHINE在linux-yocto.inc中设置为MACHINE变量。
手动处理树中的defconfig
我们在没有kernel-yocto类的情况下使用树中的defconfig。使用来自linux.inc层的meta-oe。我不知道这是不是最好的做法。下面是我们的linux配方(减到最低限度):
require recipes-kernel/linux/linux.inc
PV = "your_version"
SRC_URI = "your_sources"
do_configure_prepend() {
bbnote "Copying defconfig"
cp ${S}/arch/${ARCH}/configs/YOUR_defconfig ${WORKDIR}/defconfig
}https://stackoverflow.com/questions/48441494
复制相似问题