的背景
- 我的 Windows 10 笔记本电脑电池坏了,启动时断电,现在无法成功启动 Windows(它在启动过程中尝试使用自动修复实用程序修复此问题,但每次都失败)。
- 我想通过 USB 记忆棒将笔记本电脑启动到 Ubuntu 实时环境,并将一些文件从 WSL 发行版复制到我的 USB 记忆棒。
问题
- 虽然我可以从我的 Ubuntu Live USB 访问我的 Windows 驱动器和所有常规 Windows 文件,但我似乎找不到任何 WSL 文件。
问题
- 似乎我应该能够运行类似的命令
find . -type d -name "my-directory-in-wsl"
并找出 WSL 文件在我的驱动器上的位置。我试过这个但没有成功。这应该有效吗,或者 WSL 文件是否存在于正常文件系统之外?是否有希望恢复这些文件?
答案1
如果您使用的是 WSL2(假设,因为您应该使用该搜索在驱动器上找到 WSL1 文件),则 WSL 发行版的整个文件系统都在虚拟 SDD 中。正如 @blami 在评论中提到的,您会在以下位置找到它:
%PROFILE%\AppData\Local\Packages\<distro package>\LocalState\ext4.vhdx
对于 Ubuntu(默认),软件包名称将以“典范”.因此类似于:
OldDriveLetter:\Users\<your_old_username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
您还可以搜索OldDriveLetter:\Users\<your_old_username>\AppData\Local\Packages
任何ext4.vhdx
文件。
将ext4.vhdx
文件复制到您的 USB 驱动器。
至于恢复,最安全/最好的方法是使用安装了最新 WSL 的另一个 Windows 系统,并且:
将文件复制
ext4.vhdx
回 Windows 系统上的某个位置(最好不要尝试从 USB 驱动器访问它)。为了便于下面的示例,我们假设它位于 中C:\WSL\instances\Recovered
。将分发版导入到该 WSL 实例中:
wsl --import-in-place RecoveredWSL C:\WSL\instances\Recovered\ext4.vhdx
请注意,此命令需要从 Microsoft Store(或通过最新的 Windows 版本)
wsl
安装的 WSL 版本。wsl --install
当然,您也可以使用其他名称。导入后,您可以通过以下方式访问发行版:
wsl ~ -d RecoveredWSL
您还可以将其设置为默认值,这样就可以通过以下方式轻松启动
wsl
:wsl --set-default RecoveredWSL
如果你确实需要从“真实” Ubuntu 实例访问文件,那么可能有点复杂,因为你需要将该vhdx
文件挂载到 Ubuntu。我自己没有这样做过,但有些人看到这个答案在 Ask Ubuntu 上寻找可能性。
重要的:如果ext4.vhdx
使用此方法访问,请确保您正在使用辅助副本,因为 Ask Ubuntu 上的其他问题表明可能性使用这些工具来防止腐败。