WSL 安装位置的更改

WSL 安装位置的更改

我正在尝试在我的 PC(Windows 10)上安装适用于 Linux 的 Windows 子系统。我以管理员身份运行它打开了一个“命令提示符”窗口,并在wsl --install不更改初始默认文件夹的情况下运行C:\Windows\system32。因此,WSL 默认安装在这个位置。

后来,我通过以下方式卸载了 WSL:设置->应用程序和功能->适用于 Linux 的 Windows 子系统更新->卸载

然后,我在 中下载并安装了 WSL Update C:\users\myaccount。但是,当我从开始菜单运行 WSL 时,它仍然转到C:\Windows\system32

有没有办法将 WSL 安装的默认位置移动到C:\users\myaccount。此外,我注意到C:\Windows\system32在从 卸载 WSL 后,WSL 仍然在文件夹中。设置->应用程序和功能

答案1

重要的是要了解 WSL 安装涉及多个组件,并且是否可以“移动”或更改其安装位置对于每个组件都不同:

  1. wsl.exe命令(您主要询问的命令)已内置于 Windows 的最新版本中。您实际上没有(也不能)wsl.exe通过以下任何方式安装或卸载实际的Windows功能或者应用程序和功能设置。安装 Windows 时它就存在。

  2. 基本的 Windows Subsystem for Linux(某种程度上是“lxss”)也作为“Windows 功能”内置于 Windows 中。作为 Windows 功能,它可以启用或禁用,但据我所知不能卸载。正如你在我的帖子中看到的那样这里,这占用的磁盘空间非常小。

  3. WSL2 虚拟机平台,这也是 Windows 的一个功能。

与所有其他 Windows 功能一样,您无法更改文件所在的位置。大多数文件位于 下System32。启用该功能时您位于该目录中这一事实与此无关。

C:\Windows\System32\lxss我不记得安装 Windows 时目录中有哪些文件。

Windows 中未内置的其他组件包括:

  1. WSL2 Linux 内核。这实际上是卸载“Windows Subsystem for Linux 更新”时删除的内容。我同意它的名字很容易让人混淆。

    此官方内核也安装在其他 WSL 二进制文件的子目录中,位于C:\Windows\System32\lxss\tools。虽然你无法更改安装此内核的文件夹,但你可以将其移动到另一个目录,并在你的视窗(非 Linux)用户配置文件目录,.wslconfig其内容如下:

    [wsl32]
    kernel="C:\path\to\kernel"
    

    您还可以编译额外的内核并将它们放在您喜欢的任何位置,指向您想要启动的内核.wslconfig

  2. 一个或多个 WSL 发行版。

    当您使用或从 Microsoft Store 安装发行版时wsl --install -d <distro>,它将默认安装在 中%USERPROFILE%\AppData\Local\Packages\<PackageName>。可以通过导出并重新导入来“移动”它们。

    从 PowerShell:

    mkdir D:\WSL\images # For example
    mkdir D:\WSL\instances\<newDistroName>
    cd D:\WSL
    
    wsl -l -v # Verify distro name to export
    wsl --export <distroname> .\images\<distroname>.tar
    wsl --import <newDistroName> .\instances\<newDistroName> .\images\<distroname>.tar
    wsl --set-default <newDistroName>
    

    您还需要通过文件在复制的实例中设置默认用户名,/etc/wsl.conf这个答案

    也可能是可能的强制将分发文件从您的AppData文件夹移动到另一个位置,然后更新注册表相应的注册表位置(HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss)。但是,我还没有测试过这个,也没有看到其他人尝试过。如果您想尝试一下,请确保您有上面的备份wsl --export

答案2

如果目的是改变特定分布的位置,那么这可能是最快和最安全的方法:

  1. wsl --terminate 发行版名称
  2. 将 ext4.vhdx 文件移动到 new_location
  3. wsl --unregister 发行版名称
  4. wsl --import-in-place distro_name ext4.vhdx_file_in_new_location

全部 4 个操作都是立即执行的。

答案3

这是最简单的方法

如果想要移动安装在 WSL 下的 Linux 发行版,请按照以下步骤操作:

通过以下方式查找您的 Linux 发行版:

wsl -l

这将列出所有已安装的发行版

假设已安装 Ubuntu。

  1. 打开窗口设置
  2. 然后打开应用程序选项卡
  3. 然后安装应用程序
  4. 您安装的发行版(我们这里是 Ubuntu)将列在这里
  5. 点击右侧的三个点图标
  6. 您将在子菜单“移动”中看到一个选项,点击它
  7. 将分发移动到所需位置

PS:正如其他人已经解释的那样,您无法将某个 Windows 功能移动到另一个驱动器,如果您真的因为存储空间问题而想要移动,您可以更改 Windows 安装本身的位置,即通过重新安装 Windows

相关内容