Ubuntu 20.04 未出现在 Windows 上的 wsl.exe -l 中,但在 Ubuntu 中

Ubuntu 20.04 未出现在 Windows 上的 wsl.exe -l 中,但在 Ubuntu 中

我正在尝试让 Ubuntu 20.04 与 Windows 10 Home(10.0.19041 Build 19041)上的 WSL2 配合使用,因此将版本设置为 v2 以便与 Docker Desktop 一起使用。

wsl --set-default-version 2在安装之前已经设置Windows 商店中的 Ubuntu 20.04 LTS

在 Ubuntu 系统(通过“开始”菜单)中,我看到:

$ wsl.exe -l -v
  NAME                   STATE           VERSION
* docker-desktop         Stopped         2
  Ubuntu-20.04           Running         1
  docker-desktop-data    Stopped         2

但是,在 PowerShell 中的 Windows 主机上我看不到 Ubuntu 发行版:

> wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2

为什么从 Windows 主机运行命令时缺少发行版?

(其次:我不确定为什么当我将默认安装设置为 v2 时 Ubuntu 却设置为 v1!)

答案1

在这种情况下,正如我们在评论中所确认的那样,问题原来是 PowerShell 在提升的管理员会话中运行,因此wsl -l -vPowerShell 中通过注册表项检索了一组与来自(非提升用户的)开始菜单的 WSL 实例不同的实例。

对于将来可能遇到此问题的人,您可以确定每个实例的 Windows 用户并比较两者:

  • 在“普通”PowerShell 中,运行Write-Host ([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)

  • 在从“开始”菜单运行的 WSl 实例中,运行powershell.exe -c "Write-Host ([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)"。这将运行 PowerShell 子 shell之内WSL 实例来确定该进程的用户。

检查 WSL 正在使用的注册表项也可能很有用:

  • 电源外壳:Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss" -Recurse
  • WSL: powershell.exe -c "Get-ChildItem 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss' -Recurse"

相关内容