KBUILD_DEFCONFIG_KMACHINE?= defconfig_file无法正常工作

时间:2018-01-25 11:11:41

标签: linux-kernel yocto

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

2 个答案:

答案 0 :(得分:1)

  1. 首先将defconfig复制到sources / meta-mylayer / recipes-kernel / linux 并为linux recipe
  2. 编写一个.bbappend文件

    的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"

默认情况下,KMACHINElinux-yocto.inc变量设置为MACHINE变量。

手动处理in-tree defconfig

我们在没有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