发生起因
今天晚上尝试给WSL安装Gnome,但是Gnome的前置是Systemd。我用Github上某个大佬的脚本尝试启用Systemd,报错,我脑子一热给脚本加上了--force
来强制执行,显示成功了,按照教程所说,需要重启WSL,于是我兴高采烈输完wsl -shutdown
后再输入wsl
,发现它报错nsenter: cannot open /proc/25/ns/time: No such file or directory
:
后来我在网上找了好久的教程,终于找到了一个解决方法。
修正办法
按下Win+X,选择Powershell管理员,然后输入wsl -e bash --norc -m -p
后回车,如下图:
你可以理解成这是WSL的救援模式。接下来继续输入sudo vi /usr/sbin/enter-systemd-namespace
回车,我们只看最下面那一段:
USER_HOME="$(getent passwd | awk -F: '$1=="'"$SUDO_USER"'" {print $6}')"
if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then
if [ -n "$1" ] && [ "$1" != "bash --login" ] && [ "$1" != "/bin/bash --login" ]; then
exec /usr/bin/nsenter -t "$SYSTEMD_PID" -a \
/usr/bin/sudo -H -u "$SUDO_USER" \
/bin/bash -c 'set -a; [ -f "$HOME/.systemd-env" ] && source "$HOME/.systemd-env"; set +a; exec bash -c '"$(printf "%q" "$@")"
else
exec /usr/bin/nsenter -t "$SYSTEMD_PID" -a \
/bin/login -p -f "$SUDO_USER" \
$([ -f "$USER_HOME/.systemd-env" ] && /bin/cat "$USER_HOME/.systemd-env" | xargs printf ' %q')
fi
echo "Existential crisis"
exit 1
fi
把这段代码中的-a
改成-m -p
即可:
如果不会用vi也可以换成nano,主要是我不会用nano
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END