如何使用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
相关产品推荐
相关产品推荐

