WSL使用杂记

WSL安装注意

  1. Windows功能中确保Windows虚拟机监控程序平台适用于Linux的Windows子系统均开启,Hyper-V可开可不开。

  2. 运行bcdedit确保hypervisorlaunchtype设为auto

    1
    bcdedit /set hypervisorlaunchtype auto
  3. 建议将wsl默认版本设为2.

    1
    wsl --set-default-version 2

概念介绍

分发(distribution)

可以理解为docker里的容器。包括在Windows中储存的配置和在硬盘上储存的镜像文件。

WSL1和WSL2的区别[1]

WSL1和WSL2实现不同,理论上WSL2效率更高,同时WSL2的分发镜像是一个vhdx文件,而WSL1的分发镜像是rootfs目录下一堆散的文件。

WSL所用工具介绍

官方工具wsl
  • 支持WSL1和WSL2,但是缺乏部分实用功能;
  • 导入分发只支持.tar.tar.gz,不支持.tar.xz
第三方工具LxRunOffline[2]
  • 有导出WSL分发配置、迁移WSL分发镜像等实用功能
  • 对WSL2支持有限(截止到v3.5.0)

无脑操作流程

导出分发

  1. 使用wsl导出分发镜像

    1
    wsl --export Ubuntu-18.04 D:\export\Ubuntu-1804.tar

    LxRunOffline暂时不支持WSL2,因此不使用。

    注意wsl命令导出的分发镜像是未压缩的,LxRunOffline导出的分发镜像目录结构稍有不同,且使用tar压缩。

  2. 使用LxRunOffline导出分发配置

    屏幕输出配置可使用

    1
    LxRunOffline summary -n Ubuntu-18.04

    导出配置表可使用

    1
    LxRunOffline export-config -n Ubuntu-18.04 -f D:\export\Ubuntu-1804.xml

    注意这个配置表就拿来看看而已,导入给WSL2的分发会直接导致配置损坏!

重新部署分发

  1. 使用wsl导入分发镜像

    1
    wsl --import Ubuntu-18.04 D:\WSL-Ubuntu1804\ D:\export\Ubuntu-1804.tar --version 2

    wsl使用--version 2参数可以导入为WSL2的分发,LxRunOffline导入的必是WSL1的分发,因此需要使用WSL2时必定使用wsl

    经过测试wsl导入分发镜像只支持.tar.tar.gz,不支持.tar.xz

  2. 设置导入分发的配置

    由于LxRunOffline导入配置出现了分发直接挂掉的问题,因此.xml仅供存档参考,具体的设置使用LxRunOffline手动配置。

    • 设置默认账户(默认账户的uid一般是1000)

      1
      LxRunOffline set-uid -n Ubuntu-18.04 -v 1000
    • 其余设置

      查看LxRunOffline的帮助,直到LxRunOffline summary -n Ubuntu-18.04输入与D:\export\Ubuntu-1804.xml相同。

      WSL1和WSL2都能正常使用。

  3. 其他:

    直接复制ext4.vhd然后调用

    1
    LxRunOffline register -n Ubuntu-18.04 -d D:\WSL-Ubuntu1804\

    也许可以,并没有试过。

移动分发路径

wsl没有提供相应功能,因此只能使用LxRunOffline:

1
2
wsl --shutdown
LxRunOffline move -n Ubuntu-18.04 -d D:\newpath\WSL-Ubuntu1804\

WSL1和WSL2都可以正常使用。

WSL分发配置损坏的一种修复方法

  1. LxRunOffline注销分发

    1
    LxRunOffline unregister -n Ubuntu-18.04

    注意:

    1
    2
    3
    uninstall      Uninstall a distribution.
    ...
    unregister Unregister a distribution but not delete the installation directory.
  2. LxRunOffline重新注册分发

    1
    LxRunOffline register -n Ubuntu-18.04 -d D:\WSL-Ubuntu1804\
  3. 重新设定分发配置

参考

  1. 比较 WSL 1 和 WSL 2 | Microsoft Docs
  2. DDoSolitary/LxRunOffline - GitHub