Windows10自带的WSL是不支持systemd,也就是不能使用systemctl来控制服务,但是随着微软的升级,目前WSL通过设置已经可以支持systemd,给使用systemd的同学们带来了极大的便利。下面是设置的步骤,并在Ubuntu 20.04.3 LTS中验证通过。
1. WSL需要是从Microsoft Store下载安装的版本,而不是Windows自带的WSL
在命令行执行:
C:\>wsl --version
如果结果没有显示如下的输出,而是提示参数使用错误的信息,那使用的WSL是Windows自带的版本,不是可用的版本,需要替换
WSL 版本: 1.0.3.0
内核版本: 5.15.79.1
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.2486
根据微软官方信息,WSL要求版本为0.67.6或更高版本
2. 安装正确的WSL
打开Windows Store, 搜索WSL,搜索到后,点击“获取”安装。安装完成后,Windows自带的WSL会被替换。基于本人的经验,原有WSL中安装的程序与数据都在。安装完成后可以通过运行步骤1中的命令来验证。
3. 配置使用systemd
最新版的WSL默认也是不使用systemd的,可以通过下面的步骤配置使用
- 启动WSL。
- 在WSL中打开终端,使用sudo vi /etc/wsl.conf编辑(或使用其他熟悉的文本编辑命令)并添加如下内容:
[boot]
systemd=true
如果/etc/wsl.conf文件不存在,创建并保存
- 退出WSL,并在Windows10命令行执行:wsl --shutdown关闭WSL,重启WSL后,在WSL中通过
$sudo systemctl status
命令就能进行验证。
参考:Systemd support is now available in WSL! - Windows Command Line (microsoft.com)