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

尝试在WSL上安装Ubuntu 22.04 LTS时出现了以下失败信息。我无法输入任何内容,因此无法完成设置。
这些是我从"wsl -l -o"和"wsl -l -v"命令中获取的输出结果
这是失败安装后的运行中的Ubuntu-22.04
我该如何修复它?

6个回答

对于遇到这个错误的人来说,以下是几个尝试解决它的方法:
选项1:首先尝试这个。感谢@Silverfish在下面的评论中确认它有效。这应该是解决许多Ubuntu 22.04 WSL安装失败问题最简单的方法。
选项2:根据评论,这似乎是一个可靠的解决方法,但比选项1要长得多。
选项3和4:只有在前两个选项对您不可行时才作为备选方案。
选项1:非图形化安装
从PowerShell开始:
  • 取消注册现有的22.04安装。请注意,这是一个破坏性操作,会删除分发中的所有文件,因此只应在安装失败或您确信可以安全删除分发时使用:

    wsl -l -v
    # 确认分发名称。
    # 它应该是"Ubuntu-22.04"或
    # "Ubuntu",取决于您何时以及如何
    # 从商店安装。
    # 根据您的版本更新下面的命令。
    
    wsl --unregister Ubuntu-22.04
    # 或 wsl --unregister Ubuntu
    
  • 使用“旧版”非图形化安装程序安装22.04:

    ubuntu2204.exe install --ui=none
    # 或 ubuntu.exe install --ui=none
    

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

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

Ubuntu 22.04只在WSL2下使用新的TUI配置步骤。我相信这一步是导致“应用程序在所需时间内未启动”的原因。

让我们看看是否可以通过安装为WSL1来避免这个失败。如果成功了,你就可以将其转换为WSL2。

  • 卸载失败的Ubuntu 22.04,再次(开玩笑,我知道)

  • 重新启动(可选,但建议)

  • 从PowerShell中运行:

    wsl --set-default-version 1
  • 再次运行安装程序。

请注意,在WSL1下安装程序运行时间会更长。
如果我没记错的话(我知道到目前为止我都没有),那么这个安装程序将成功完成。请注意,它将跳过TUI配置用户名/密码以及在WSL2中运行的可选的/etc/wsl.conf步骤。它将直接进入基于控制台的用户名/密码配置。希望这样能让您成功输入。
如果是这样,并且分发以您的用户身份启动,则:
退出Ubuntu 返回PowerShell并运行:
wsl -l -v
# 确认您的发行版名称,如选项1中所示
wsl --shutdown
wsl --set-version Ubuntu-22.04 2
# 或者 wsl --set-version Ubuntu 2
# 这需要一些时间
wsl --set-default-version 2
wsl -l -v
# 确认正确的版本

如果由于某种原因这个方法不起作用,那就继续尝试下一个选项...

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

您可能能够直接跳到下一步,但我包括这一步作为确保rootfs被正确提取的“安全”选项。请注意,这些说明是针对商店中的“有版本号”的Ubuntu 22.04版本。如果您想使用(现在已更新为22.04的)没有版本号的“Ubuntu”,您需要进行相应的修改。

  • 这次不要卸载Ubuntu 22.04

  • 退出任何WSL2分发版

  • 启动一个管理员PowerShell,逐行复制、粘贴并运行以下命令:

    # 编辑下面的路径以符合您的偏好
    $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"
    

    退出管理员PowerShell

  • 启动普通的PowerShell,逐行复制、粘贴并运行以下命令:

    wsl --shutdown
    # 确保这些路径与上面创建的路径相匹配
    $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
    

    如果镜像成功导入,则使用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

退出Ubuntu,并从PowerShell中执行:
# wsl -l -v
# Substitute "Ubuntu" as the distribution name below if needed
wsl --terminate Ubuntu-22.04
wsl ~ -d Ubuntu-22.04

如果一切顺利,您应该以默认用户的身份进入Ubuntu 22.04。

