WSL2体验

Creative Commons
本作品采用知识共享署名

本文简介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中执行

    1
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  4. 手动更新WSL2 kernel内核.
    下载下面安装包后直接安装即可

    1
    https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
  5. 默认使用WSL2

    1
    wsl --set-default-version 2

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

发行版转换

使用下面命令检查发行版

1
wsl --list --verbose

如下表示发行版还在WSL下

1
2
  NAME            STATE           VERSION
* Ubuntu-18.04 Running 1

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

1
wsl --set-version Ubuntu-18.04 2

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

1
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

    1
    2
    wsl --shutdown
    wsl --set-default-version 1
  2. 转换发行版到WSL

    1
    wsl --set-version Ubuntu-18.04 1
  3. 关闭虚拟机平台
    可以不关闭,但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