开启WSL2

虽然WSL已经更新到了第2版,但是目前win10默认的还是第1个版本,即Windows上的Linux应用而不是类似于虚拟机的独立系统。
开启WSL2的步骤如下,需使用管理员权限打开powershell执行命令:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

执行完成后,会询问是否重启,这里选择Y进行重启。重启后再次使用管理员权限打开powershell执行命令:

wsl --set-default-version 2

此时通过Microsoft store安装的Linux系统就是WSL2版本了,但是由于WSL2是独立内核,所以还需要执行以下命令更新内核,否则会出现WslRegisterDistribution failed with error: 0x800701bc错误:

wsl --update
wsl --shutdown

至此,Linux子系统就是拥有独立内核的WSL2版本了,以Debian为例,neofetch信息如下图:
neofetch.jpg

启用Systemd

WSL2默认使用init启动Linux系统的,但是目前绝大多数发行版都是用的systemd的。这导致很多服务都没法使用,比如在Debian/Ubuntu上的nginx和php-fpm等常用软件。所幸微软最近更新了这个功能,现在可以手动启用。
首先在powershell中执行wsl --version命令,确认wsl版本是大于0.67.6的。Win10 22H2进行过wsl --update之后,应该是1.0.0.0版本,如下:

WSL 版本: 1.0.0.0
内核版本: 5.15.74.2
WSLg 版本: 1.0.47
MSRDC 版本: 1.2.3575
Direct3D 版本: 1.606.4
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows版本: 10.0.19045.2311

随后,在现有的Linux子系统内,在/etc/wsl.conf文件内添加以下内容(如果没有就新建一个):

[boot]
systemd=true

修改完成后,在powerhell中执行wsl.exe --shutdown以关闭linux子系统,随后再打开Linux子系统就会发现已经启用了systemd,使用systemctl list-unit-files --type=service将输出如下内容:
systemd.jpg

标签: windows, wsl2

仅有一条评论

  1. lin lin

    解決了啟用Systemd問題 感謝

添加新评论