环境
操作系统:银河麒麟 V10 SP1 2303
适用架构:ARM64(鲲鹏 920 x8、飞腾 FT-2000/4、飞腾 D2000)
安装实体机的 Linux 操作系统
不能低于银河麒麟 V10 SP1 2303。
优麒麟或 Debian 请参考《虚拟机中安装 Windows ARM64》https://my.oschina.net/chipo/blog/write/4963523
安装 QEMU 和 UEFI
sudo apt install qemu qemu-kvm bridge-utils virt-manager libguestfs-tools qemu-system qemu-system-arm qemu-efi qemu-efi-aarch64 qemu-utils libvirt-clients libvirt-daemon-system gir1.2-spiceclientgtk-3.0
重启计算机。
升级 Virt-Manager 和 VirtInst
系统集成的虚拟系统管理器(Virt-Manager)2.2.1 不支持虚拟显卡的 RamFB 模式。需要升级到 4.0.0 及以上的版本。
https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/universe/v/virt-manager/
下载 virt-manager_4.0.0-1_all.deb 和 virtinst_4.0.0-1_all.deb
当然,也可以选择更高的版本。能用就行。
sudo dpkg -i virt*.deb
请不要开启虚拟机里 Windows 11 的高分辨率模式。虚拟机里的显示会花屏。
请保持默认的低分辨率模式,如果已经开启高分辨率模式,请先关闭,bcdedit -set highestmode off
查看虚拟化软件的版本
virsh version
根据库编译:libvirt 6.0.0
使用库:libvirt 6.0.0
使用的 API: QEMU 6.0.0
运行管理程序: QEMU 4.2.1(版本应在 3.0.0 及以上)
virt-manager --version
4.0.0 (版本应在 4.0.0 及以上)
如果已经有了一个通过 VirtManager 生成的虚拟机,可以使用转换命令直接导出 qemu 的启动命令。
查看正在运行的虚拟机。
virsh list
Id 名称 状态
-----------------------
2 win11 running
查看虚拟机的配置。
virsh dumpxml win11
导出虚拟机的配置。
virsh dumpxml win11 > win11.xml
导出启动命令。
virsh domxml-to-native qemu-argv win11.xml
VHDX 硬盘映像
映像1,即开即用的 Qcow2 请看这里:https://forum.openkylin.top/forum.php?mod=viewthread&tid=194784
映像2,下载 Windows 10 或 11 ARM64 的硬盘镜像。需要使用微软账号登录网站。
https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewARM64
转换格式。
cd ~/Download
Win 11
qemu-img convert -p -O qcow2 ./Windows11_InsiderPreview_Client_ARM64_en-us_25346.VHDX ./Windows11_InsiderPreview_Client_ARM64_en-us_25346.qcow2
如果觉得转换后的文件名称太长,可以在上述命令中自行修改,比如 ./winArm25346.qcow2
ISO 光盘映像
这是个可选步骤。请参考《Windows ARM64 的安装》https://my.oschina.net/chipo/blog/4816548
虚拟系统管理器
从开始菜单中启动 “虚拟系统管理器”。“文件”、“新建虚拟机”、“导入现有磁盘镜像”。
“前进”、“浏览”
“本地浏览”,选择硬盘镜像所在的路径。
“选择卷”,选择要安装的操作系统,输入 “Ubuntu 20.04”,是的,你没看错,目前如果选择 “Windows 10” 在生成虚拟机时会报错。
输入分配给虚拟机的内存容量和 CPU 的核心数。
输入虚拟机的名称,比如 “Win10” 或 “Win11”。勾选 “在安装前自定义配置”。
点击 “完成” 后,在弹出的新对话框中,选中 “磁盘”。由于 virt 机器没有 SATA 控制器,这里转而使用 virtio。通过 usb 存储可以做到这一点。将 “磁盘总线” 改为 “USB”。选择 SCSI 可能会导致虚拟机蓝屏。但是,如果使用前文中 “即开即用” 的硬盘镜像,这里可以使用 SCSI 磁盘总线。因为镜像里已经集成了 SCSI 的驱动。
默认情况下,ARM64 平台的虚拟机并未添加显卡、键盘和鼠标。显卡型号请选择 “Ramfb”。
VGA 设备及其驱动在 KVM 环境下不能用(这也是它被踢出 ArmVirtPkg 的原因),而 virtio-gpu 的 GOP 不被 Windows 支持。
qemu 3.0.0 加入了 ramfb 设备,用一块内存模拟类 VGA 的 FrameBuffer,这样 Windows 就有显示输出了(当然还是没有硬件加速)。
TPM 2.0
安装 Windows 10 可以省略这个步骤。如果要升级到 Windows 11,建议您参考以下内容。
Windows 11 要求硬件支持 TPM 2.0,虽然微软在 OEM 领域放宽了要求,但是仅限于特定的需求。
QEMU 支持添加一个虚拟 TPM 设备给虚拟机。
启动系统
所有相关设备添加完成后,点击左上角 “开始安装”。
最终的硬件类似下图所示。
系统启动后会进行一些安装步骤,还会重启,请耐心等待一下。
由于现在驱动程序还不是很完善,可能会遇到 Windows 闪退或莫名的卡顿,建议更新驱动。
已知的问题:Firefox ARM64 可能会造成系统假死。
win 10 系统的截图
Win 11 系统的截图
网卡驱动
“即开即用” 的硬盘镜像可以跳过此步骤。
下载虚拟网卡的驱动程序。
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
可以添加光驱至虚拟机,也可以将 ISO 文件复制到优盘,然后在虚拟机中添加 USB 设备,连接到这个优盘。复制 ISO 文件后,挂载或解压缩。
Win 10 请禁用设备驱动程序的签名强制。Win 11 不用设置这个选项。
启动 Windows,然后右键单击 “开始” 按钮,然后选择 Command Prompt (Admin) 也就是 “命令提示符(管理员)”。 使用 bcdedit 启用 “测试签名” 的设备驱动程序。
bcdedit.exe -set TESTSIGNING ON
然后重启 Windows。一旦再次启动,然后右击窗口开始按钮,然后选择 Device Manager(设备管理器)。 在设备管理器中,选择 View(视图)菜单,然后选择 Devices by Connection(按连接列出的设备)。
在设备树中导航,选择 ACPI ARM64-based PC, Microsoft ACPI-Compliant System, PCI Express Root Complex,然后您将在那里看到一个未知设备。(树中有许多未知设备,但 PCI Express 根联合体下的设备是虚拟网卡。) 右键单击未知设备,然后选择更新驱动程序,然后在我的计算机上浏览驱动程序,然后选择 ISO 镜像挂载或释放后所在的文件夹,比如 D:\,勾选 “包括子文件夹”。 单击下一步安装红帽 VirtIO 以太网适配器(Red Hat VertIO Ethernet Adapter)。
SCSI 驱动
“即开即用” 的硬盘镜像可以跳过此步骤。
安装方法同网卡。只是设备不同而已。(可选步骤:SCSI 驱动安装完毕后,关闭操作系统,将 USB 磁盘删除,不要删除硬盘镜像。添加新存储,选择刚才的硬盘镜像,可以选择使用 SCSI 模式启动了。)
声卡
对于鲲鹏 920 的桌面用户来说,可以添加 USB 声卡,选择 “USB 主机设备”、“Realtek USB Audio”。物理机的音频输出改为显卡的 HDMI 音频,这样虚拟机和物理机就分别有自己的音频设备了。
远程桌面
不习惯使用英文界面的,可以自行安装一下中文语言包,这里不赘述了。在 Windows 中开启远程桌面访问后,通过 remmina 连接操作系统,使用体验更好一些。设置完名称、IP、用户名、密码…… 后,在 “高级” 标签页中,“画质” 选 “最好”。“声音” 可以选择 “本地 - 高质量”。
界面效果。