WSL2

WSL2 安装

用 Power Shell 或者 CMD (管理员权限)运行以下命令(用于安装WSL和虚拟机组件):

1
2
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

然后重启,即可在Window商店中安装对于的Linux系统,这里选择的 Ubuntu 20.04,安装完成后第一次启动需要设置对应的用户名和密码。

下载对应的内核包,并安装。

切换成 WSL2:

1
2
3
4
5
6
# 查看现有 WSL 
wsl -l -v
# 切换版本为2
wsl --set-version Ubuntu-20.04 2
# 设置默认使用 WSL2
wsl --set-default-version 2

推荐使用 Windows Terminal 来打开 WSL,同样在 Windows 商店中打开即可。

Systemd

Ubuntu 可以使用 [ubuntu-wsl2-systemd-script] 来实现Systemd。该脚本已经不再维护了。使用 Genie。

首先需要安装 .NET 5.0:

1
2
wget https://packages.microsoft.com/config/ubuntu/20.10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

然后安装 Genie

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 先 sudo -s 再运行

# systemd-genie
apt install apt-transport-https

wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg

chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg

distro=$(cat /etc/os-release | grep VERSION_CODENAME |awk -F'=' '{ print $2}')

cat << EOF > /etc/apt/sources.list.d/wsl-transdebian.list
deb https://arkane-systems.github.io/wsl-transdebian/apt/ $distro main
deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ $distro main
EOF

apt update

# sudo apt-get -o Acquire::http::proxy=http://172.19.240.1:8889 install -y systemd-genie
sudo apt-get install -y systemd-genie

一些使用可以参考这个,但是安装方面有些问题。

1
2
3
4
5
6
# 启动 Genie
genie -i
# 启动 Genie 并打开shell
genie -s
# 执行命令
genie -c systemctl start sshd

使用 Windows 中的代理

WSL 2 本质上是一个跑在 hyper-v 上的虚拟机,所以要使用 Windows 上的代理,则需要将代理修改成“允许局域网连接”。

然后确定 Windows 的地址,可以通过/etc/resolve.confnameserver的值,可以在Windows 下用ifconfig找到。

由于Windows防火墙的原因,可能会连接不上,所以需要打开 控制面板 -> 系统和安全 -> Windows Defender 防火墙 -> 允许的应用 把代理软件允许通过专用网络。

Windows Terminal 的配置

相关参考: