我遇到了一个严重的 Windows 10 更新问题,导致我无法安装 Windows。不幸的是,我没有 Windows 备份。
我最终将其加载到双启动 Ubuntu 中,使用 dc3dd 备份整个 Windows HDD,重新安装 Windows,然后将 dc3dd 备份恢复到单独的分区中。
这样,我现在可以从新的 Windows 安装访问所有旧的 Windows 文件。
但我在旧 Windows 上的 WSL2 Ubuntu 中有一些重要的项目,我想恢复它们。显然,如果我有 wsl --export 备份 - 这不是问题,但我没有。
据我所知,这并不像在旧文件系统的深处找到它们那么简单,因为它们存在于某种虚拟机文件中。
那么我该如何解决这个问题?
谢谢
答案1
对于 WSL2 来说现在相当简单。
首先,您需要找到
ext4.vhdx
这些发行版中的文件。如果您从 Microsoft Store 安装了发行版,则它们将位于:<backed_up_drive>\Users\<username>\AppData\Local\Packages\<package_name>\LocalState\ext4.vhdx
对于 Ubuntu 发行版,软件包名称将以“Canonical”开头。
将文件移动
ext4.vhdx
到新系统上的某个位置。我使用类似以下方法:$ENV:userprofile\WSL\instances\Ubuntu_22.04_WSL2_Shkarik
接下来,确保安装了最新的 Windows 10 更新。然后,你应该能够安装 WSL本身从 Microsoft Store 使用这一页。这是比 Windows 10 更高版本的 WSL,并且它具有该
--import-in-place
选项。安装新的 WSL 后,打开 PowerShell(以普通用户身份,不是管理员),导航到放置的目录
ext4.vhdx
并:# Import # wsl --import-in-place <new_distro_name> <path_to_vhdx> wsl --import-in-place Ubuntu_22.04_WSL2_Shkarik ./ext4.vhdx # Optionally, set it as the default, if there are any others installed wsl --set-default Ubuntu_22.04_WSL2_Shkarik # Start it with: wsl ~ # or wsl ~ -d Ubuntu_22.04_WSL2-Shkarik
一旦进入发行版,您将成为 root 用户。您可以为每个用户设置默认用户这个答案。
或者,您可以重新安装 Ubuntu,然后将旧版本复制ext4.vhdx
到新版本上。但是,我更喜欢能够自己选择发行版的位置和名称(如上所述)。它还允许您快速安装另一个副本(用于测试),而ubuntu.exe
不会干扰您的“日常”文件。