我的windows11安装了wsl,debian,想要启用systemd,找了半天解决方案,在国外的大佬文章里找到了解决方案,记录一下
原文链接:WSL 2 - Enabling systemd (github.com)
稍微翻译一下内容如下:
此教程用于在wsl中启用systemd,目前测试的系统为Windows10 wsl2,Windows11 wsl2
想要在wsl中启用systemd需要一个叫做systemd-genie的软件
将install-sg.sh的内容拷贝到 /tmp/install-sg.sh当中保存
(如果可以访问github的话,直接执行下面的脚本就行,访问不了可以拷贝我最后面的代码部分,新建 /tmp/install-sg.sh ,将代码粘贴进去即可,效果一样的):
cd /tmp
wget --content-disposition \
"https://gist.githubusercontent.com/djfdyuruiry/6720faa3f9fc59bfdf6284ee1f41f950/raw/952347f805045ba0e6ef7868b18f4a9a8dd2e47a/install-sg.sh"
给脚本可执行权限:
chmod +x /tmp/install-sg.sh
运行这个脚本,并且清理掉这个脚本:
/tmp/install-sg.sh && rm /tmp/install-sg.sh
退出wsl终端并且关闭wsl,启动能够使用systemd的wsl:(这两行代码要在powershell里面执行,目前来看似乎每次重启完windows之后都要再执行以下这两个命令才能正常使用systemctl)
wsl --shutdown
wsl genie -s
验证systemctl是否可用:
sudo systemctl status time-sync.target
再wsl中执行如上脚本,类似下图说明systemctl已经可以正常使用了,这样配置完每次重启都要重新执行一下上面的powershell命令才能启用systemd,我又写了一个开机自动后台执行脚本的文章,有兴趣可以点击看看

install-sg.sh脚本我也拷贝出来了,有需要可以自取
#! /usr/bin/env bash
set -e
# change these if you want
UBUNTU_VERSION="20.04"
GENIE_VERSION="1.44"
GENIE_FILE="systemd-genie_${GENIE_VERSION}_amd64"
GENIE_FILE_PATH="/tmp/${GENIE_FILE}.deb"
GENIE_DIR_PATH="/tmp/${GENIE_FILE}"
function installDebPackage() {
# install repackaged systemd-genie
sudo dpkg -i "${GENIE_FILE_PATH}"
rm -rf "${GENIE_FILE_PATH}"
}
function downloadDebPackage() {
rm -f "${GENIE_FILE_PATH}"
pushd /tmp
wget --content-disposition \
"https://github.com/arkane-systems/genie/releases/download/v${GENIE_VERSION}/systemd-genie_${GENIE_VERSION}_amd64.deb"
popd
}
function installDependencies() {
sudo apt-get update
wget --content-disposition \
"https://packages.microsoft.com/config/ubuntu/${UBUNTU_VERSION}/packages-microsoft-prod.deb"
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install -y \
daemonize \
dotnet-runtime-5.0 \
systemd-container
sudo rm -f /usr/sbin/daemonize
sudo ln -s /usr/bin/daemonize /usr/sbin/daemonize
}
function main() {
installDependencies
downloadDebPackage
installDebPackage
}
main