kotoyuuko

CORE

昨日より、明日より、笑える今が一番大好き。
github
telegram
email

在 WSL 上使用 systemd

前言#

巨硬搞的 WSL 非常好用,然鹅,因为他们用了自定义的 init 启动,使用 systemd 会报下面的错误:

System has not been booted with systemd as init system (PID 1). Can’t operate.

通过 genie 使用 systemd#

genie 通过创建一个 pid 空间来实现在 WSL 上使用 systemd。

genie 基于 .NET Core 3 构建,使用前需要先安装 .NET Core 运行环境,安装方法参考微软的官方文档

然后安装 genie 即可:

curl -s https://packagecloud.io/install/repositories/arkane-systems/wsl-translinux/script.deb.sh | sudo bash
sudo apt install systemd-genie

genie 的使用方法比较简单:

# 启动 systemd 环境
genie -i
# 启动 systemd 环境,并在环境中打开 shell
genie -s
# 启动 systemd 环境,并在环境中运行命令
genie -c command

开机启动#

只做上面的配置,还无法完成开机自启 enabled services,需要继续配置启动项。

首先进入 WSL 环境,创建 /etc/init.wsl 文件,内容如下:

#!/bin/bash
/usr/bin/genie -i

然后回到 Windows,Win + R 组合键打开运行,输入 shell:startup 进入启动目录。

创建一个 vbs 文件,名称随意,内容如下:

Set ws = CreateObject("Wscript.Shell")
ws.run "wsl -d Debian -u root /etc/init.wsl", vbhide

注:参数中的 Debian 需要改成你自己使用的 WSL 发行版名称。

参考#

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。