纯记录安装步骤,供研究使用,日常工作建议使用VmWare VirtualBox HyperV等

qemu版本

λ qemu-system-x86_64 -version
QEMU emulator version 6.2.0 (v6.2.0-11889-g5b72bf03f5-dirty)
Copyright © 2003-2021 Fabrice Bellard and the QEMU Project developers
1
2
3
1 下载windows 10安装 ISO文件 Win10_1909_English_x64.iso

2 下载Qemu中设备的virtio驱动,可以用于加速设备的模拟,提升虚拟机运行速度
到下面的网址找一个最新版本下载,我用的是virtio-win-0.1.215.iso

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.215-2/virtio-win-0.1.215.iso
1
2
3 创建磁盘

qemu-img create -f qcow2 hdd.img 40G
1
4 启动虚拟机进行安装

这里使用了 whpx 加速,适合安装并启用了hyper-v的机器,也可以使用intel的haxm来加速,下载地址 https://github.com/intel/haxm,haxm与hyper-v不兼容,启用了hyper-v就不能使用haxm了,根据机器选一个

qemu-system-x86_64.exe -accel whpx -machine q35 -smp sockets=1,cores=1,threads=2 -m 2048 -usb -device usb-kbd -device usb-tablet -rtc base=localtime -net nic,model=virtio -drive file=1909.img,media=disk,if=virtio -drive file=Win10_1909_English_x64.iso,media=cdrom -drive file=virtio-win-0.1.215.iso,media=cdrom
1
qemu中无法直接得知whpx是否正常启用,不过如果看到qemu输出包含这一行,一般whpx就正常启用了,还可以是应用process explorer等工具查看 WinHvPlatform.dll是否正常加载

Windows Hypervisor Platform accelerator is operational
1
当然,就算正常加载了,后面还可以报错,甚至影响功能,比如后面的savevm命令就不能使用
有时候可能会看到这一行(whpx貌似已经正常进行加速了,目前不知这个报错会影响哪些)

(qemu) whpx: injection failed, MSI (0, 0) delivery: 0, dest_mode: 0, trigger mode: 0, vector: 0, lost (c0350005)
1
这时候可以加一个参数kernel-irqchip=off来去除这个报错(当然也不能解决savevm无法使用的问题)

qemu-system-x86_64 -accel whpx,kernel-irqchip=off -machine …
1
5 然后就是正常的windows安装步骤,值得注意的是下面一步,如果到了分区那一步找不到磁盘,需要点击下面的 Load Driver,找到下载的iso里的 viostor 目录里 w10\amd64 子目录里查找并安装驱动,然后就可以了正常分区

6 安装完windows之后,需要安装网卡驱动才能上网,打开设备管理器,点击update driver,选择驱动盘,会自动找到驱动并安装

7 继续安装驱动盘里的驱动,一个是 qemu-ga-x86_64.msi,一个是qemu guest agent,virtio-win-guest-tools.exe

8 安装spice webdavd,以便进行文件传输,暂时省略
可以参考
https://www.guyrutenberg.com/2018/10/25/sharing-a-folder-a-windows-guest-under-virt-manager/
https://askubuntu.com/questions/899916/how-to-share-folder-with-windows-10-guest-using-virt-manager-kvm

9 建立内存快照,以便将一些更改操作放在快照里,后面可以方便切换或者迅速恢复设置

9.1 关闭虚拟机
9.2 建立快照磁盘

$ qemu-img create -b hdd.img -F qcow2 -f qcow2 snapshot.img
1
9.3 启动虚拟机

qemu-system-x86_64 -accel whpx -machine q35 -smp sockets=1,cores=1,threads=2 -m 2048 -usb -device usb-kbd -device usb-tablet -rtc base=localtime -net nic,model=virtio -drive file=snapshot.img,media=disk,if=virtio -monitor stdio
1
9.4 进行一些设置或者操作
9.5 在monitor窗口或者stdio中保存快照 ,然后退出
注意/待解决:可能由于whpx的bug,导致无法保存快照,如果是kvm hax tcg可能不存在这个问题

(qemu)savevm windows
(qemu)quit
1
2
10 从快照中启动虚拟机

qemu-system-x86_64 -accel whpx -machine q35 -smp sockets=1,cores=1,threads=2 -m 2048 -usb -device usb-kbd -device usb-tablet -rtc base=localtime -net nic,model=virtio file=snapshot.img,media=disk,if=virtio -loadvm windows
1
11 可以将上面的操作结果放到docker里

$ mv hdd.img snapshot.img image
$ cd image
$ docker build -t windows/test .
1
2
3
refer
1 https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers
2 https://github.com/aerokube/windows-images
3 https://www.qemu.org/docs/master/system/invocation.html?highlight=kernel-irqchip
4 https://www.digitalfoundations.com.au/blog/qemu-5-on-windows-host-with-whpx/
5 https://qemu-project.gitlab.io/qemu/system/monitor.html
6 https://github.com/qemu/qemu/blob/master/docs/system/images.rst

福利
xemu是一款基于qemu的xbox模拟器,可以玩xbox优秀,https://xemu.app

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