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

如何使用meta-intel生成可在VMware启动的Yocto core-image-minimal ISO镜像

问题:使用meta-intel生成的core-image-minimal ISO无法在VMware启动

我尝试使用meta-intel层生成core-image-minimal的ISO镜像,镜像生成过程无报错,但在VMware中启动失败(启动时无法找到有效引导项)。

以下是我的local.conf配置:

MACHINE  ?= "intel-corei7-64"
#
# This sets the default machine to be qemux86-64 if no other machine is selected:
MACHINE ??= "qemux86-64"
DISTRO ?= "poky"
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
USER_CLASSES ?= "buildstats"


IMAGE_FSTYPES += "live"
NOISO = "0"

PREFERRED_PROVIDER_virtual/kernel = "linux-intel"

DEPENDS:append:${MACHINE} = " cdrtools-native"


IMAGE_FSTYPES:append = " ext4"
IMAGE_TYPEDEP_wic = "ext4"
do_image_wic[depends] += "${INITRD_IMAGE_LIVE}:do_image_complete"
do_rootfs[depends] += "virtual/kernel:do_deploy"

IMAGE_BOOT_FILES:append = "\
  ${KERNEL_IMAGETYPE} \
  microcode.cpio \
  ${IMGDEPLOYDIR}/${IMAGE_BASENAME}-${MACHINE}.ext4;rootfs.img \
  ${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', 'grub-efi- bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \
  ${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', '${IMAGE_ROOTFS}/boot/EFI/BOOT/grub.cfg;EFI/BOOT/grub.cfg', '', d)} \
  ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', 'systemd-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \
  ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/loader.conf;loader/loader.conf ', '', d)} \
  ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/entries/boot.conf;loader/entries/boot.conf', '', d)} "

bblayers.conf配置:

POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /home/brain/poky/meta \
  /home/brain/poky/meta-poky \
  /home/brain/poky/meta-yocto-bsp \
  /home/brain/poky/meta-intel\
  "

请问如何生成可在VMware正常启动的ISO镜像?


解决方案

针对VMware启动失败的问题,可通过以下调整修复:

1. 明确指定MACHINE配置

删除MACHINE ??= "qemux86-64",仅保留MACHINE = "intel-corei7-64",避免机器架构配置混淆:

MACHINE = "intel-corei7-64"
DISTRO ?= "poky"
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
USER_CLASSES ?= "buildstats"

2. 修正IMAGE_BOOT_FILES的错误配置

  • 移除grub-efi- bootx64.efi中的多余空格,改为grub-efi-bootx64.efi
  • 由于intel-corei7-64默认使用grub-efi作为EFI引导器,可简化配置,无需兼容systemd-boot:
IMAGE_BOOT_FILES:append = "\
  ${KERNEL_IMAGETYPE} \
  microcode.cpio \
  ${IMGDEPLOYDIR}/${IMAGE_BASENAME}-${MACHINE}.ext4;rootfs.img \
  grub-efi-bootx64.efi;EFI/BOOT/bootx64.efi \
  ${IMAGE_ROOTFS}/boot/EFI/BOOT/grub.cfg;EFI/BOOT/grub.cfg \
"

3. 确保live镜像包含必要的引导组件

在EXTRA_IMAGE_FEATURES中添加live-boot,保证live镜像具备完整的启动能力:

EXTRA_IMAGE_FEATURES ?= "debug-tweaks live-boot"

4. 调整ISO生成的依赖与参数

  • 替换cdrtools-native为genisoimage-native(部分Yocto版本中cdrtools-native兼容性较差):
DEPENDS:append:${MACHINE} = " genisoimage-native"
  • 明确ISO生成参数:
NOISO = "0"
IMAGE_FSTYPES += "iso live"

5. 启用VMware相关内核驱动

确保linux-intel内核包含VMware所需驱动,添加以下配置强制开启:

KERNEL_FEATURES:append = " features/virtualization/virtualization.scc"

6. 重新构建镜像

执行以下命令清理并重新构建:

bitbake -c cleanall core-image-minimal
bitbake core-image-minimal

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:01:15