从我的旧笔记本电脑导入 WSL2 时不断重新安装 Ubuntu

从我的旧笔记本电脑导入 WSL2 时不断重新安装 Ubuntu

我正在尝试配置一台新笔记本电脑(Windows 10 企业版 20H2)。我已经使用wsl --installMicrosoft 推荐的命令安装了 WSL。

我已设法导入我之前的 WSL2 Ubuntu 20.04 配置的备份,并将其设置为默认发行版。

PS C:\Windows\System32> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2

然而,当我尝试从开始菜单中的启动器启动 Ubuntu(需要我的旧配置)时,它会安装一个新版本的 Ubuntu 并启动它

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:

我尝试使用

PS C:\Windows\System32> wsl --unregister Ubuntu

但问题仍然存在。那么我该如何让启动器(或 Windows 中的正确术语)启动默认版本呢?

答案1

WSL 仅为您通过以下方式安装的发行版创建开始菜单“启动器”(快捷方式):

  • wsl --install -d <distro>
  • wsl --install(带有 WSL 的默认 Ubuntu 发行版)
  • 或者从 Microsoft Store 安装的

这些开始菜单项指向所谓的“应用程序执行别名”,您可以在设置中的“管理应用程序执行别名”中看到这些。

目前,有两个相互竞争的实例:

  • Ubuntu:通过wsl --install流程安装并显示“开始”菜单上的内容。

  • Ubuntu-20.04:您的wsl --imported 实例。此实例没有“开始”菜单项。通常,您可以通过以下任一方式启动它:

    • 命令wsl
    • Windows 终端配置文件(实际上将启动wsl -d Ubuntu-20.04

你有多种选择来做你想做的事情:

  • 选项 1(推荐):从 Microsoft Store 安装 Windows Terminal。这是一个(相对较新的)终端,其特点如下:

    • 功能更加丰富,旨在取代 Windows 控制台主机(默认情况下由 WSL、PowerShell、CMD 和其他终端应用程序使用)
    • 由微软开发
    • 开源(github 仓库
    • 目前开发非常活跃,定期发布新功能
    • 能够成为 Windows 11 中的默认终端
    • 能够自动检测并创建您已安装的所有 WSL 实例的配置文件。

    无需从“开始”菜单启动“Ubuntu”,只需启动 Windows 终端即可。由于它会自动为 Ubuntu_20.04 创建配置文件,因此您甚至可以将此配置文件设置为默认配置文件。然后启动 Windows 终端将自动启动您的 Ubuntu_20.04 实例。

  • 选项 2(如果您不想使用 Windows 终端,则次佳选项):为 Ubuntu-20.04 创建一个开始菜单项:

    • 如果您想要删除“Ubuntu”发行版的“开始”菜单项,请在“开始”菜单中右键单击它,然后选择“卸载”。这将删除ubuntu.exe(应用程序执行别名)和“开始”菜单项。
    • 要创建指向默认分布的新开始菜单项:
      • 在 Explorer 中导航至%appdata%\Microsoft\Windows\Start Menu
      • 右键单击并选择新的->捷径
      • 对于“位置”,只需输入wsl.exe(甚至wsl可以)
      • 将其命名为“Ubuntu”
  • 选项 3:wsl --import您喜欢的发行版并为其命名Ubuntu

    • wsl --unregister Ubuntu(通过 `wsl --install 安装的)
    • wsl --import Ubuntu <directory> <your_20.04.tar> --version 2
    • 当您从“开始”菜单启动 Ubuntu 时,它应该立即启动您的发行版,因为它正在寻找名为Ubuntu而不是 的发行版Ubuntu-20.04
  • 选项 4:对于 WSL2 安装,您可以将ext4.vhdx文件从导入的实例复制到现有 Ubuntu 实例上。对于此用例,不一定建议这样做,因为以前的方法更安全并且效果同样好。

    • 从开始菜单启动“Ubuntu”,并使用虚拟用户进行配置。
    • wsl --shutdown以确保没有实例正在运行。
    • 复制ext4.vhdx
      • wsl --import:您编辑的位置
      • :Ubuntu 的默认安装。您应该可以在类似 的地方找到它%userprofile%\AppData\Local\Packages\CanonicalGroupLimited...\LocalState
    • 从开始菜单启动“Ubuntu”,它应该有你的 Ubuntu-20.04 安装。
    • 通过以下方式将默认发行版更改为此wsl --set-default Ubuntu
    • 一旦您对一切正常运行感到满意,wsl --unregister Ubuntu-20.04请记住,这是一个破坏性的操作,因此请确保一切正常,并Ubuntu首先确认您正在使用发行版。更好的是,wsl --export再检查一次,并在执行此操作之前备份。

相关内容