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

arm64架构树莓派4通过QEMU虚拟化Android遇根文件系统挂载报错求助

解决方案

核心问题原因

从报错日志可见内核未识别到任何挂载的块设备,可用存储仅为ramdisk分区,因此你尝试的所有root路径配置均无法生效,对应解决步骤如下:

    1. 补全内核virtio设备驱动
      你编译的generic_arm64内核默认未开启virtio块设备支持,需回到编译环境修改内核配置,开启以下选项后重新编译内核:
CONFIG_VIRTIO=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_MMIO=y

如果将上述选项编译为模块,需将对应模块打包进initramfs后再启动。

    1. 修正QEMU磁盘挂载参数
      原有-drive参数未指定存储接口,QEMU默认挂载为非virtio接口导致内核无法识别,需显式指定if=virtio参数,同时补充ramdisk加载配置:Android系统启动依赖ramdisk完成初始化,不可直接将system.img作为根分区挂载,需将编译生成的ramdisk.img同步传输到树莓派对应目录。
    1. 修正内核启动参数
    2. 补充串口输出配置console=ttyAMA0确保日志正常输出
    3. 确认system.img文件系统格式:在编译主机执行file system.img查询实际格式,将rootfstype参数对应修改为ext4或erofs
    4. 确认system.img分区结构:执行fdisk -l system.img确认是否存在分区表,无分区表则root参数写/dev/vda,存在分区表则对应根分区序号写/dev/vdaX

参考启动命令

qemu-system-aarch64 \
-M virt,accel=kvm -cpu host -smp 4 -m 4G \
-no-reboot -serial stdio \
-kernel kernel-5.4 \
-initrd ramdisk.img \
-append "console=ttyAMA0 root=/dev/vda rootfstype=erofs rw panic=1 loglevel=8" \
-drive file=system.img,format=raw,if=virtio \
-device virtio-gpu-pci \
-device virtio-tablet-pci

可选验证步骤

若仍挂载失败,可在内核启动参数中添加init=/bin/sh进入临时shell,执行ls /dev查看是否存在vda相关设备,确认块设备识别状态后再调整配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:36:03