如何停用内核选项?

How can I deactivate a kernel option?

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

在内核配方的 .bbappend 文件中,我通过 SRC_URI 获取了一个 .cfg 内核片段文件 no_usb.cfg,内容如下:

CONFIG_USB=n
CONFIG_USB_TEST=y

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

这没有用:既没有出现测试条目,也没有停用 USB。我还在 yocto 源文件中看到了 *.scc 文件,我为我的 no_usb.cfg:

创建了一个
kconf hardware no_usb.cfg

但我在文档中只发现了 less 并且无法关闭 USB。那么如何停用 CONFIG_USB?

这是我的内核配方(来自 freescale 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"

我有一个包含此附加文件的层 linux-qoriq_3.12.bbappend:

SRC_URI += "file://no_usb.cfg"

图层的目录结构如下:

meta-layer
└── recipes-kernel
    └── linux
        ├── linux-qoriq
        │   └── no_usb.cfg
        └── linux-qoriq_3.12.bbappend

只要你的内核配方有下面这行

require recipes-kernel/linux/linux-yocto.inc

a SRC_URI 引用 .cfg 应该可以。

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

# CONFIG_USB is not set 

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

更新:

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

require recipes-kernel/linux/linux-yocto.inc

为了让 yocto 内核工具正常工作。据我所见 meta-fsl-ppc: linux-qoriq.inc 此食谱不包含该行。

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

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

在你的追加中,你应该可以添加这个来修复它:

DELTA_KERNEL_DEFCONFIG += "no_usb.cfg"