Bash 错误并且 WSL 不工作

Bash 错误并且 WSL 不工作

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

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

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

有没有什么办法可以解决这个问题?

额外细节:

  • wsl -l -v

      NAME      STATE           VERSION
    * Ubuntu    Stopped         2
    
  • 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
    
  • wsl ~ -u root -e /usr/bin/sh结果出现一个#符号和一个闪烁的_

答案1

<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 init 进程(除其他外):

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

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

您可能只是删除了从/bin/到 的符号链接/usr/bin,如果是这样的话,我们可以轻松地重新创建它。但是,您删除的可能不止这些,我们目前还不知道。

鉴于您提到没有重要文件,最简单的恢复方法是简单地将 Ubuntu“重置”回初始 rootfs 状态。这是一个破坏性的操作,所以只推荐这样做,因为您说没有什么可恢复的:

从 PowerShell:

# WARNING: Destructive operation
wsl --unregister Ubuntu

# Then re-install Ubuntu
ubuntu.exe

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


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

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

wsl --export Ubuntu <path_to>/my_ubuntu_backup.tar

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

答案2

在我的情况下,我将 WSL 发行版导出到单独的驱动器上,当我(几乎)用完空间时也会报告此问题 - 我有大约 15MB 的可用空间,这似乎不足以启动 VM。在尝试重新创建 VM 之前,您可能需要先尝试释放一些空间。

相关内容