与 WSL1 不同,WSL2 的官方文档明确指出我应该将我经常从 Linux 访问的文件放在 Linux 文件系统下。但是,我还没有找到有关在 Windows 文件系统中 Linux 文件系统所处位置的设置的文档。
当然,%LOCALAPPDATA%
如果你(像我一样)将你的机器配置为具有最小C:\
驱动器和更大的驱动器,则默认位置(在 下的某个位置)不是最优的D:\
- 我宁愿将 Linux 文件系统放在那里,以利用所有空间。
我能以某种方式控制我的 Linux 文件系统的位置吗?
答案1
(我没有 WSL 2 可以尝试。)
WSL 支持导出和导入分布,如下所示:
wsl --export Debian C:\temp\Debian.tar
wsl --import MovedDebian C:\WSL\Debian C:\temp\Debian.tar --version 2
请注意我如何指定一个名为InstallLocation
( C:\WSL\Debian
) 的参数。请记住,在我的示例中,“Debian”发行版仍然存在,因此我在导入时选择了不同的名称。您可以使用该wsl
实用程序来管理您的 WSL 环境。
答案2
如果您想从 C: 驱动器 D: 移动 WSL2 Linux 发行版(Ubuntu),请按照以下步骤操作。
导出 Ubuntu
- mkdir D:\backup
- wsl——导出 Ubuntu D:\backup\ubuntu.tar
取消注册相同的发行版以将其从 C: 驱动器中删除:
- wsl——取消注册Ubuntu
导入 Ubuntu
- mkdir D:\wsl
- wsl——导入 Ubuntu D:\wsl\ D:\backup\ubuntu.tar
默认情况下,Ubuntu 将使用 root 作为默认用户,切换回之前的用户
转到 Ubuntu App Folder 运行命令来设置默认用户
- cd%用户配置文件%\ AppData \ Local \ Microsoft \ WindowsApps
- ubuntu config --default-user <用户名>
答案3
这是以 ubuntu18.04 为例。
上面有几个地方不够详细。希望这能有所帮助。
wsl --list --verbose
mkdir d:\backuplinux
wsl --export Ubuntu-18.04 d:\backuplinux\ubuntu.tar
wsl --unregister Ubuntu-18.04
mkdir d:\wsl
wsl --import Ubuntu-18.04 d:\wsl\ d:\backuplinux\ubuntu.tar
cd %userprofile%\AppData\Local\Microsoft\WindowsApps **(this is not needed if in path)**
ubuntu1804.exe config --default-user yourloginname
答案4
WSL2 的最新版本包含一个新wsl --import --vhd
选项,可以将现有 VHD(WSL2 发行版的虚拟 SDD 驱动器)直接复制到另一个位置。请注意,这仅适用于 WSL2 发行版,不适用于 WSL1。
还要注意的是,选择一个新的,复制的发行版有不同的名称。例如,如果您的发行版是“Ubuntu”,新名称可以是“my_Ubuntu”(我将其称为“ntd_Ubuntu”)。
退出 WSL(并且,如果使用它,请关闭 Docker Desktop),然后从 PowerShell(常规的非管理员终端)退出:
wsl --shutdown
# Find the location of the existing distribution:
Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\ |
ForEach-Object {
(Get-ItemProperty $_.PSPATH) | Select-Object DistributionName,BasePath
}
# Copy the <BasePath> of the distribution you want to copy
# to the clipboard so that you can paste it into the --import command
# below.
# Create a directory on the other drive for the distro
mkdir d:\WSL\distros\<new_distro_name>
wsl --import <new_distro_name> d:\WSL\distros\<new_distro_name> <BasePath>\ext4.vhdx --vhd
<new_distro_name>
WSL 将在 上的目录中创建一个名为 的新发行版D:
。
你可以通过以下方式启动此分发:
wsl ~ -d <new_distro_name>
由于它是一个新的发行版,因此需要告知 WSL 默认用户名。与此同时,它将以 root 用户身份启动。使用这个答案创建一个/etc/wsl.conf
文件来指定默认用户。
当你认为新发行版与旧发行版的工作方式相同时,你可以使用以下命令删除旧发行版:
# Warning: This is a destructive and unrecoverable operation
# Please ensure the correct distribution name
wsl --unregister <old_distro_name>
您可以使用以下命令将新分布设置为默认分布:
wsl --set-default <new_distro_name>