在64位机器上运行/构建Yocto intel-core2-32的适配调整咨询
适配64位UEFI运行32位Yocto Linux(intel-core2-32 BSP)
核心逻辑
64位UEFI仅能识别并启动64位EFI引导程序(bootx64.efi),但该引导程序可加载32位Linux内核与根文件系统。所以需要在32位Yocto构建流程中,加入64位EFI引导组件的支持,同时保留32位系统的核心配置。
具体调整步骤
1. 修改local.conf配置
在构建目录的conf/local.conf中添加以下配置,开启跨架构EFI引导支持:
# 允许构建64位EFI工具链 MULTILIBS = "multilib:lib64" DEFAULTTUNE_virtclass-multilib-lib64 = "x86-64" # 指定生成64位GRUB EFI镜像 GRUB_TARGET = "x86_64-efi" GRUB_BUILD_TARGET = "x86_64-efi" # 维持32位系统核心编译目标 DEFAULTTUNE = "core2-32"
2. 调整BSP层配置(按需操作)
若meta-intel/meta-intel-core2-32/conf/machine/include/core2-32.inc中存在限制64位组件的配置,需做如下修改:
- 注释掉禁用
MULTILIBS的相关配置 - 添加
IMAGE_BOOT_FILES += "bootx64.efi",确保引导文件被打包到镜像内
3. 重新构建系统镜像
执行构建命令,确保64位EFI引导程序与32位系统组件均被正确编译:
bitbake core-image-minimal
4. 部署镜像到存储介质
构建完成后,在tmp/deploy/images/<machine>/目录下找到生成的bootx64.efi和32位系统镜像:
- 将
bootx64.efi放置到ESP分区的EFI/BOOT/路径下 - 将32位根文件系统镜像部署到对应数据分区
- 在UEFI固件设置中启用ESP分区引导项
关键注意事项
- 确认内核配置支持EFI引导:需开启
CONFIG_EFI=y和CONFIG_EFI_STUB=y,meta-intel的core2-32 BSP通常默认开启,若未开启需在linux-intel的bbappend文件中添加对应配置 - 部分64位UEFI固件可能限制加载32位内核,需提前确认硬件固件兼容性
- 若使用systemd-boot替代GRUB,需编译64位版本的systemd-boot,并生成指向32位内核的启动条目
内容的提问来源于stack exchange,提问作者Anton9988
相关产品推荐
相关产品推荐

