type
status
slug
summary
tags
category
icon
password
new update day
Property
Oct 22, 2023 01:31 PM
created days
Last edited time
Oct 22, 2023 01:31 PM
WSL(Windows Subsystem for Linux)是 Windows 10 中的一个强大功能,它可以让你在 Windows 上轻松地运行 Linux 发行版,无需安装虚拟机或双系统。WSL 可以让你享受 Linux 的各种优势,比如丰富的开发环境、强大的命令行工具、方便的软件包管理等。
然而,WSL 也有一些局限性,其中之一就是不支持 systemd(Linux 中的服务管理系统)。systemd 是 Linux 系统中负责管理各种服务(如网络、数据库、容器等)的启动、停止、重启等操作的工具。很多 Linux 发行版都使用 systemd 作为默认的 init 系统(即系统启动时运行的第一个程序),而且很多软件包也依赖于 systemd 提供的功能。因此,如果在 WSL 中使用 systemctl 命令(systemd 的主要命令行接口),会报错如下:
这意味着 WSL 并没有通过 systemd 启动,所以无法执行该操作。那么,有没有办法在 WSL 中使用 systemd 呢?答案是有的,但需要一些额外的步骤。本文将介绍两种方法,一种是安装一个新的发行版,另一种是让当前的发行版运行 systemd。
方法一:安装一个新的发行版
这种方法需要使用一个名为 Distrod 的工具,它是一个基于 systemd 的 WSL2 元发行版,它可以让你在一分钟内安装 Ubuntu,Arch Linux,Gentoo 等带有 systemd 的发行版,或者使你当前的发行版以 systemd 运行。Distrod 还提供了自动启动和端口转发等功能。
要使用这种方法,请按照以下步骤操作:
- 请确保你已经启用了 WSL,并且设置了默认版本为 2。你可以在 PowerShell 中运行以下命令来检查和设置:
如果你还没有启用 WSL,请参考 Microsoft 官方文档 来安装和配置。
- 下载并解压缩 Distrod 的最新版本,然后双击 exe 文件。
- 按照向导安装新的发行版。你可以选择你喜欢的发行版和用户名等选项。
- [可选] 如果你想让发行版在 Windows 启动时自动启动,请在 WSL 中运行以下命令:
安装完成后,你就可以在 WSL 中使用 systemctl 命令了。
方法二:让当前的发行版运行 systemd
这种方法不需要安装新的发行版,而是通过 Distrod 来修改你当前的发行版,使其支持 systemd。要使用这种方法,请按照以下步骤操作:
- 下载并运行 Distrod 的最新安装脚本,并赋予执行权限:
- 以 root 权限运行安装脚本,并选择 install 选项:
- 在发行版中启用 Distrod。你有两种选择:
- 如果你想让发行版在 Windows 启动时自动启动,请运行以下命令:
- 否则,运行以下命令:
- 重新启动发行版。关闭 WSL 的终端,然后在 PowerShell 中运行以下命令:
其中
<distro-name>
是你的发行版的名称,比如 Ubuntu。重新打开 WSL 的终端,你就可以在 systemd 会话中运行 shell 了。
- 作者:tangcuyu
- 链接:https://expoli.tech/articles/2023/05/09/A-guide-to-using-systemd-in-WSL
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。