You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

android-vshell运行aarch64 QEMU虚拟机提示固件大小超限如何解决?

问题原因

你推测的架构识别错误是正确的,该问题不属于虚拟机配置错误,是android-vshell自带QEMU的适配缺陷:QEMU默认对x86/i386架构的固件大小限制为8MB,aarch64 virt机型的默认限制为128MB,你使用的android-vshell自定义补丁没有针对aarch64架构单独配置固件大小阈值,错误统一套用了x86的8MB限制,才会触发64MB固件超容的报错。

修复方案

方案1:无需重新编译QEMU的临时适配方案

  • 替换现有64MB的pflash固件,使用裁剪后总大小不超过8MB的aarch64最小UEFI固件,也可以直接裁剪现有固件(仅适用于固件后半段为空白区域的场景):
qemu-img resize flash0.img 4M
qemu-img resize flash1.img 4M
  • 调整启动参数,和Mac端配置对齐,避免架构识别混乱:
    • 把-cpu max改为-cpu cortex-a57
    • 删除重复的网络配置项-nic user,避免和后续的netdev配置冲突
  • 修改完成后直接启动即可,不需要调整磁盘镜像配置。

方案2:源码补丁永久修复

如果需要保留64MB的pflash固件功能,给android-vshell的QEMU源码添加以下补丁即可:

  1. 找到源码目录下hw/arm/virt.c文件
  2. 定位到virt_machine_class_init函数,修改max_fw_size配置为128MB:
mc->max_fw_size = 128 * 1024 * 1024;
  1. 重新编译QEMU替换android-vshell的内置二进制文件即可。
验证步骤

修复完成后先用最小参数测试启动,确认无报错后再添加其他自定义参数:

qemu-system-aarch64 -machine virt -m 512M -cpu cortex-a57 -drive file=disk-0.qcow2,if=virtio -drive file=flash0.img,if=pflash -drive file=flash1.img,if=pflash -nographic

内容的提问来源于stack exchange,提问作者4ntoine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:54:05