计算机 · 2021年12月29日 0

wsl2

wsl2的坑

  1. 没有systemd服务,导致很多依赖systemd的程序运行不了或者要手动管理其生命周期,比如ssh,docker,gitlab;
  2. 和virutualbox6.1(我的PC上装的是这个版本)有冲突,导致virtualbox的虚拟机老是崩溃;
    https://github.com/MicrosoftDocs/WSL/issues/798
  3. wsl2需要Hyper-V的支持,而Hyper-V只和Vmware workstation 16及以后的版本兼容。

玩转wsl2

官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/install

安装一个wsl2:

wsl --install

安装一个指定的发行版:

wsl --install -d <DistroName>

查看已经安装的wsl2:

wsl -l -v

查看支在线安装的wsl2发行版:

wsl --list --online

设置默认安装的发行版:

wsl -s <DistributionName>
;或者
wsl --set-default <DistributionName>

将安装的发型版从wsl1改为wsl2:

wsl --set-version <distro name> 2

从wsl2改为wsl1同理,

wsl --set-version <distro name> 1

安装linux发行版后需要设置用户名和密码,https://learn.microsoft.com/zh-cn/windows/wsl/setup/environment#set-up-your-linux-username-and-password

wsl2命令列表

https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands

注销或卸载 Linux 发行版:

wsl --unregister <DistributionName>

修改linux发行版安装位置

一个关键问题,wls2实例默认是安装在C盘的,但是鉴于C盘的空间很宝贵,所以要更改安装的wsl2实例的位置。https://superuser.com/questions/1714345/change-of-wsl-installation-location

关键命令:

mkdir D:\WSL\images # For example
mkdir D:\WSL\instances\<newDistroName>
cd D:\WSL

wsl -l -v # Verify distro name to export
wsl --export <distroname> .\images\<distroname>.tar
wsl --import <newDistroName> .\instances\<newDistroName> .\images\<distroname>.tar
wsl --set-default <newDistroName>

上面更改安装Linux发行版安装位置的方式是先导出镜像(image)再导入到指定位置。

这个方法的问题是我导入image后,wsl默认进入导入发行版的用户名变成了root而不是原来设置的用户名。

另一种方式是找到直接用wsl命令安装的ext4.vhdx文件,然后把这个文件拷贝到要安装的位置,再in-place安装:

wsl --import-in-place <Distribution Name> <FileName>

见这个页面就地导入发行版一节:https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands

用指定用户名进入linux发行版

wsl -u <username>