我只是尝试在 qemu 上运行 android。我使用的是 Ubuntu 16.04,CPU 为
Intel(R) Core(TM) i7-4790
。
我将
android-6.0.1_r1
同步并编译为 aosp_arm-eng
。
我与arm平台同步并编译qemu 2.9.91
。
然后,我尝试通过以下 shell 代码来完成我的工作:
ANDROID_IMAGE_PATH=${ANDROID_PATH}/out/target/product/generic
QEMU_ARCH="arm"
QEMU_OPTS="-cpu cortex-a15 -machine type=virt"
KERNEL_CMDLINE='console=ttyAMA0,38400 earlycon=pl011,0x09000000 debug nosmp drm.debug=0x0 rootwait androidboot.selinux=permissive'
LINUX_PATH=${ANDROID_PATH}/prebuilts/qemu-kernel
KERNEL=${LINUX_PATH}/arm/kernel-qemu-armv7
${QEMU_PATH}/${QEMU_ARCH}-softmmu/qemu-system-${QEMU_ARCH} \
${QEMU_OPTS} \
-append "${KERNEL_CMDLINE}" \
-m 1024 \
-serial mon:stdio \
-kernel ${KERNEL} \
-initrd ${ANDROID_IMAGE_PATH}/ramdisk.img \
-drive index=0,if=none,id=system,format=raw,file=${ANDROID_IMAGE_PATH}/system.img \
-device virtio-blk-pci,drive=system \
-drive index=1,if=none,id=cache,format=raw,file=${ANDROID_IMAGE_PATH}/cache.img \
-device virtio-blk-pci,drive=cache \
-drive index=2,if=none,id=userdata,format=raw,file=${ANDROID_IMAGE_PATH}/userdata.img \
-device virtio-blk-pci,drive=userdata \
-netdev user,id=mynet,hostfwd=tcp::5550-:5555 -device virtio-net-pci,netdev=mynet \
-display gtk,gl=on \
-device virtio-gpu-pci,virgl \
-device nec-usb-xhci,id=xhci \
-device sdhci-pci \
-d guest_errors \
$*
然后我在 qemu 窗口上收到消息:“Guest 尚未初始化显示(尚未)”,如下图所示:
问题可能是因为内核和选项不匹配。
首先(1)我检查图像。 我使用上面的图像和路径运行模拟器。 该模拟器基于qemu,来自Android源代码。 我使用以下代码运行模拟器并且它可以工作。
EMULATOR_PATH=${ANDROID_PATH}/prebuilts/android-emulator/linux-x86_64
${EMULATOR_PATH}/emulator \
-kernel ${KERNEL} \
-ramdisk ${ANDROID_IMAGE_PATH}/ramdisk.img \
-system ${ANDROID_IMAGE_PATH}/system.img \
-data ${ANDROID_IMAGE_PATH}/userdata.img \
-sysdir ${ANDROID_IMAGE_PATH} \
-memory 512 \
-partition-size 1024
现在,qemu 的选项可能有问题。 那么有人可以告诉我有用的机器类型或其他选项吗?
如果您能给我一些帮助,我将非常感谢(⊙o⊙)
尝试
-display gtk,gl=off
禁用GL显示驱动程序,这可能会有所不同。
或
-nographic
,为了无头运行。
参见 https://www.linux-kvm.org/images/b/b2/01x10b-QEMUGfraphics.pdf