前段时间,我安装了 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 存储库等。在新安装中再次执行这些操作需要一些时间,即使这样,我也不确定这是否能解决问题。
有人遇到过这种情况吗?有人知道如何解决吗?
以下是我迄今为止尝试过的方法:
- 我还确保 Windows 功能已启用:“适用于 Linux 的 Windows 子系统”和“虚拟机平台”。
- 重置相关功能(从这里)以管理员身份在命令提示符中(需要多次重新启动):
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
- 将 WSL 的默认版本设置为 2:
wsl --set-default-version 2
- 我已经检查了 WSL、Windows 和 Ubuntu 的更新。
- 我安装了一个新的 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
关于应用程序:
答案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"
,我得到的只是关于新安装失败的结果,而不是关于未检测到工作发行版的结果。希望它能帮助其他人。