QEMU中ARM64镜像需pflash/bios,X86镜像却无需的技术原因?
为什么QEMU中ARM64虚拟机需要指定pflash参数才能启动?
这不是QEMU的限制,而是x86与ARM64架构的引导设计差异,以及QEMU对不同架构虚拟机的默认配置不同导致的,具体原因如下:
1. x86虚拟机的默认引导固件
QEMU的qemu-system-x86_64默认会模拟一套传统BIOS固件(也可手动指定UEFI固件),这套固件是QEMU内置的,不需要额外提供镜像文件。当你指定-cdrom和-boot d时,内置BIOS会自动扫描CD-ROM介质,读取并执行ISO中的引导程序,因此无需额外的pflash参数。
2. ARM64 virt平台的引导依赖
QEMU的virt是通用ARM64虚拟化平台,它没有内置引导固件。ARM64架构的现代引导流程依赖UEFI固件(类似x86的UEFI,但ARM64没有x86那样的传统BIOS兼容层),而UEFI固件需要以独立镜像文件的形式(比如你用到的flash.img,通常是EDK2项目的实现)通过pflash设备提供给虚拟机。
不指定pflash参数时,QEMU的ARM64 virt虚拟机没有引导程序,根本无法识别和加载Alpine ISO中的引导代码,自然无法启动。
3. 关于ISO的"可引导"标识
你用file命令看到ISO是"bootable",这是指该ISO包含ARM64 UEFI环境下可执行的引导程序,但前提是虚拟机已经加载了UEFI固件——没有pflash提供的UEFI,这个引导程序根本没有机会被执行。
内容的提问来源于stack exchange,提问作者ManiAm
相关产品推荐
相关产品推荐

