WSL2 开启KVM
这两天一直在断断续续搞这个, 直到今天终于成功了。
前言
由于使用了WSL2开启了Hyper-V, VMware无法使用嵌套虚拟化, 因此就想在wsl2上使用qemu, 这里搞了很久……
环境
Windows版本: Windows10 20161
WSL内核版本: 4.19.121-microsoft-standard
WSL版本: Ubuntu18.04
开启kvm
按照这篇文件就可以了Accelerated KVM guests on WSL 2, 但是要注意的是你按照文章中进行后, 可能会出现以下几个问题:
运行kvm-ok: Your cpu does not support kvm extensions, 这个是windows10 1909的问题, 需要升级windows10的版本, 选择预览版计划就可以了。
无法自动挂载, dmesg显示: ERROR: UtilCreateProcessAndWait:655: /bin/mount failed with status 0x2000 after upgrading to build 20161: 这个是由于最新的wsl内核版本更新以后没有更新配置文件
Microsoft/config-wsl
(参照这个issue, 开发背锅!), 因此不能使用Microsoft/config-wsl
, 可以直接使用来自这个回答的配置文件无法正常启动, 错误代码4294967295 :端口被占了, 可能你开启了vpn, 参照这个回答, 使用下面的代码kill占用的程序就可以了, 运行在powershell下
$processes = Get-Process -Id (Get-NetUDPEndpoint -LocalPort 53).OwningProcess | Select-Object -ExpandProperty Id
ForEach ($process in $processes) {
Stop-Process -ID $process -Force
}如果你用的是 Clash 则可以修改 General YAML, 将端口改大防止占用(
mixed-por
和external-controller
), 配置如下:mixed-port: 27890
allow-lan: false
log-level: info
external-controller: '127.0.0.1:29091'
secret: ''
ipv6: false
# Will be ignored after profile selection
proxies:
- name: Debug
type: socks5
server: 127.0.0.1
port: 1080
proxy-groups:
- name: Proxy
type: select
proxies:
- Debug
rules:
- 'MATCH,DIRECT'