我正在尝试从 QEMU 中的 alpine Linux 映像创建两个虚拟机。一个用于 X86,一个用于 ARM64。
对于X86
qemu-system-x86_64 \
-m 512 \
-hda alpine_x86.qcow2 \
-cdrom path/to/img.iso \
-boot d
对于ARM64
qemu-system-aarch64 \
-M virt \
-cpu cortex-a57 \
-m 2048 \
-hda alpine_arm.qcow2 \
-cdrom path/to/img.iso \
-drive if=pflash,format=raw,file=flash.img \ <--------- ?
-nographic
比较两个流程,在X86流程中指定
-cdrom
就足够了。但在 ARM64 情况下,我需要指定 pflash
选项。
我使用
file
检查了 ARM64 映像,它显示可启动。
file alpine-standard-3.20.1-aarch64.iso
alpine-standard-3.20.1-aarch64.iso: ISO 9660 CD-ROM filesystem data (DOS/MBR boot sector) 'alpine-std 3.20.1 aarch64' (bootable)
但是,如果我不指定 pflash,QEMU ARM VM 不会出现。这是 QEMU 限制还是背后的技术原因?
事实上,x86 和 aarch64 VM 都需要 BIOS 才能从 CDROM ISO 映像启动。区别只是 x86 PC 机器类型将默认启动 BIOS,即使您没有明确要求 BIOS,而 AArch64 virt 机器类型默认没有 BIOS,您必须明确要求一个。
这主要是出于历史原因,无论是在 QEMU 内还是更普遍的两种架构中: