KBUILD_DEFCONFIG_KMACHINE ?= defconfig_file
无法正常工作。
我学到的第一课:defconfig != .config
Bare-Kernel-Build(不使用yocto):由arch/arm/config/xy_defconfig
创建的make savedefconfig
下面的新defconfig文件不等于.config
文件。我假设linux内核扩展了一些符号并创建了最终的.config
。
Yocto-Build:问题出现了: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
答案 0 :(得分:1)
的Linux-TI _%。bbappend
FILESEXTRAPATHS_prepend : "${THISDIR}:"
SRC_URI += "file://your-defconfig"
2。开源/ meta-mylayer / conf / machine / your-machine.conf添加以下行,
搜索宏(如果已存在)或使用grep -inr "INTREE_DEFCONFIG"
INTREE_DEFCONFIG_pn-linux-ti = "am335x_phytec_defconfig"
如果宏已经存在于同一文件中,则替换defconfig名称。
答案 1 :(得分:0)
kernel-yocto
接近 KBUILD_DEFCONFIG
变量由kernel-yocto
类处理,因此您需要继承它。它通常是通过包含文件linux-yocto.inc
间接完成的,所以你应该把这行作为linux recipe:
require recipes-kernel/linux/linux-yocto.inc
请注意,KBUILD_DEFCONFIG_KMACHINE
由两部分组成。第一个是变量名(KBUILD_DEFCONFIG
),第二个是内核机器覆盖(KMACHINE
)。因此,您需要更改覆盖以适合您的机器。这就是KMACHINE
部分在文档[1]中用斜体书写的原因。文档中有一个RPi示例:
KBUILD_DEFCONFIG_raspberrypi2 = "bcm2709_defconfig"
默认情况下,KMACHINE
在linux-yocto.inc
变量设置为MACHINE
变量。
我们在没有kernel-yocto
类的情况下使用in-tree 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
}
[1] https://www.yoctoproject.org/docs/2.4/mega-manual/mega-manual.html#var-KBUILD_DEFCONFIG