Linux kernel KBUILD\u DEFCONFIG\u KMACHINE?=DEFCONFIG\u文件未按预期工作
Linux kernel KBUILD\u DEFCONFIG\u KMACHINE?=DEFCONFIG\u文件未按预期工作,linux-kernel,yocto,Linux Kernel,Yocto,KBUILD\u DEFCONFIG\u KMACHINE?=DEFCONFIG\u文件无法按预期工作 我学到的第一课:defconfig!=。配置 裸内核构建(不带yocto):由make savedefconfig创建的arch/arm/config/xy_defconfig下面的新defconfig文件不等于.config文件。我假设linux内核展开一些符号并创建最终的.config Yocto构建:问题来了:Yocto无法正确处理下面的defconfig文件arch/arm/confi
KBUILD\u DEFCONFIG\u KMACHINE?=DEFCONFIG\u文件
无法按预期工作
我学到的第一课:defconfig!=。配置
裸内核构建(不带yocto):由make savedefconfig
创建的arch/arm/config/xy_defconfig
下面的新defconfig文件不等于.config
文件。我假设linux内核展开一些符号并创建最终的.config
Yocto构建:问题来了:Yocto无法正确处理下面的defconfig文件arch/arm/config/xy\u defconfig
。使用yocto构建linux内核时。。内核大小为一半,无法启动。这是因为yocto不会展开.config中缺少的符号,而make defconfig
会这样做
你如何处理这个问题
更新:
找到一个额外的使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
FILESEXTRAPATHS_prepend : "${THISDIR}:"
SRC_URI += "file://your-defconfig"
二,。开源/meta-mylayer/conf/machine/your-machine.conf添加到下面一行,
使用grep-inr“INTREE\u DEFCONFIG”
如果宏已存在于同一文件中,请替换defconfig名称 内核yocto
方法
KBUILD\u DEFCONFIG
变量由kernel yocto
类处理,因此您需要继承它。它通常是通过include filelinux yocto.inc
间接完成的,因此您应该在linux配方中使用这一行:
require recipes-kernel/linux/linux-yocto.inc
请注意,KBUILD\u DEFCONFIG\u KMACHINE
由两部分组成。第一个是变量名(KBUILD\u DEFCONFIG
),第二个是内核机器覆盖(KMACHINE
)。因此,您需要更改覆盖以适应您的机器。这就是为什么KMACHINE
部分在文档[1]中用斜体书写的原因。文档中有一个RPi示例:
KBUILD_DEFCONFIG_raspberrypi2 = "bcm2709_defconfig"
默认情况下,linux yocto.inc
中的KMACHINE
设置为MACHINE
变量
手动在树defconfig中处理
我们在树defconfig中使用的是内核yocto
类<代码>linux.inc来自元oe
层。我不知道这是不是最好的做法。以下是我们的linux配方(它被缩减到最低限度):
[1] 谢谢您的重播,但这正是我不想要的。在开发过程中,defconfig文件可能会更改。。因此,有效的defconfig文件始终在树中,不应在yocto配方中作为副本交付。否则,你总是要手动更新配方。Thx的回复,但你也没有得到我的观点
您的_defconfig
与.config
不相等,这导致在第一次运行时:make ARCH=arm您的_defconfig
处于裸内核构建中。我的经验是,Yocto无法将defconfig
扩展为完整的.config
文件。所有这些构建测试都会导致内核无法工作,只有裸构建的一半大小。请看我的更新。。在原来的问题中。@johns。只是一个想法-您是否有正确的内核映像类型(即压缩/未压缩类型)?因为一半大小的内核映像真的很奇怪。顺便说一句:为什么defconfig!=。配置在此问题中:。还有一点:请参阅meta-openembedded/meta-oe/recipes-kernel/linux/linux.inc
(如果使用)-它会根据您的openembedded配置稍微更新内核配置。
KBUILD_DEFCONFIG_raspberrypi2 = "bcm2709_defconfig"
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
}