环境
操作系统:Ubuntu Kylin 优麒麟 20.10
适用架构:ARM64(鲲鹏 920 x8、飞腾 FT-2000/4)、AMD64(海光、兆芯)
下载 ISO
下载预览通道的版本
https://uupdump.ml/fetchupd.php?arch=arm64&ring=wif&build=latest
加压缩文件后,进入目录。
给 sh 文件添加执行权限。
chmod +x uup_download_linux.sh
安装 2 个依赖软件包。
sudo apt install aria2 wimtools
执行下载和打包。
./uup_download_linux.sh
大约需要下载 4.5G 左右。
获得 ISO
我不知道有任何微软页面允许您下载 ARM64 ISO,所以这部分依赖于社区制作的解决方案。
在 MDL 论坛上,我找到了正确的 ESD 下载链接,并使用 ESD>ISO 转换脚本(也在那里找到)获得了一个可引导的 ISO。
或者,adguard 的下载页面提供了类似的脚本,可以为您下载和打包一个 ISO。
还有一点很重要:
我没有成功启动 2004 或 20H2 版本(具体来说:19041.388 / 19041.423),所以我转而使用 1909 版本(18363.592)。
(更新2020-12-13:我又试过这个了,18363.592 好像真的是最后一个开机的版本。18363.1139 或者 19042.631 也没开机。)
安装
在我们开始之前,我们还需要:
2、适当大小的磁盘映像(qemu-img create -f qcow2 disk.qcow2 40G)
3、从 edk2.git-aarch64 RPM 中提取 QEMU_EFI.fd,www.kraxel.org/repos/jenkins/edk2/
qemu命令行如下所示:
isoname=18363.592.200109-2016.19H2_RELEASE_SVC_REFRESH_CLIENTBUSINESS_VOL_A64FRE_DE-DE.ISO virtio=~/Downloads/virtio-win-0.1.185.iso qemu-system-aarch64 -M virt -cpu cortex-a53 -smp 4 -m 4096 \ -device qemu-xhci -device usb-kbd -device usb-tablet \ -drive file=disk.qcow2,if=virtio \ -nic user,model=virtio \ -drive file="$isoname",media=cdrom,if=none,id=cdrom -device usb-storage,drive=cdrom \ -drive file="$virtio",media=cdrom,if=none,id=drivers -device usb-storage,drive=drivers \ -bios QEMU_EFI.fd -device ramfb
然后,您可以像往常一样遵循安装过程。在对磁盘进行分区之前,安装程序会要求您加载磁盘驱动程序,这些驱动程序可以在 virtio cdrom 上的viostor/w10/arm64/ 中找到。
QEMU视频输出
上面的命令行已经考虑到了这些限制,这些部分仅用于解释。
QEMU 中运行 Windows 10 ARM 的前一篇博客文章使用了一个修补的 EDK2 来重新获得对标准 VGA 的支持。让人困惑的是,如果这个补丁可以正常使用,为什么 EDK2 取消了支持,但这不是我想用的解决方案。
原来ARM上的选项仅限于 virtio gpu 和 ramfb。Virtio显卡是Linux专用的,所以留下了ramfb。
用 Qemu 连接磁盘
由于 virt 机器没有 SATA 控制器,我们无法以通常的方式将硬盘连接到虚拟机,我在这里转而使用 virtio。通过 usb 存储可以做到这一点,这是开箱即用的,可以节省我们所有的 virtio 驱动程序工作(除了网络)。
这也意味着另外一件事(浪费了我相当多的时间):你不能使用 cdrom。
如果您这样做,EDK2 将引导 Windows 光盘很好,但安装程序会要求您尽早加载驱动程序(因为它找不到自己的光盘)。没有一个 virtio 驱动程序可以解决这种情况,让你无法明确指出哪里出了问题。
安装后
入职过程有一些小问题(特别是设备检测),如果你再试几次,它还是会让你继续。
高中央处理器使用率
第一次启动后,我注意到两个 100% CPU 的 regsvr32.exe 进程似乎没有在合理的时间内完成。
使用进程浏览器的进一步调查显示这些属于窗口的打印服务。由于我无论如何都不想在此虚拟机中打印,因此可以停止并禁用受影响的服务:
sc stop "Spooler" sc config "Spooler" start= disabled
联网
然后可以从设备管理器(NetKVM/w10/ARM64/在cdrom上)安装正确的驱动程序。
常规性能调整
这些并不特定于 Windows 10 ARM 或虚拟机,但对于防止虚拟机运行缓慢非常有用。
REM Disable Windows Search Indexing sc stop "WSearch" sc config "WSearch" start= disabled REM Disable Automatic Defragmentation schtasks /Delete /TN "\Microsoft\Windows\Defrag\ScheduledDefrag" /F REM Disable Pagefile wmic computersystem set AutomaticManagedPagefile=FALSE wmic pagefileset delete REM Disable Hibernation powercfg -h off
更高的显示分辨率
结语
稍加准备,就有可能在虚拟机中运行Windows 10 ARM。虽然仿真速度很慢,但是你可以用它来测试一两个程序。
如果您有足够规格和 KVM 支持的 ARM64 硬件,-enable-kvm -cpu host 标志可以让您获得本机执行速度,尽管我还没有机会看到这是如何执行的。
参考文献
Running Windows 10 for ARM64 in a QEMU virtual machine,
https://kitsunemimi.pw/notes/posts/running-windows-10-for-arm64-in-a-qemu-virtual-machine.html
来源:oschina
链接:https://my.oschina.net/chipo/blog/4816548