QEMU with WHPX
开着 Hyper-V 还能用的虚拟化需要由 WHPX 实现, qemu 2.12 加入了 whpx 支持. WHPX=Windows Hypervisor Platform accelerator. Windows 10 / Server 1803 有集成. Dism /Online /Enable-Feature:HypervisorPlatform (需要重启)
--- 2019.2 https://qemu.weilnetz.de/w64/ 已经添加 whpx 支持.
编译方法基本如 https://wiki.qemu.org/Hosts/W32 所说. 准备 MSYS2 MinGW 64bit 环境. 装上 x86_64-w64-mingw32- 开头的各种东西. gtk 要装 gtk3, sdl 装 SDL2. (梯子? export http_proxy=blahblah)
从 Android 工具链里去拿 winhvapi 的 header 备用, 放到 /mingw64 对应位置. 自己搞的话就要从 Visual Studio 2017 把 Windows 10 17134 SDK 下载回来再慢慢翻了. git clone --depth 1 https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8 具体文件是 x86_64-w64-mingw32/include/WinHv*.h x86_64-w64-mingw32/lib/libWinHv*.a
---
qemu 的代码用 git clone 抓回来然后更新 submodule 是最方便的. 如果下载的是 releases 里的 zip, 需要自己准备 submodule 目录对应位置的内容, 比如 dtc. (git clone --depth 1 https://github.com/qemu/dtc)
错误信息大致是这样的 ERROR: DTC (libfdt) version >= 1.4.2 not present. Please install the DTC (libfdt) devel package
其次 ui/keycodemapdb 也是 submodule. 错误信息 ui/input-keymap.c:8:10: fatal error: ui/input-keymap-atset1-to-qcode.c: No such file or directory 解法是 cd ui; git clone --depth 1 https://gitlab.com/keycodemap/keycodemapdb
configure 的写法如下: ./configure --cross-prefix=x86_64-w64-mingw32- --enable-gtk --enable-sdl \ --enable-whpx --python=python3 --target-list=x86_64-softmmu
解释起来的话就是不 cross-compile 是不行的, static build 也不行. python 要给一个. 编译路上可能会缺少 ar/nm/objcopy/windres, 可以 cp 或者 ln /mingw64/bin 下对应的文件, 给它们各自一个长名. (x86_64-w64-mingw32-ar, x86_64-w64-mingw32-nm, x86_64-w64-mingw32-objcopy, x86_64-w64-mingw32-windres) 补充: --disable-capstone 可能有效. 未测试.
编译出来大概是这样玩的 qemu-system-x86_64.exe -accel whpx -M q35 -m 1024 -drive file=CorePure64-9.0.iso,media=cdrom -net user -net nic 会显示 Windows Hypervisor Platform accelerator is operational 非常不幸的是因为太新所以还有巨坑. 具体推广至少等三个月再说? 但是如果真想玩的话, 把 -kernel -initrd -append (cmdline) 抽出来 (cmdline 里要写 nomodeset console=ttyS0, 走 serial, 不要走图形), 让 qemu 直接载入 linux kernel 成功率会高很多 (和 bootloader 配合度欠佳).
热门话题 · · · · · · ( 去话题广场 )
- 我的“随地大小躺”生活 6064次浏览
- 阅读才是最艰巨的行动 2158次浏览
- 假如可以提前退休,你会做哪些准备? 51.0万次浏览
- “对自己差点吧!”摆脱消费主义陷阱从我做起 新话题 · 228次浏览
- 下班后重新感受生活 新话题
- “破烂”也能开出花 新话题