我在 Azure 上运行 Windows 2025 Server Core VM。我在其上运行了 Azure DevOps 构建代理、docker for Windows 容器和 powershell core。所有这一切都运行正常。
我运行了没有参数的 WSL 命令,并对安装 WSL 的提示说“是”。
然后我尝试安装 WSL:
PS C:\Users\azadmin> wsl --install Ubuntu-18.04
Downloading: Ubuntu 18.04 LTS
Installing: Ubuntu 18.04 LTS
PS C:\Users\azadmin> 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
我做了一些研究,意识到我需要从 B 系列扩展到 D 系列,以便在Install-WindowsFeature Hyper-V
出现故障时启用 Hyper-V 嵌套虚拟化。因此,我运行了以下命令并重新启动:
安装-Windows功能 Hyper-V、容器、DHCP
行为仍然没有改变。
我甚至启动了第二个全新的 Server Core VM 并验证了相同的行为。
** Windows 服务器 2022 **
我在最新更新的 Server 2022 中遇到了不同的错误Class not registered
PS C:\Users\azadmin> wsl --install -d ubuntu
Class not registered
PS C:\Users\azadmin> systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
>>
OS Name: Microsoft Windows Server 2022 Datacenter Azure Edition
OS Version: 10.0.20348 N/A Build 20348
PS C:\Users\azadmin>
我甚至尝试过Install-WindowsFeature Microsoft-Windows-Subsystem-Linux
。
所做的只是在输出中添加一行wsl --install
PS C:\Users\azadmin> wsl --install
Windows Subsystem for Linux is already installed.
Class not registered
PS C:\Users\azadmin>
如果您在 Hyper-V 中安装虚拟机,错误消息会好得多。例如,在 2003 年,在本地 Hpper-V 实例上,您会得到:
手动安装 WSL 包的方法是安装 appx 文件。例如:
curl.exe -L https://aka.ms/wsl-debian-gnulinux -o debian.app
下载可以使用 进行安装的 Debian 应用程序文件
Add-AppxPackage
。查看完整列表。不幸的是,
Add-AppxPackage
它不适用于服务器核心。但是,appx 包只是一个 zip 文件,可以使用 Windows 附带的 tar.exe 版本解压。对于 WSL 包,它是一个嵌套的 appx 文件。您需要将 x64 appx 文件解压到 appx 文件内的某个位置,例如
%USERPROFILE%\AppData\Local\DebianWSL
然后,您可以在刚刚创建的目录中查找 exe(在本例中为 debian.exe),然后运行它。然后您就有了 WSL。