如何修复在 WSL 上安装 Ubuntu 22.04 LTS 时出现的 0x8027025a 错误?

Lua*_*ima 10 lts system-installation windows-subsystem-for-linux 22.04

当我尝试在 WSL 上安装 Ubuntu 22.04 LTS 时,出现以下失败消息。我无法输入任何内容,因此无法完成设置。

这些是我从“wsl -l -o”和“wsl -l -v”命令获得的输出。

这是安装失败后运行的Ubuntu-22.04 。

我该如何修复它?

Not*_*1ds 9

对于那些遇到此错误的人,以下是尝试修复该错误的几种想法:

  • 选项 1:首先尝试此操作。感谢@Silverfish在下面的评论中确认它有效。这应该是解决许多失败的 Ubuntu 22.04 WSL 安装的最简单途径。

  • 选项2:从评论来看,这似乎是解决问题的可靠方法,但它比选项1长了很多。

  • 选项 3 和 4:仅当前两个选项对您不可行时才作为后备方案。*

选项 1:非图形安装

来自 PowerShell:

  • 取消注册现有的 22.04 安装。请注意,这是一种破坏性操作,将删除发行版中的所有文件,因此仅应在安装失败或您确信可以安全删除发行版时使用它:

    wsl -l -v
    # Confirm the distribution name.
    # It should be either "Ubuntu-22.04" or
    # "Ubuntu" depending on when and how you
    # installed from the Store.
    # Update the commands below based on your version.
    
    wsl --unregister Ubuntu-22.04
    # or wsl --unregister Ubuntu
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用“旧”非图形安装程序安装 22.04:

    ubuntu2204.exe install --ui=none
    # or ubuntu.exe install --ui=none
    
    Run Code Online (Sandbox Code Playgroud)

这应该会跳过安装的有问题的部分并成功。

选项 2:安装为 WSL1,然后转换为 WSL2

Ubuntu 22.04 仅使用 WSL2 下的新 TUI 配置步骤。我相信这一步是失败的The app didn't start in the required time.

让我们看看是否可以通过安装为 WSL1 来避免该故障。如果有效,您就可以转换为 WSL2。

  • 再次卸载失败的 Ubuntu 22.04(有趣,我知道)

  • 重新启动(可选,但推荐)

  • 从 PowerShell 中运行:

    wsl --set-default-version 1
    
    Run Code Online (Sandbox Code Playgroud)
  • 再次运行安装程序。

请注意,安装程序在 WSL1 下运行需要更长的时间。

如果我是对的(而且我知道到目前为止我还没有做到),那么这个安装程序将成功完成。请注意,它将跳过用户名/密码的 TUI 配置,以及/etc/wsl.conf为 WSL2 运行的可选步骤。它将直接进入基于控制台的用户名/密码配置。希望这能让您成功输入。

如果是这样,并且发行版作为您的用户出现,那么:

  • 退出Ubuntu
  • 返回 PowerShell 并运行:
    wsl -l -v
    # Confirm your distribution name, as in Option 1
    wsl --shutdown
    wsl --set-version Ubuntu-22.04 2
    # Or wsl --set-version Ubuntu 2
    # This will take a while
    wsl --set-default-version 2
    wsl -l -v
    # Confirm the proper version
    
    Run Code Online (Sandbox Code Playgroud)

如果由于某种原因这不起作用,请继续执行下一个选项......

选项 3:手动安装 rootfs 并创建正确的用户

