将 WSL 文件存储到 C: 盘以外的驱动器中

将 WSL 文件存储到 C: 盘以外的驱动器中

刚刚在 Windows 10 中为 Ubunutu Linux 安装了 WSL。

我想知道如何将数据和我们在 WSL 中下载和使用的所有软件存储到另一个目录(例如 D: 驱动器),因为它会很快占用 Windows 上的 C: 驱动器

我应该移动整个文件夹吗?还是我必须在路径中进行任何其他配置

目前,我的 WSL 数据存储在 AppData 文件夹中
C:\Users\User\

答案1

不,您不能只移动 WSL 的安装目录。WSL 使用注册表项来枚举已安装的发行版/实例的列表。

虽然理论上您可以移动目录,然后更新注册表项,但由于以下几个原因,仍然不建议这样做:

  • 乱改注册表从来都不是“推荐的”(但有时是必要的)。

  • 您从商店安装的发行版有自己的预定义名称和位置。更改这些将使“启动器”(例如ubuntu.exe)混乱。重新运行ubuntu.exe(等等)可能会在检测到已移动时尝试安装第二个副本。

虽然没有办法“移动”现有的发行版,但有一些“多步骤”的解决方法,基本上可以归结为:

  • 复制将现有分布迁移至新位置并命名。
  • 删除(取消注册)旧的发行版。

好的,这就是“移动”的定义,是的,但是稍微复杂一些。

对于以下任何选项:

  • 首先,创建您希望新发行版所在的位置。我将D:\WSL\instances\Ubuntu_20.04_WSL2在这里调用它,但请在下面的命令中根据需要替换该目录。

  • 我们还将新发行版/实例命名为Ubuntu_20.04_WSL2,但同样,您可以根据需要进行修改。我选择该名称是因为它“看起来”不像 Store 安装程序将创建的预定义名称之一。这样,我们就可以避免 Store 版本(我们最终将删除)与您想要使用的“移动”版本之间的混淆。

  • 我还假设您现有的发行版名为Ubuntu

选项 1:WSL 预览方法

目前最简单的方法是如果您有:

  • Windows 11
  • 从 Microsoft Store 安装的“Windows Subsystem for Linux Preview”。
  • WSL2 实例(您已在问题中标记)。对于其他实例,请注意此方法不适用于 WSL1 实例。

WSL 预览版提供了一项新功能,允许您使用该选项wsl --import将现有 VHD 文件(WSL2 发行版的虚拟磁盘)直接连接到新实例/位置--vhd

  1. 退出任何正在运行的 WSL 发行版

  2. 从 PowerShell:

    wsl -l -v
    # Confirm name of existing instance
    
    # You seem to already know this part, but for others
    # Find the location of the the virtual disk:
    Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\ | ForEach-Object { (Get-ItemProperty $_.PSPATH) | Select-Object DistributionName,BasePath }
    
    wsl --shutdown
    wsl --import Ubuntu_20.04_WSL2 D:\WSL\instances\Ubuntu_20.04_WSL2 <package_directory_from_above>\ext4.vhdx --vhd
    
    wsl ~ -d Ubuntu_20.04_WSL2
    
  3. 现在,您将进入位于 D 盘上的新“克隆”实例。但是,您会注意到您是 root 用户,而不是“默认”用户。请按照这个答案创建一个/etc/wsl.conf文件来设置默认用户。

  4. 一旦您确认新的发行版按预期工作,您就可以使用以下命令删除原始发行版:

    wsl.exe --unregister Ubuntu
    # or whatever the original distribution was named
    

选项 2:WSL 的早期版本

我刚刚意识到我已经在另一个中提供了这个(和上面的)方法的大部分内容在 Ask Ubuntu 上回答最近。步骤与上面的类似,但总结一下:

  • wsl --export现有的分布
  • wsl --import新的那一个
  • 设置用户名(如上)
  • wsl --unregister准备好后旧的(如上所述)
  • 如果需要,删除--exported文件。tar

请参阅询问 Ubuntu 的答案以了解完整详情。

相关内容