我正在尝试在我的 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 安装涉及多个组件,并且是否可以“移动”或更改其安装位置对于每个组件都不同:
该
wsl.exe
命令(您主要询问的命令)已内置于 Windows 的最新版本中。您实际上没有(也不能)wsl.exe
通过以下任何方式安装或卸载实际的Windows功能或者应用程序和功能设置。安装 Windows 时它就存在。基本的 Windows Subsystem for Linux(某种程度上是“lxss”)也作为“Windows 功能”内置于 Windows 中。作为 Windows 功能,它可以启用或禁用,但据我所知不能卸载。正如你在我的帖子中看到的那样这里,这占用的磁盘空间非常小。
WSL2 虚拟机平台,这也是 Windows 的一个功能。
与所有其他 Windows 功能一样,您无法更改文件所在的位置。大多数文件位于 下System32
。启用该功能时您位于该目录中这一事实与此无关。
C:\Windows\System32\lxss
我不记得安装 Windows 时目录中有哪些文件。
Windows 中未内置的其他组件包括:
WSL2 Linux 内核。这实际上是卸载“Windows Subsystem for Linux 更新”时删除的内容。我同意它的名字很容易让人混淆。
此官方内核也安装在其他 WSL 二进制文件的子目录中,位于
C:\Windows\System32\lxss\tools
。虽然你无法更改安装此内核的文件夹,但你可以将其移动到另一个目录,并在你的视窗(非 Linux)用户配置文件目录,.wslconfig
其内容如下:[wsl32] kernel="C:\path\to\kernel"
您还可以编译额外的内核并将它们放在您喜欢的任何位置,指向您想要启动的内核
.wslconfig
。一个或多个 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
如果目的是改变特定分布的位置,那么这可能是最快和最安全的方法:
- wsl --terminate 发行版名称
- 将 ext4.vhdx 文件移动到 new_location
- wsl --unregister 发行版名称
- wsl --import-in-place distro_name ext4.vhdx_file_in_new_location
全部 4 个操作都是立即执行的。
答案3
这是最简单的方法
如果想要移动安装在 WSL 下的 Linux 发行版,请按照以下步骤操作:
通过以下方式查找您的 Linux 发行版:
wsl -l
这将列出所有已安装的发行版
假设已安装 Ubuntu。
- 打开窗口设置
- 然后打开应用程序选项卡
- 然后安装应用程序
- 您安装的发行版(我们这里是 Ubuntu)将列在这里
- 点击右侧的三个点图标
- 您将在子菜单“移动”中看到一个选项,点击它
- 将分发移动到所需位置
PS:正如其他人已经解释的那样,您无法将某个 Windows 功能移动到另一个驱动器,如果您真的因为存储空间问题而想要移动,您可以更改 Windows 安装本身的位置,即通过重新安装 Windows