怕刺 - wsl2
type: channel
link: https://pa.ci/tag/wsl2/
items: Windows 10开启WSL2 Linux子系统，并启用Systemd

Windows 10开启WSL2 Linux子系统，并启用Systemd
type: item
date: 2022-11-29T07:56:00+00:00
description: 开启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信息如下图：启用SystemdWSL2默认使用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将输出如下内容：