在 Linux 主机上运行的 Windows 10 来宾 VM 中运行 WSL2
Posted
技术标签:
【中文标题】在 Linux 主机上运行的 Windows 10 来宾 VM 中运行 WSL2【英文标题】:Run WSL2 in Windows 10 guest VM running on a Linux host 【发布时间】:2020-09-28 03:48:54 【问题描述】:我有一个用于测试的 Windows 虚拟机来代替真正的 WIndows 机器。我想在该 VM 中启用 WSL2。
到目前为止,我已经:
将 Windows 升级到 v2004。 通过options kvm-intel nested=1
在 kvm-intel 内核模块中启用嵌套虚拟化
确保sudo cat /sys/module/kvm_intel/parameters/nested
输出“Y”。
在 virt-manager 的 xml 配置中设置 <cpu model='host-passthrough'>
。
仍然没有骰子。一旦我按照 WSL2 的要求启用“虚拟机平台”功能,我的虚拟机就会在启动时开始冻结。
有没有人成功做到这一点?
【问题讨论】:
嵌套虚拟机绝非易事。 :-) 这里的答案建议在 libvirt 域定义中禁用管理程序功能并在 bios 中启用 vt-d。 superuser.com/questions/1431148/… AMD Ryzen 3950X 也存在同样的问题。来自dmesg
:Feb 21 09:37:40 charon kernel: SVM: kvm [19184]: vcpu0, guest rIP: 0xfffff81758ef848d unimplemented wrmsr: 0xc0010115 data 0x0
对于 VCPU 0-9 重复相同的消息(即使 VM 总共有 16 个 vCPU)。
这成功了,与上面的链接相同,它有效:superuser.com/a/1589286/916009
【参考方案1】:
这里的答案 - 通过特定的标志,让 Windows 认为它是在金属上,但可以做嵌套的 virt,为我节省了一天:
https://superuser.com/a/1589286/916009 - 请注意此链接是由@JCallicoat 发布的 - 只是说它应该是答案
虚拟机emu中的cpu定义如下:
<cpu mode="custom" match="exact" check="partial">
<model fallback="allow">Skylake-Client-noTSX-IBRS</model>
<feature policy="disable" name="hypervisor"/>
<feature policy="require" name="vmx"/>
</cpu>
【讨论】:
虽然这个模型的一个缺点是 Windows 11 显然不能安装在它上面,所以我确实有 WSL2,但目前没有升级路径。如果有人知道更好的型号,请留言!以上是关于在 Linux 主机上运行的 Windows 10 来宾 VM 中运行 WSL2的主要内容,如果未能解决你的问题,请参考以下文章
无法将 Linux 机器作为 Slave 添加到在 Windows 机器上运行的 Jenkins 主机
我应该从 Windows 主机虚拟化哪个 Linux 发行版来运行 Eclipse?
访问 minikube 仪表板 - (Ubuntu20.04 服务器)VM 运行在带有 VirtualBox 6.1 的 Windows 10 主机上