最近需要学习一些安卓的相关知识。想到用ubuntu qemu 运行安卓系统先玩一下。当前ubuntu 运行环境为Ubuntu 20.04.

1、环境准备

1.1 安装 QEMU 和 KVM

sudo apt install qemu qemu-kvm libvirt-daemon-system bridge-utils virt-manager

安装后重启系统,并验证 KVM 支持:

[~]$kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

1.2 ‌配置用户权限

将当前用户加入 libvirt 和 kvm 组

sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER

2、获取 Android 镜像

2.1 下载安卓镜像

如果下面链接失效的话可以从安卓官网下载(如:android-x86_64-9.0-r2-k49.iso)。

$wget https://nchc.dl.sourceforge.net/project/android-x86/Release%209.0/android-x86_64-9.0-r2-k49.iso?viasf=1
--2025-04-01 09:13:48--  https://nchc.dl.sourceforge.net/project/android-x86/Release%209.0/android-x86_64-9.0-r2-k49.iso?viasf=1
Resolving nchc.dl.sourceforge.net (nchc.dl.sourceforge.net)... 140.110.96.69, 2001:e10:ffff:1f02::17
Connecting to nchc.dl.sourceforge.net (nchc.dl.sourceforge.net)|140.110.96.69|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 963641344 (919M) [application/octet-stream]
Saving to: ‘android-x86_64-9.0-r2-k49.iso?viasf=1’

android-x86_64-9.0-r2-k4   0%[                                 ]   4.26M   961KB/s    eta 13m 24s

下载的文件重新命名

mv android-x86_64-9.0-r2-k49.iso\?viasf\=1  android-x86_64-9.0-r2-k49.iso

2.1 创建虚拟磁盘

下载的安卓系统需要安装到虚拟磁盘中。

qemu-img create -f qcow2 android.img 10G

3、启动 Android 虚拟机

3.1 基础启动命令

qemu-system-x86_64 \
  -enable-kvm \                             # 启用 KVM 加速
  -m 4G -smp 4 \                            # 分配 4GB 内存和 2 核 CPU
  -hda android.img \                        # 指定虚拟磁盘
  -cdrom android-x86_64-9.0-r2-k49.iso \    # 指定 ISO 镜像
  -net nic -net user \                      # 启用用户模式网络
  -vga qxl \                                # 使用 QXL 虚拟显卡
  -device virtio-serial-pci \               # 添加 virtio 串口设备
  -spice port=5900,addr=127.0.0.1 \         # 启用 SPICE 远程桌面支持
  -device virtio-keyboard-pci               # 优化键盘输入

3.1.1、 问题1,启动报错

qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.80000001H:ECX.svm [bit
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.80000001H:ECX.svm [bit
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.80000001H:ECX.svm [bit
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.80000001H:ECX.svm [bit

该警告表明宿主机不支持 QEMU 请求的 ‌AMD SVM(Secure Virtual Machine)硬件虚拟化功能‌(CPUID.80000001H.svm [bit 2]),常见于嵌套虚拟化环境或宿主机未启用 AMD-V 的情况。

修改启动,添加启动参数"-cpu host"

qemu-system-x86_64 \
  -cpu host \                               # 在 QEMU 命令中强制使用宿主机 CPU 模型并启用 KVM
  -enable-kvm \                             # 启用 KVM 加速
  -m 4G -smp 4 \                            # 分配 4GB 内存和 4 核 CPU
  -hda android.img \                        # 指定虚拟磁盘
  -cdrom android-x86_64-9.0-r2-k49.iso \    # 指定 ISO 镜像
  -net nic -net user \                      # 启用用户模式网络
  -vga qxl \                                # 使用 QXL 虚拟显卡
  -device virtio-serial-pci \               # 添加 virtio 串口设备
  -spice port=5900,addr=127.0.0.1 \         # 启用 SPICE 远程桌面支持
  -device virtio-keyboard-pci               # 优化键盘输入

在Linux系统中使用如下命令,远程连接qemu

remote-viewer spice://127.0.0.1:5900

可以看到需要输入密码

3.1.2、问题2,支持密码输入

qemu-system-x86_64: warning: Spice: reds.c:2231:reds_handle_ticket: Ticketing is enabled, but no password is set. please set a ticket first
virtio_input_hid_handle_status: unknown type 20
virtio_input_hid_handle_status: unknown type 20

该警告表明在使用 QEMU 的 ‌SPICE 图形协议‌时启用了 Ticketing 认证机制但未设置密码。SPICE 协议默认要求 Ticketing 与密码配合使用,否则会触发此警告

处理方法 1. 添加密码支持

在 QEMU 启动命令中通过password 参数为 SPICE 连接设置密码
qemu-system-x86_64 \
  -cpu host \                               # 在 QEMU 命令中强制使用宿主机 CPU 模型并启用 KVM
  -enable-kvm \                             # 启用 KVM 加速
  -m 4G -smp 4 \                            # 分配 4GB 内存和 2 核 CPU
  -hda android.img \                        # 指定虚拟磁盘
  -cdrom android-x86_64-9.0-r2-k49.iso \    # 指定 ISO 镜像
  -net nic -net user \                      # 启用用户模式网络
  -vga qxl \                                # 使用 QXL 虚拟显卡
  -device virtio-serial-pci \               # 添加 virtio 串口设备
  -spice port=5900,addr=127.0.0.1,password=12345678  \         # 启用 SPICE 远程桌面支持port=5900:指定 SPICE 服务端口(默认 5900)‌,password=your_password:设置连接密码(需至少 8 位)‌
  -device virtio-keyboard-pci               # 优化键盘输入

处理方法 2 关闭密码

qemu-system-x86_64 \
  -cpu host \                               # 在 QEMU 命令中强制使用宿主机 CPU 模型并启用 KVM
  -enable-kvm \                             # 启用 KVM 加速
  -m 4G -smp 4 \                            # 分配 4GB 内存和 2 核 CPU
  -hda android.img \                        # 指定虚拟磁盘
  -cdrom android-x86_64-9.0-r2-k49.iso \    # 指定 ISO 镜像
  -net nic -net user \                      # 启用用户模式网络
  -vga qxl \                                # 使用 QXL 虚拟显卡
  -device virtio-serial-pci \               # 添加 virtio 串口设备
  -spice port=5900,addr=127.0.0.1,disable-ticketing  \         # 启用 SPICE 远程桌面支持disable-ticketing:直接跳过密码验证流程‌
  -device virtio-keyboard-pci               # 优化键盘输入

输入密码后可以正常进入安卓安装目录

3.2、安装 Android 系统到虚拟磁盘

首次启动时选择 Installation - Install Android-x86 to harddisk”,将系统安装到 android.img 磁盘‌ 安装完成后重启虚拟机,并移除 -cdrom 参数以从磁盘启动

qemu-system-x86_64 -cpu host -enable-kvm -m 4G -smp 4 -hda android.img -net nic -net user  -vga qxl -device virtio-serial-pci -spice port=5900,addr=127.0.0.1,password=12345678  -device virtio-keyboard-pci

启动界面1

启动界面2

启动界面3

安装完成,开始折腾

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