2我尝试了“先安装为WSL1,然后转换为WSL2”的解决方案,效果非常好。谢谢。 - ajdev8
@AndreasJonsson 太好了 - 谢谢你确认!OP一直没有回应,所以我不确定。 - NotTheDr01ds
谢谢解决方案!它对我非常有效。只是想知道,“手动安装 rootfs 并创建正确的用户”和“手动创建用户”的步骤有何意义?在将其安装为 WSL 1 版本并转换为 WSL 2 后,似乎对我来说一切都运行正常。我是否错过了重要的东西? - ChrisCrossCrash
1@ChrisCrossCrash 如果转换不起作用,那些只是其他的想法。我会编辑答案,以使得转换似乎对大多数人有效更加清晰。其他方法可能也有效,但转换可能更容易一些。 - NotTheDr01ds
@NotTheDr01ds 感谢你的澄清和快速回复!一切都继续正常运作。 - ChrisCrossCrash
Microsoft Store有独立的“Ubuntu”和“Ubuntu 22.04”应用程序,目前两者都可以在WSL上安装Ubuntu 22.04。当我使用“Ubuntu”应用程序进行安装时,遇到了相同的错误信息。对于其他尝试相同操作的人来说,选项1对我有效,但需要进行一些小的更改: wsl --unregister Ubuntu ubuntu.exe install --ui=none - Silverfish
1@Silverfish 说得好 - Ubuntu的“非版本化”商店版本上周刚更新到了22.04。因此,这里很多答案可能需要相应地更新。感谢您指出这一点。 - NotTheDr01ds
感谢编辑以反映这个更改!刚刚检查了一下,当尝试从“Ubuntu 22.04”应用程序安装时,我得到了相同的错误消息,并且按照选项1解决了问题,就像在“Ubuntu”应用程序上一样。当然,你在答案中添加的wsl -l -v也能区分这两种情况,所以更新后的答案看起来都很好!我只想补充一点,我使用的是Windows 10,因为我相信WSL在Windows 11上可能会有些不同。所以如果有人在Windows 11中遇到了相同的错误消息,你可以留下评论告诉大家它是否对你有效! - Silverfish
1选项1:非图形化安装对我来说有效。 - PerseP

我的答案与@NotTheDr01ds的第2个选项相同,但消除了卸载和重新安装失败的Ubuntu的需要。非常感谢他,因为没有从他的答案中获得的见解,我不会想出这个答案。
1. 而不是卸载和重新安装,转到“设置”>“应用程序”>“Ubuntu 22.04 LTS”>“高级选项”>“重置”。这似乎将您带回到从Microsoft Store下载并安装Ubuntu之前但尚未解压缩的状态。 2. wsl --set-default-version 1
The operation completed successfully.

现在通过点击桌面或开始菜单图标来启动Ubuntu,以成功启动WSL 1。 退出Ubuntu shell,然后执行`wsl --shutdown`命令。 执行`wsl -l -v`命令。
  NAME            STATE           VERSION
* Ubuntu-22.04    Stopped         1

6. 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.

7. wsl --set-default-version 2
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
The operation completed successfully.

8. wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-22.04    Stopped         2

重新启动Ubuntu并验证它是否仍然可以在WSL 2下正常工作。

太酷了 - 感谢你的优化!只是好奇,因为我没有得到任何人的确认,不知道选项1是否有效 - 你先试过了吗?如果试过的话,结果如何?谢谢! - NotTheDr01ds
此外,wsl --unregister Ubuntu-22.04 命令应该能够让您达到与通过图形界面进行的 重置 相同的状态,如果我没记错的话。 - NotTheDr01ds
@NotTheDr01ds 我没有尝试过选项1。 - dhalsim2
没问题 - 希望如此。我真的认为这将是最简单的解决方案,尽管希望Canonical能尽快修复这些问题,这样大家就不会再遇到这个问题了;-) - NotTheDr01ds

注意:对于遇到在WSL中安装Ubuntu 22.04时出现0x8027025a错误的其他人,请注意此答案并未解决原帖作者的问题。我将其保留在这里,因为它提供了一些有关安装程序如何工作的背景信息(用于故障排除),但我建议首先尝试我的其他答案
我在我的Windows 10系统上看到了类似的故障(但不是这个确切的错误),但迄今为止,在我的Windows 11系统上还没有出现。第一次安装时它安装得很好,但在卸载和重新安装后(我经常这样做来尝试不同的方法来回答问题),我看到了相同的消息。以下是一些可能的解决方法(但尚无“解决方案”)。
一些背景信息--Ubuntu 22.04在WSL上是第一个使用新的“Ubuntu WSL Out-of-Box Experience”的生产版本,该版本首次出现在Community Preview中。之前从Microsoft Store安装的WSL发行版使用了一个相当简单的、仅限控制台的安装程序(例如ubuntu.exe),它执行了以下操作:
  • 将rootfs tarball解压缩到您的$env:USERPROFILE\AppData\Local\Packages\<package>目录中的适当位置。
  • 向WSL注册发行版
  • 运行“初始配置”阶段,要求输入默认用户名和密码
  • 向WSL注册默认用户名,创建适当的注册表项。
