Bash 错误且 WSL 不工作

Ary*_*lip 3 bash windows-10 windows-subsystem-for-linux

我在尝试让 WSL 工作时遇到这些错误。

<3>WSL (9) ERROR: CreateProcessEntryCommon:574: execvpe /bin/bash failed 2
<3>WSL (9) ERROR: CreateProcessEntryCommon:583: Create process not expected to return
Run Code Online (Sandbox Code Playgroud)

我曾尝试编辑我的 Windows 终端,因为它坏了,而且我可能删除了一些文件,因为重新安装并不能解决问题。

有什么解决办法吗?

额外细节:

  • wsl -l -v:

      NAME      STATE           VERSION
    * Ubuntu    Stopped         2
    
    Run Code Online (Sandbox Code Playgroud)
  • wsl --version:

    WSL version: 1.1.3.0
    Kernel version: 5.15.90.1
    WSLg version: 1.0.49
    MSRDC version: 1.2.3770
    Direct3D version: 1.608.2-61064218
    DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
    Windows version: 10.0.19045.2604
    
    Run Code Online (Sandbox Code Playgroud)
  • wsl ~ -u root -e /usr/bin/sh结果是#符号 和闪烁_

Not*_*1ds 5

<3>WSL (9) ERROR: CreateProcessEntryCommon:574: execvpe /bin/bash failed 2 <3>WSL (9) ERROR: CreateProcessEntryCommon:583: Create process not expected to return

这表明 Bash shell 不再可访问。WSL2 初始化进程(除其他外):

  • 确定默认用户 ID
  • /etc/passwd在(通常/bin/bash)中查找用户的 shell
  • 尝试启动 shell

找不到/bin/bash是一个非常严重的问题。从评论(编辑到主要问题)中,我们确实确定您仍然可以启动/usr/bin/sh,这意味着至少该 shell 可用。

您可能只是删除了/bin/to的符号链接/usr/bin,如果是这种情况,我们可以轻松地重新创建它。但是,您删除的内容也可能不止于此,而我们目前还不知道。

鉴于您提到没有重要文件,最简单的恢复就是简单地将 Ubuntu“重置”回初始 rootfs 状态。这是一种破坏性操作,因此仅建议您这样做,因为您说没有什么可恢复的:

来自 PowerShell:

# WARNING: Destructive operation
wsl --unregister Ubuntu

# Then re-install Ubuntu
ubuntu.exe
Run Code Online (Sandbox Code Playgroud)

几秒钟后,它应该要求您输入用户名和密码,就像您最初安装时一样。


请注意可能需要尝试恢复的其他原因:

在运行上述命令之前,请使用以下命令通过 PowerShell 备份文件系统:

wsl --export Ubuntu <path_to>/my_ubuntu_backup.tar
Run Code Online (Sandbox Code Playgroud)

检查 tarball 以确保包含您的文件。然后,运行--unregister上述命令后,您可以将任何必要的文件从该 tarball 恢复到您的主目录。