我已经尝试了很长时间没有运气修改内核配置。 : - (
meta-xxx-yyy中有一个BSP / recipes-kernel / linux / linux_git.bb。 我尝试在我所拥有的名为meta-xxx-mylayer的层中覆盖内核配置 recipes-kernel / linux / linux_git.bbappend和recipes-kernel / linux / files / frag.cfg
frag.cfg:
# CONFIG_NETFILTER is not set
CONFIG_AUTOFS4_FS=y
linux_git.bbappend:
COMPATIBLE_MACHINE_my_mach = "my_mach"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://frag.cfg"
linux_git.bb :(只是文件的一部分)
KERNEL_RELEASE = "3.10"
PV = "3.10"
PR = "r10"
S = "${WORKDIR}/git"
COMPATIBLE_MACHINE = "(my_mach)"
元-XXX-YYY / CONF /机/ my_mach.conf: (没有meta-xxx-mylayer / conf / machine / my_mach.conf)
PREFERRED_PROVIDER_virtual/kernel = "linux"
UBOOT_MACHINE = "socfpga_cyclone5_config"
KERNEL_MACHINE = "socfpga"
构建命令:
bitbake linux -c cleansstate -f
bitbake linux -c configure -f
bitbake linux -c compile -f
bitbake linux -c deploy -f
一切都在构建,但是当我检查/proc/config.gz时,我可以看到CONFIG_AUTOFS4_FS未启用。
我在meta-xxx-mylayer层中有另一个配方,它可以很好地构建和安装到rootfs中,所以我知道该层已启用。
在构建期间,frag.cfg文件被复制到./tmp/work/my_mach-poky-linux-gnueabi/linux/3.10-r10/,而其余文件位于./tmp/work/my_mach-狭小-Linux的gnueabi / LINUX / 3.10-R10 / git的/。这是一个问题吗?
我做错了什么???
答案 0 :(得分:5)
如果没有看到真正的内核配方很难回答,但可能发生的事情是socfpga的内核配方只是inhertis内核而不是linux-yocto。如果是这种情况,那么您无法使用片段更改配置,您必须提供完整的defconfig。
答案 1 :(得分:3)
也许已经晚了但是......
内核开发有自己的方法进行更改。我昨天在这里发了一篇文章,但我明白我错了,所以我马上把它删了。 我不会说出确切的步骤。只是简短的描述。你应该在yocto dev手册中找到它们,因为它不是特别的东西。
内核更改应直接在源上进行(通常在/ workdir / tmp /中)。然后使用git制作补丁。 如果使用bitbake -c menuconfig virtual / kernel或其他方式更改配置,请将其直接放在内核.bbappend文件中。这绝对有效。 我尝试使用几乎相同的devtool并且补丁没有合并。
答案 2 :(得分:3)
我同意Alexandre Belloni,但稍作修正。如果您的内核配方(linux_git.bb)仅继承自内核而不是内核 -yocto,那么您就无法使用配置片段。
不幸的是,我无法在文档中看到对此的任何解释,而是查看
<强>内核yocto.bbclass 强>:
# returns all the elements from the src uri that are .scc files
def find_sccs(d):
sources=src_patches(d, True)
sources_list=[]
for s in sources:
base, ext = os.path.splitext(os.path.basename(s))
if ext and ext in [".scc", ".cfg"]:
sources_list.append(s)
elif base and base in 'defconfig':
sources_list.append(s)
return sources_list
sccs="$sccs ${@" ".join(find_sccs(d))}"
patches="${@" ".join(find_patches(d))}"
feat_dirs="${@" ".join(find_kernel_feature_dirs(d))}"
# updates or generates the target description
updateme ${updateme_flags} -DKDESC=${KMACHINE}:${LINUX_KERNEL_TYPE} \
${includes} ${addon_features} ${ARCH} ${KMACHINE} ${sccs} ${patches}
您可以看到任何扩展名为.cfg的文件都会被添加到sccs变量中,该变量将在updateme内核工具中使用。
答案 3 :(得分:1)
在Yocto中使用menuconfig
修改内核配置的简单方法是:-
bitbake -c menuconfig virtual/kernel
答案 4 :(得分:0)
是否正确解析了内核配置标志的依赖关系?我想在这种情况下这将是问题