据我所知,事情发生的顺序是这样的。
另一方面,新的Ubuntu 22.04安装程序似乎会:
1. 开始解压tarball。 2. 切换到一个图形化的“这就是Ubuntu的优点”旋转广告牌。 3. 一旦rootfs被提取出来,就会在WSL中注册该发行版。 4. 切换到一个TUI(美化的控制台菜单)配置阶段,在这里您可以设置语言、用户名、实际姓名和密码。 5. 添加一个额外的TUI屏幕,用于设置一些常见的/etc/wsl.conf选项。 6. 在WSL中注册用户名。 7. 将任何修改后的值写入/etc/wsl.conf。 8. 退出TUI并以您的用户身份启动该发行版。
可能存在几个潜在的故障点(及其解决方案),可能还有一些我尚不了解的:
主要的潜在解决方法,如果用户已创建
请注意,根据您在问题中显示的输出,这可能对您无效,但我将其保留在这里供其他人参考。
在我的情况下,通常在第6或第7步之后会出现问题。当它转到终端时,它会“认为”前面的步骤中有一些未成功完成的事情。然后它尝试使用“旧方法”来请求用户名和密码,但由于已经通过图形安装程序设置了它们,所以失败了。
在这种情况下,您可以尝试关闭现有的终端窗口,并通过"wsl ~ -d Ubuntu-22.04"重新启动。如果以root身份启动,请检查您的用户名是否存在于"/etc/passwd"中。如果存在,请通过"sudo -e /etc/wsl.conf"将其设置为默认,并按照this Super User answer(Method 1)中指定的条目进行添加。
我还可以通过“帮助”选项复现一个稍微不同的故障,但是假设在过程中已经很晚了,上述相同的步骤也可以解决问题。
安装程序根本无法完成
如果安装程序在早期步骤中失败,您可能需要重新开始。请注意,这将完全删除发行版和所有数据,因此(对于其他潜在读者)只有在刚刚安装并失败,没有现有数据的情况下才执行这些步骤
1. 关闭所有安装程序窗口(以及任何其他WSL实例) 2. 进入PowerShell并执行以下操作: ``` wsl --shutdown wsl --unregister Ubuntu-22.04 ubuntu2004.exe ``` 3. GUI将再次启动。即使它询问您是否可以转到下一步,请不要点击任何东西。它应该自动进入Willkommen! Bienvenue! Welcome! Добро пожаловать! Welkom!页面,您可以在其中选择语言。 4. 无论如何,都不要选择“帮助”,否则安装程序将再次崩溃。它可能是可恢复的,也可能不是,但根据我的经验,它肯定会崩溃。 5. 不要使用鼠标 - 此时这不是一个图形化安装程序 - 它是一个TUI,只能通过键盘响应,据我所知。 6. 使用箭头键和Enter在TUI中选择您的语言。 7. 在TUI中设置您的用户名/密码。使用Tab选择字段。完成后,Tab到“Done”并按下Enter。 8. 除非您有特殊需求,否则不要更改下一个屏幕上的任何选项。默认情况下应该选择“Done”。只需按下Enter即可。 9. 在下一个屏幕上等待,该屏幕显示“设置完成”和“正在应用更改”(相互矛盾的信息,依我看)。此步骤需要太长时间,并且可能存在某些问题。同样,在此处不要选择“帮助”,否则安装程序将无法完全执行(根据我的经验)。 10. 最终,它将转到一个“Hi”屏幕。注意更新的说明,并在“立即重启”选项上按下Enter
希望在那一点上能顺利过渡到一个常规的 shell。
如果不行:
一个最后的选择
如果上述方法失败,请尝试完全删除 Ubuntu 22.04(但不包括 WSL 本身):
  • 可选:在Windows中运行RegEdit,导航到HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss。找到具有“DistributionName”为“Ubuntu-22.04”的条目(确切地说)。

  • 记下它 - 不要做其他任何操作。我们只是想确保它被删除。

  • 在开始菜单中右键单击“Ubuntu 22.04”并选择“卸载”。再次强调,这将删除该发行版,所以只有在安装失败且其中没有数据时才执行此操作。同时,请确保您正在删除正确的发行版 - 例如,如果您安装了多个“Ubuntu”,请不要错误地删除错误的一个。

    请注意,在未来,“开始菜单中的无版本Ubuntu”对于新用户可能也是22.04(尽管希望在此之前解决这些问题)。再次确保您正在删除正确的发行版。

  • 回到RegEdit,点击“查看” -> “刷新”,并确认注册表条目已被删除。如果没有删除,您可能需要手动删除它。请注意,对我而言,它已经被正确删除了。我只是预料到一种情况,即在重新安装之前确保一切都被删除。

  • 打开文件资源管理器,导航到%userprofile%\AppData\Local\Packages\

  • 寻找以CanonicalGroupLimited.Ubuntu22.04LTS开头的一个(可能是CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc)。如果不存在,则没问题。以前的Ubuntu卸载程序确实会删除此目录。但是,看起来(至少对我而言)22.04的卸载程序仍然保留了虚拟磁盘。这可能是件好事,因为我们在AU上看到过几个人在卸载时丢失数据的问题。

    但是,如果卸载后它仍然存在,您可能需要手动删除22.04目录。如果愿意,您可以备份..\LocalState\ext4.vhdx文件,但请注意它大约有1.5GB。

  • 完成所有操作后,重新启动可能是个不错的主意。

  • 然后返回Microsoft Store,按照先前的步骤尝试重新安装Ubuntu 22.04。


