我关注这些步骤在我的 WSL2 Ubuntu 20.04 发行版中设置 SystemD,但在重新启动之前没有像我应该做的那样进行验证。现在,当我尝试启动时(以我的普通用户或身份root
),它挂起并显示:
/usr/sbin/enter-systemd-namespace:第 10 行:/usr/sbin/daemonize:没有此文件或目录
我如何才能还原/etc/bash.bashrc
更改以恢复?我尝试\\wsl$\\<distro>\...
使用记事本通过 Windows 中的路径进行编辑,但没有权限(即使以管理员身份运行)。
答案1
我看到你已经恢复了,这是一个很好的解决方案。将来,还要考虑:
wsl -u root -e bash --noprofile --norc
这应该会让您进入 shell,而不会运行有问题的启动脚本。sh
如果需要,您也可以使用。
此外,大多数 Systemd 脚本或 WSL 指令都非常复杂,因为它们试图“完成所有事情”。要制作一个可以运行但功能有限的“快速而粗糙”的 Systemd,您可以从以下方法开始:
sudo -b unshare --pid --fork --mount-proc /lib/systemd/systemd --system-unit=multi-user.target
ps -ef
等待Systemd 启动几秒钟以“稳定下来”,然后:
sudo -E nsenter --all --wd="$PWD" -t $(pgrep -xo systemd) runuser -P -l $USER -c "exec $SHELL"
这应该会让你进入 WSL2/Ubuntu 中可用的 Systemd 环境。主要限制是你无法在该会话中运行 Windows 可执行文件。但这对于 Kubernetes 教程来说不是必需的。
一旦运行该程序,您就可以构建“完整的 Systemd”脚本。
答案2
新的/令人反感的行是 中的第 4 行/etc/bash.bashrc
。
我可以通过以下方式从 Windows 命令提示符中删除它:
wsl -u root --exec sed -i 4d /etc/bash.bashrc
然后我就能重新登录到我的 shell 并解决问题。