背景
- windows11 上面的 wsl2 环境
- systemctl 命令执行不了
- 详细报错如下:
root@FENG:/mnt/c/Users/FENG# systemctl System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down
解决方案
- 通过 apt 获取软件安装包 daemonize 和 fontconfig
sudo apt install -y daemonize fontconfig
- 编辑
/etc/profile
文件
通过vim命令在/etc/profile
文件中加入如下内容
SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}') if [ -z "$SYSTEMD_PID" ]; then sudo /usr/bin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}') fi if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then exec sudo /usr/bin/nsenter -t $SYSTEMD_PID -a su - $LOGNAME fi
- 编辑
/etc/sudoers
文件
通过vim命令在/etc/sudoers
文件最后加入如下内容:
%sudo ALL=(ALL) NOPASSWD: /usr/sbin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target %sudo ALL=(ALL) NOPASSWD: /usr/bin/nsenter -t [0-9]* -a su - [a-zA-Z0-9]*
- 再次执行 systemctl 命令即可发现不会报错了