Windows 10开启WSL2 Linux子系统,并启用Systemd
开启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信息如下图:
启用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問題 感謝