如何停用内核选项?

h0c*_*355 4 bitbake yocto

我想在构建期间停用内核选项:

在内核配方的 .bbappend 文件中,我通过具有以下内容SRC_URI的 .cfg 内核片段文件获取no_usb.cfg

CONFIG_USB=n
CONFIG_USB_TEST=y
Run Code Online (Sandbox Code Playgroud)

第一个条目应该在内核配置中关闭 USB,第二个条目用于测试相反的情况。

这不起作用:既没有出现测试条目,也没有停用 USB。我也在 yocto 源 *.scc 文件中看到过,我为我的文件创建了一个no_usb.cfg

kconf hardware no_usb.cfg
Run Code Online (Sandbox Code Playgroud)

但是我在文档中发现的很少,无法关闭 USB。那么我该如何停用CONFIG_USB

这是我的内核配方(来自飞思卡尔 SDK)linux-qoriq_3.12.bb

require recipes-kernel/linux/linux-qoriq.inc
SRC_URI = "git://git.freescale.com/ppc/sdk/linux.git;branch=sdk-v1.9.x"
SRCREV = "43cecda943a6c40a833b588801b0929e8bd48813"
Run Code Online (Sandbox Code Playgroud)

我有一个带有此附加文件的图层linux-qoriq_3.12.bbappend

SRC_URI += "file://no_usb.cfg"
Run Code Online (Sandbox Code Playgroud)

该层的目录结构如下:

meta-layer
??? recipes-kernel
    ??? linux
        ??? linux-qoriq
        ?   ??? no_usb.cfg
        ??? linux-qoriq_3.12.bbappend
Run Code Online (Sandbox Code Playgroud)

小智 5

正如之前的评论者所说,您需要使用# CONFIG_FOO is not set而不是CONFIG_FOO=n. 不过,我想做一个更正。linux-qoriq recipe确实支持配置片段,它只是使用一个单独的变量来控制它们的使用,DELTA_KERNEL_DEFCONFIG. 请参阅do_configure_prependrecipes-kernel/linux/linux-qoriq.inc了解详细信息。

在您的 append 中,您应该能够添加它来修复它:

DELTA_KERNEL_DEFCONFIG += "no_usb.cfg"
Run Code Online (Sandbox Code Playgroud)

  • 谢谢指正!我从来没有仔细看过。嗯,如果我有一个基于 qoriq 的板,我会考虑用标准机制替换那个部分。 (2认同)

And*_*ers 4

只要你的内核配方有以下行

require recipes-kernel/linux/linux-yocto.inc
Run Code Online (Sandbox Code Playgroud)

引用 a 的 SRC_URI.cfg应该可以工作。

但是,禁用内核选项的方法不是将其设置为=0。相反,它应该设置为

# CONFIG_USB is not set 
Run Code Online (Sandbox Code Playgroud)

换句话说,这就是您的.cfg文件中应该包含的行。另外,请确保文件中没有相互矛盾的选项.cfg

更新:

再次注意,这要求您的内核配方包含以下行

require recipes-kernel/linux/linux-yocto.inc
Run Code Online (Sandbox Code Playgroud)

为了让 yocto 内核工具正常工作。据我从meta-fsl-ppc: linux-qoriq.inc可以看到,这个食谱不包括该行。

.cfg更新:请参阅 kergoth 的答案,实际上可以使用linux-qoriq. 您只需在DELTA_KERNEL_DEFCONFIG变量中命名它们即可。