您也许可以直接跳到下一步,但我将此作为确保正确提取 rootfs 的“安全”选项。请注意,这些说明适用于应用商店中“版本化”的 Ubuntu 22.04 版本。如果您想使用(现已更新至 22.04)“Ubuntu”(无版本号),则需要进行适当的修改。

  • 这次不要卸载Ubuntu 22.04

  • 退出任何 WSL2 发行版

  • 启动管理PowerShell 并复制、粘贴并单独运行每一行:

    # Edit paths below to your preference
    $WSL_IMAGE_PATH = "$env:USERPROFILE\WSL\Images"
    $WSL_INSTANCE_PATH = "$env:USERPROFILE\WSL\Instances"
    mkdir $WSL_IMAGE_PATH
    mkdir "$WSL_INSTANCE_PATH\Ubuntu-22.04"
    $UBUNTU_ROOTFS = (Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\Canonical*22.04*' | Where-Object {$_.Name -eq 'install.tar.gz' })[0].FullName
    cp "$UBUNTU_ROOTFS" "$WSL_IMAGE_PATH\Ubuntu22.04.tar.gz"
    
    Run Code Online (Sandbox Code Playgroud)

    退出管理 PowerShell

  • 启动普通的 PowerShell 并复制、粘贴并单独运行每一行:

    wsl --shutdown
    # Make sure these paths match those created above
    $WSL_IMAGE_PATH = "$env:USERPROFILE\WSL\Images"
    $WSL_INSTANCE_PATH = "$env:USERPROFILE\WSL\Instances"
    
    wsl --import Ubuntu2204 "$WSL_INSTANCE_PATH" "$WSL_IMAGE_PATH\Ubuntu22.04.tar.gz" --version 2
    
    Run Code Online (Sandbox Code Playgroud)

    如果图像导入成功,则wsl ~ -d Ubuntu2204启动它。

    您应该有一个与上面显示的类似的启动屏幕 - 您将以 root 用户身份登录。

    继续下一部分(可以独立于本部分完成)。

选项 4:手动创建用户

来自 Ubuntu 22.04 内部

read -p "Username: " NEWUSER
# Enter your desired username
adduser $NEWUSER
# This will create your username/password
usermod -aG  adm,cdrom,sudo,dip,plugdev,lxd $NEWUSER

# The following 4 lines must be entered together
cat <<EOF > /etc/wsl.conf
[user]
default=$NEWUSER
EOF

cat /etc/wsl.conf
# Confirm the contents
Run Code Online (Sandbox Code Playgroud)

退出 Ubuntu,然后从 PowerShell 中:

# wsl -l -v
# Substitute "Ubuntu" as the distribution name below if needed
wsl --terminate Ubuntu-22.04
wsl ~ -d Ubuntu-22.04
Run Code Online (Sandbox Code Playgroud)

如果一切顺利,您应该会成为 Ubuntu 22.04 的默认用户。

  • 我尝试了“安装为 WSL1,然后转换为 WSL2”解决方案,效果很好。谢谢。 (2认同)

dha*_*im2 6

我的答案与 @NotTheDr01ds 的选项 2 相同,但无需卸载并重新安装失败的 Ubuntu。非常感谢他,因为如果没有从他的答案中收集到的见解,我就不会得出这个答案。

  1. 不要卸载并重新安装,而是转到Settings> Apps> Ubuntu 22.04 LTS> Advanced Options> Reset。这似乎会将您带到与从 Microsoft Store 安装的 Ubuntu 下载相同的状态,但在解压之前。
  2. wsl --set-default-version 1
The operation completed successfully.
Run Code Online (Sandbox Code Playgroud)
  1. 现在,通过单击桌面或开始菜单图标启动 Ubuntu,即可使用 WSL 1 成功启动 Ubuntu。
  2. 退出 Ubuntu shell,然后wsl --shutdown
  3. wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-22.04    Stopped         1
Run Code Online (Sandbox Code Playgroud)
  1. wsl --set-version Ubuntu-22.04 2
Conversion in progress, this may take a few minutes...
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
Conversion complete.
Run Code Online (Sandbox Code Playgroud)
  1. wsl --set-default-version 2
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
The operation completed successfully.
Run Code Online (Sandbox Code Playgroud)
  1. wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-22.04    Stopped         2
Run Code Online (Sandbox Code Playgroud)
  1. 再次启动 Ubuntu 并验证它现在在 WSL 2 下是否仍然有效。