解决WSL nsenter: cannot open ...

发生起因

今天晚上尝试给WSL安装Gnome,但是Gnome的前置是Systemd。我用Github上某个大佬的脚本尝试启用Systemd,报错,我脑子一热给脚本加上了--force来强制执行,显示成功了,按照教程所说,需要重启WSL,于是我兴高采烈输完wsl -shutdown后再输入wsl,发现它报错nsenter: cannot open /proc/25/ns/time: No such file or directory

3c1ae36d98bfcdb161d287bb4a01f829

后来我在网上找了好久的教程,终于找到了一个解决方法。

修正办法

按下Win+X,选择Powershell管理员,然后输入wsl -e bash --norc -m -p后回车,如下图:

69367603f144c5698b8d36c87996a880

你可以理解成这是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即可:

8dec3a04909d417e6f1d84f8d400ed21

如果不会用vi也可以换成nano,主要是我不会用nano

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享