You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Yocto构建出现‘Feature 'cfg/efi.scc' not found’错误?

问题:Yocto Scarthgap构建linux-yocto时EFI相关报错“Feature 'cfg/efi.scc' not found”

我正在为Scarthgap编写自定义元层,仅为一款定制板构建内核。已完成所有配置,但尽管遵循文档操作,EFI仍导致构建报错:

  • 定制板配置文件conf/machine/custom.conf中已添加efi到MACHINE_FEATURES,并配置了EFI_PROVIDER
  • 执行MACHINE=custom bitbake linux-yocto构建时,出现错误:Feature 'cfg/efi.scc' not found
  • 在Poky中找不到efi.scc文件,但文档和linux-yocto.inc中存在对该文件的引用,疑惑该功能是否本身存在问题?

解决方案

1. 核对内核架构与EFI配置路径

Scarthgap版本的linux-yocto中,不存在通用的cfg/efi.scc文件,EFI配置是分架构存放的:

  • ARM64架构对应cfg/arm64/efi.scc
  • ARM架构对应cfg/arm/efi.scc
  • x86架构对应cfg/x86/efi.scc
    如果你的配置中错误引用了通用路径,就会触发找不到文件的报错。

2. 手动指定架构专属的内核特性

不要仅依赖MACHINE_FEATURES += "efi"自动引入配置,在自定义内核配方的.bbappend文件中明确添加对应架构的EFI特性:

KERNEL_FEATURES += "cfg/${ARCH}/efi.scc"

3. 检查Poky内核文件完整性

Scarthgap的Poky中,EFI相关SCC文件位于poky/meta/recipes-kernel/linux/linux-yocto/${KERNEL_VERSION}/features/cfg/目录下的架构子文件夹中。如果找不到这些文件,大概率是克隆Poky时未同步完整的内核子模块,执行以下命令修复:

cd poky
git submodule update --init --recursive meta/recipes-kernel/linux/linux-yocto

4. 验证EFI_PROVIDER配置有效性

EFI_PROVIDER需设置为系统支持的引导加载器,比如systemd-boot或grub-efi,同时确保对应引导加载器的配方已被包含在构建环境中,否则即使EFI内核配置正确,后续也会出现其他报错。


内容的提问来源于stack exchange,提问作者preetam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 13:31:02