我尝试过的事情+更多描述

我尝试过的事情+更多描述

前段时间,我安装了 WSL 和 Ubuntu 20。我有一个脚本,想在这个 WSL 中从 Windows 运行;但是,当我在管理员或正常访问中从 Powershell 或命令提示符使用大多数 WSL 命令时,我得到:

(base) PS C:\Windows\System32> wsl
Windows Subsystem for Linux has no installed distributions.
Use 'wsl.exe --list --online' to list available distributions
and 'wsl.exe --install <Distro>' to install.
Distributions can also be installed by visiting the Microsoft Store:
https://aka.ms/wslstore
Error code: Wsl/Service/CreateInstance/GetDefaultDistro/WSL_E_DEFAULT_DISTRO_NOT_FOUND

但是,如果我用 列出分布wsl.exe -l -v,我会得到我正在使用的分布:

(base) PS C:\Windows\System32> wsl.exe -l -v
  NAME            STATE           VERSION
  Ubuntu-20.04    Stopped         2

我尝试过的事情+更多描述

我还可以在 Ubuntu 中打开终端并在那里执行任何操作,没有任何问题。我想其中一个可能的解决方案是重新安装它;但是,我已经根据自己的喜好修改了 Ubuntu 环境,安装了软件包、git 存储库等。在新安装中再次执行这些操作需要一些时间,即使这样,我也不确定这是否能解决问题。

有人遇到过这种情况吗?有人知道如何解决吗?

以下是我迄今为止尝试过的方法:

  1. 我还确保 Windows 功能已启用:“适用于 Linux 的 Windows 子系统”和“虚拟机平台”。
  2. 重置相关功能(从这里)以管理员身份在命令提示符中(需要多次重新启动):
    net start LxssManager & net stop LxssManager  & net start LxssManager
    Dism /online /Disable-Feature /FeatureName:Microsoft-Windows-subsystem-Linux
    Dism /online /Disable-Feature /FeatureName:Microsoft-Hyper-V-All
    wsreset.exe
    rd /s /q c:\Windows\SoftwareDistribution
    Dism /online /Enable-Feature /FeatureName:Microsoft-Windows-subsystem-Linux
    Dism /online /Enable-Feature /FeatureName:Microsoft-Hyper-V-All
    DISM /Online /Cleanup-Image /RestoreHealth
    
  3. 将 WSL 的默认版本设置为 2:wsl --set-default-version 2
  4. 我已经检查了 WSL、Windows 和 Ubuntu 的更新。
  5. 我安装了一个新的 Ubuntu,wsl --install并且 wsl 现在可以工作并在 Linux 中启动会话,但同样,我更愿意使用我已经拥有的 Ubuntu,而不是这个新的。有了这个新版本,我得到了:
    (base) PS C:\Users\Zaida> wsl --list
    Windows Subsystem for Linux Distributions:
    Ubuntu (Default)
    Ubuntu-20.04
    

有关系统/WSL/Linux 发行版的信息

以下是有关我的系统的一些信息:

(base) PS C:\Windows\System32> wsl --version
WSL version: 2.0.9.0
Kernel version: 5.15.133.1-1
WSLg version: 1.0.59
MSRDC version: 1.2.4677
Direct3D version: 1.611.1-81528511
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.22621.2715

关于 Ubuntu 本身:

zaida@home_PC:WSL_Ubuntu### lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:        20.04
Codename:       focal

关于应用程序:

规格:Windows 上的 Ubuntu 20.04

答案1

回答完这个问题后,我意识到了问题所在,而且这是一个非常容易修复的问题。过去,我有更多的 WSL 发行版,但我删除了所有不再使用的发行版。我猜在那次清除过程中,我删除了被视为“DEFAULT_DISTRO”的那个,因此,即使安装了发行版,如果没有它,wsl 也无法启动。

当我安装新的发行版时,该发行版被视为默认发行版:

(base) PS C:\Windows\System32> wsl.exe --list
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
Ubuntu-20.04

因此,只需要切换或指示 WSL 使用哪个发行版。我按照wsl -s <DistributionName>指示运行这里

(base) PS C:\Windows\System32> wsl -s Ubuntu-20.04
The operation completed successfully.
(base) PS C:\Windows\System32> wsl --list
Windows Subsystem for Linux Distributions:
Ubuntu-20.04 (Default)
Ubuntu

就这样。现在一切正常!

我决定保留这篇帖子并添加我如何解决它,因为每次我在谷歌上搜索错误代码:"Error code: Wsl/Service/CreateInstance/GetDefaultDistro/WSL_E_DEFAULT_DISTRO_NOT_FOUND",我得到的只是关于新安装失败的结果,而不是关于未检测到工作发行版的结果。希望它能帮助其他人。

相关内容