如何在QEMU arm64模式下模拟含fastboot、recovery的完整Android系统?
在QEMU arm64模式下模拟完整Android系统(含fastboot、recovery、bootloader)
完全可以实现,以下是具体操作方案:
1. 获取适配的arm64 Android镜像包
你需要包含完整组件的arm64原生Android镜像,推荐通过AOSP源码编译生成,这样能确保自带bootloader、fastboot、recovery以及标准系统分区:
- 编译时指定arm64目标架构(
aarch64),编译完成后在out/target/product/generic_arm64/目录下会生成boot.img、recovery.img、system.img、userdata.img以及对应的bootloader镜像(如u-boot.bin或Android专属bootloader)。 - 若不想自行编译,可选择第三方预编译的arm64官方类镜像(如LineageOS的arm64版本),需确认镜像包包含完整的bootloader和fastboot支持组件。
2. 配置QEMU启动参数
核心是指定arm64架构、挂载镜像、配置bootloader和fastboot交互通道:
- 基础架构与硬件配置:
qemu-system-aarch64 \ -machine virt,gic-version=3 \ -cpu cortex-a57 \ -m 4096 \ -serial stdio - 挂载系统分区(以AOSP编译的镜像为例):
在上述命令中添加以下行来挂载各镜像:-drive if=none,file=out/target/product/generic_arm64/boot.img,format=raw,id=boot \ -device virtio-blk-device,drive=boot \ -drive if=none,file=out/target/product/generic_arm64/system.img,format=raw,id=system \ -device virtio-blk-device,drive=system \ -drive if=none,file=out/target/product/generic_arm64/recovery.img,format=raw,id=recovery \ -device virtio-blk-device,drive=recovery - 指定bootloader:
添加-bios out/target/product/generic_arm64/u-boot.bin(替换为实际bootloader路径),启动后会进入bootloader控制台,支持fastboot命令。 - 开启远程fastboot连接(可选):
添加网络转发配置,让主机的fastboot工具可连接QEMU内的设备:
主机端可通过-device virtio-net-device,netdev=net0 \ -netdev user,id=net0,hostfwd=tcp::5555-:5555fastboot -s tcp:localhost:5555执行刷写、启动等操作。
3. 常用操作流程
- 刷入镜像:启动QEMU进入bootloader后,在控制台输入
fastboot进入fastboot模式,执行fastboot flash system system.img、fastboot flash recovery recovery.img等命令完成分区刷写。 - 启动系统:刷写完成后,执行
fastboot boot boot.img直接启动系统,或从bootloader菜单选择启动recovery模式。 - 调试:若配置了网络,可通过
adb connect localhost:5555连接设备进行调试。
注意事项
- 请勿使用Android x86镜像,其架构与arm64不兼容,无法正常模拟。
- AOSP编译时需确保设备配置中启用了recovery分区和fastboot支持(默认generic_arm64配置已包含)。
内容的提问来源于stack exchange,提问作者Alexander Neverov
相关产品推荐
相关产品推荐

