本文简介WSL2的安装和使用体验.

去年为了安装WSL2,将windows10切换到内部体验版,最后发现WSL2没办法直接访问windows的分区,同时内部体验版各种不稳定,就又恢复为正式版。最近升级到2004可以正式安装WSL,于是又手痒升级到WSL2. 安装WSL请参考WSL体验

升级到WSL2 链接到标题

  1. Windows 10必须升级到version 2004, Build 19041 或更高.
  2. 确认BIOS已开启Hyper-V.
  3. Windows启用“虚拟机平台”可选组件,在powershell中执行
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. 手动更新WSL2 kernel内核. 下载下面安装包后直接安装即可
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
  1. 默认使用WSL2
wsl --set-default-version 2

之后如果安装新的发行版将会在WSL2下

发行版转换 链接到标题

使用下面命令检查发行版

wsl --list --verbose

如下表示发行版还在WSL下

  NAME            STATE           VERSION
* Ubuntu-18.04    Running         1

使用下面命令转换成WSL2的发行版

wsl --set-version Ubuntu-18.04 2

转换大约要几分钟,转换完再查看发行版,发现会变为

  NAME            STATE           VERSION
* Ubuntu-18.04    Running         2

WSL2下问题处理 链接到标题

新的 WSL2 架构会为 Linux 系统分配一个虚拟网卡,Linux 虚拟机与 Windows 组成了一个局域网,因此WSL2无法通过127.0.0.1访问主机代理,处理方式就是获取主机ip, 以该ip来访问主机。 主机代理软件要设置为支持局域网访问。 控制面板\系统和安全\Windows Defender 防火墙\允许的应用,允许主机代理软件通过防火墙。

使用感受 链接到标题

后文参考链接有WSL2和WSL的对比,WSL 2 使用虚拟化技术在轻量级实用工具虚拟机中运行 Linux 内核,是跑的完整的Linux内核,但访问windows的文件系统非常慢,会导致我在WSL2下编译zephyr速度比WSL慢4倍,鉴于WSL已经能满足我编译Zephyr的需求,因此切回为WSL。

  1. 默认使用WSL1
wsl --shutdown
wsl --set-default-version 1
  1. 转换发行版到WSL
wsl --set-version Ubuntu-18.04 1
  1. 关闭虚拟机平台 可以不关闭,但vmmem进程会在后台占用内存 在"控制面板\程序\程序和功能\启用或关闭Windows功能"中去掉勾选"虚拟机平台"

参考 链接到标题

https://docs.microsoft.com/en-us/windows/wsl/wsl2-index https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel https://docs.microsoft.com/zh-cn/windows/wsl/compare-versions#accessing-windows-networking-apps-from-linux-host-ip