我尝试了"安装程序根本无法完成"的情况,然后是"最后一个选项",接着又两次尝试了"安装程序根本无法完成",但可惜的是没有成功。我仍然收到相同的安装失败消息。 - Luan Lima
@LuanLima 真遗憾。我还有一种安装方法,但是让我整理一下,测试一下22.04版本,明天我会写出来的。 - NotTheDr01ds
@LuanLima 在安装失败的情况下,grep 1000 /etc/passwd 返回了什么内容吗? - NotTheDr01ds
不,@NotTheDr0ids,grep 1000 /etc/passwd 没有返回任何结果。 - Luan Lima

这可能不适合每个人。但在我的情况下,将默认应用程序安装位置设置为系统驱动器(C:) 以外的其他驱动器总是会出现相同的错误。我还尝试了在D:\驱动器上通过手动下载和提取到该驱动器中的目录来安装WSL的传统方法,结果也遇到了相同的错误。

storage settings

真糟糕,我不想把我的C:\驱动器装满应用程序,但事情就是这样。在清理了有问题的安装后,将它重新设置为C:\,然后从微软商店安装Ubuntu 22.04允许我完全设置发行版。

如果你的系统驱动器空间不足,请先尝试其他方法。


1好发现 - 请注意,安装后可以通过使用此答案(以及其他答案)中的信息来“移动”它。 - NotTheDr01ds

感谢dhalsim2提供的信息。 在步骤1中,我选择了“修复”而不是“重置”,这对我起作用。

1请不要将“谢谢”作为答案。一旦您拥有足够的声望,您将能够对您认为有帮助的问题和答案进行投票。- 来自审核 - Pilot6
没用。我在运行winx64。 - Dark Knight

对我来说,幸运的是我安装了PrimoCache软件。
1. 我启动了该特定驱动器的缓存。 2. 重置Ubuntu应用程序。 3. 再次启动应用程序。它将完成包括图形界面在内的整个过程。
一旦你完成了所有的安装,你可以从primocache中移除驱动器,甚至卸载软件。 我认为慢速硬盘会影响完整的安装过程。
编辑:
哈哈哈,我刚刚发现了最简单的方法!
1. 重置并修复你的Ubuntu应用程序。 2. 打开Ubuntu应用程序。它将显示安装对话框。快速关闭弹出的对话框和后台的Ubuntu shell窗口。 3. 打开PowerShell,输入: ubuntu config --default-user yourname 它将显示"正在安装,可能需要几分钟...",然后通过输入用户名和密码完成整个过程。