Windows Subsystem for Linux (WSL) 中先前创建的 Ubuntu 文件夹的状态

Windows Subsystem for Linux (WSL) 中先前创建的 Ubuntu 文件夹的状态

几个月前,我创建了一个 WSL1,并在用户名下使用了 Ubuntu 应用程序。void后来,我决定将其升级到 WSL2,但在升级过程中遇到了错误。后来,我发现这是由于 BIOS 虚拟化设置造成的。

无论如何,我已经执行了这些操作来删除 WSL2。

https://pureinfotech.com/uninstall-wsl2-windows-10/

  1. 删除 Ubuntu 应用程序
  2. 卸载适用于 Linux 的 Windows 子系统更新
  3. 从 Windows 功能中清除虚拟机平台选项
  4. 从 Windows 功能中清除“适用于 Linux 的 Windows 子系统”选项

完成这些操作后,我启用了 BIOS 虚拟化并再次下载了 WSL2,运行起来非常顺畅。

问题是我想知道我在void用户名下在 WSL1 下创建的文件发生了什么。执行上述操作后它们是否也被删除了,还是它们只是在我的 Windows 机器的某个地方。

类似的第二个问题:

如果我删除我的 Ubuntu 应用程序(从 Windows 应用商店),那么这也会删除我在该用户名下创建的所有数据(文件夹等)吗?

答案1

简短回答:当你卸载 WSL1 Ubuntu 时,你在其中创建的文件几乎肯定也会被删除。

更多细节:

与从 Microsoft Store 安装的大多数 Windows 10 应用一样,应用本身通常安​​装到的子目录中C:\Program Files\WindowsApps。此目录受到保护,普通用户无法访问,因此您通常不会与其交互。

然后,当您ubuntu.exe首次运行(或其变体之一)时,WSL 会创建一个“实例”(通常称为“发行版”,但在我看来,该术语实际上应该保留其正常定义)。该实例安装到%userprofile%\AppData\Local\Packages\Canonical...\Canonical...子目录名称将略有不同,具体取决于您从商店安装的版本。

您在 WSL 的根文件系统中看到的所有文件都位于..\Canonical...\LocalState子目录中。

  • 对于 WSL1,这些文件实际上在 Windows 本身的 下可见..\LocalState\rootfs,但永远不应直接访问(或面临腐败风险)。
  • 对于 WSL2,文件位于ext4.vhdx同一目录中命名的虚拟 HDD 中。

无论版本如何,卸载商店应用都会删除两个都App 包C:\Program Files\WindowsApps\...和 的文件系统%userprofile%\Local\Packages\Canonical...

我其实并不确定,但我在几个系统上尝试了一下,这些系统上我没有使用过发行版来确认。老实说,我有点惊讶,因为卸载应用程序不应卸载与该应用程序相关的数据。但是,对于从应用商店安装的 WSL 发行版,它会卸载。

请注意,您可以非常轻松地备份您的实例,而且我会定期备份,尤其是在安装后立即备份,这样我就可以获得一个“干净/新鲜”的映像,可用于创建其他实例。WSL 的优点之一是您可以快速启动发行版的新实例来尝试某些东西,然后在完成后将其丢弃。

wsl --export命令用于备份实例。它将创建一个 tarball全部实例中的文件(包括系统和用户文件)。然后可以使用该 tarball 创建新实例wsl --import。这些 ed 映像的优点import在于它们不是与应用程序本身绑定。换句话说,卸载商店应用程序将不是已删除您使用 手动创建的实例wsl --import

巧合的是,我最近将所有“商店安装”实例移至“手动”实例。还有其他优势:

  • 您可以在任何驱动器/子目录中创建这些新实例。并不局限于您的AppData目录。
  • 如上所述,卸载 Store 应用不会删除这些实例。
  • 你可以随意命名它们,例如Ubuntu20.04_WSL1

另请注意,Windows 11 版本的 WSL 具有添加驱动器(物理和虚拟)的功能wsl --mount。当我转向 Windows 11 时,我的计划是看看它在创建分离驱动器上进行安装,以便我的用户数据与根文件系统/home分开。.vhdx

相关内容