windows默认拥有WSL1
PS C:\Users\supermao> wsl --list --verbose NAME STATE VERSION * kali-linux Stopped 1 PS C:\Users\supermao> kali ┏━(Message from Kali developers) ┃ ┃ This is a minimal installation of Kali Linux, you likely ┃ want to install supplementary tools. Learn how: ┃ ⇒ https://www.kali.org/docs/troubleshooting/common-minimum-setup/ ┃ ┗━(Run: “touch ~/.hushlogin” to hide this message) ┌──(supermao㉿DESKTOP-TILPHEL)-[~] └─$
我在microsoft store里下载了kali,默认是wsl1。kali只是我的子系统,使用desktop无需专门下载kali,只需要安装wsl2
使用管理员身份打开powershell命令行
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
这个命令设置了将来新安装的WSL发行版的默认版本为WSL 2
WSL2依赖于hyperv
WSL2它实际上运行在一个轻量级的Hyper-V虚拟机中,并使用了一个真正的Linux内核。这使得WSL2能够提供与Linux更接近的性能和兼容性。
在docker-desktop里选择WSL2 based engine
前提基于hyperv已经开启
管理员 打开 powershell
PS C:\Windows\system32> bcdedit /set hypervisorlaunchtype auto
条命令打开hyperv 去兼容 wsl2 执行后重启
如果关闭了hpyerv wsl2将无法启动
C:\Users\supermao>wsl 当前计算机配置不支持 WSL2。 请启用“虚拟机平台”可选组件,并确保在 BIOS 中启用了虚拟化。 有关信息,请访问https://aka.ms/enablevirtualization Error code: Wsl/Service/CreateInstance/CreateVm/0x80370102
关闭hyperv对于wmware是有利的
能够使用intel vt-x/ept 开启后可以使用wmware的虚拟机嵌套
开启hyperv2 wmware将无法使用intel vt-x/ept
开启hyperv对于wmware是负优化,降低性能的同时,无法实现kvm等虚拟机嵌套
侧通道缓解。侧通道缓解可增强安全性,但也会降低性能。这一条wmware虚拟机的开机信息与hyperv的开启也有关
hyper-v和vmware的vt-x是有冲突的
管理员打开powershell
PS C:\Windows\system32> bcdedit /set hypervisorlaunchtype off
操作成功完成。执行后重启
可以正常使用wmware虚拟机嵌套,但是无法打开docker desktop以及wsl2
至少降级wsl2为wsl1,可以在使用 vt-x/ept的同时使用kali
关闭hyperv后无法对kali进行wsl1的转换
PS C:\Windows\system32> wsl --set-version kali-linux 1 正在进行转换,这可能需要几分钟时间。 当前计算机配置不支持 WSL2。 请启用“虚拟机平台”可选组件,并确保在 BIOS 中启用了虚拟化。 有关信息,请访问https://aka.ms/enablevirtualization Error code: Wsl/Service/CreateVm/0x80370102 PS C:\Windows\system32>
无法对kali进行wsl1的转换
先开启hyperv
PS C:\Windows\system32> bcdedit /set hypervisorlaunchtype auto
操作成功完成 执行后重启
管理员执行powershell
PS C:\Windows\system32> wsl --set-version kali-linux 1 正在进行转换,这可能需要几分钟时间。 操作成功完成。 PS C:\Windows\system32> wsl --set-default-version 1 操作成功完成。 PS C:\Windows\system32>
进入cmd进行查看
C:\Users\supermao>wsl --list --verbose NAME STATE VERSION * kali-linux Running 1 docker-desktop Stopped 2 docker-desktop-data Stopped 2
PS C:\Windows\system32> bcdedit /set hypervisorlaunchtype off
操作成功完成 执行后重启