Tom*_*han 14 windows-subsystem-for-linux wsl2
与 WSL1 不同,WSL2 的官方文档明确指出我应该将我经常从 Linux 访问的文件放在 Linux 文件系统下。但是,我还没有找到任何关于 Linux 文件系统在 Windows 文件系统中的位置设置的文档。
当然,%LOCALAPPDATA%如果您像我一样将机器配置为具有最小C:\驱动器和更大的驱动器,则默认位置(位于 下的某个位置)不是最佳位置D:\-我更愿意将 Linux 文件系统放在那里,以利用所有这些空间.
我可以以某种方式控制 Linux 文件系统的放置位置吗?
小智 24
如果您想从 C: 驱动器 D: 移动 WSL2 Linux 发行版 (Ubuntu),请执行以下步骤。
导出 Ubuntu
取消注册相同的发行版以将其从 C: 驱动器中删除:
导入 Ubuntu
默认情况下 Ubuntu 将使用 root 作为默认用户,切换回以前的用户
转到 Ubuntu 应用程序文件夹运行命令以设置默认用户
小智 20
这是 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
Run Code Online (Sandbox Code Playgroud)
小智 12
本着同样的精神,这是 Windows 10 上的 ubuntu20.04 的示例。
它在我的桌面上进行了测试。它在我的 C 盘上节省了 30GB。
Ubuntu 磁盘位于 %userprofile%\AppData\Local\Packages
CanonicalGroupLimited.Ubuntu20.04onWindows_...\LocalState\ext4。
首先,关闭 wsl 并确认名称。
wsl --shutdown
wsl --list --verbose
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
Run Code Online (Sandbox Code Playgroud)
然后就可以导出tar文件并将其导入到D盘:
mkdir d:\backuplinux
wsl --export Ubuntu-20.04 d:\backuplinux\ubuntu.tar
wsl --unregister Ubuntu-20.04
mkdir d:\wsl
wsl --import Ubuntu-20.04 d:\wsl\ d:\backuplinux\ubuntu.tar
ubuntu2004.exe config --default-user yourloginname
Run Code Online (Sandbox Code Playgroud)
检查d:\wsl,ext4文件移到这里了。还要检查 C 盘上的可用空间。你应该看到很大的不同。
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
Run Code Online (Sandbox Code Playgroud)
<new_distro_name>WSL 将在目录中创建一个名为 的新发行版D:。
您可以通过以下方式启动此发行版:
wsl ~ -d <new_distro_name>
Run Code Online (Sandbox Code Playgroud)
由于它是一个新发行版,因此需要告知 WSL 默认用户名是什么。同时,它将以 root 用户身份启动。使用此答案创建一个/etc/wsl.conf文件来指定默认用户。
当您对新发行版与旧发行版的工作方式感到满意时,您可以使用以下命令删除旧发行版:
# Warning: This is a destructive and unrecoverable operation
# Please ensure the correct distribution name
wsl --unregister <old_distro_name>
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令将新发行版设置为默认发行版:
wsl --set-default <new_distro_name>
Run Code Online (Sandbox Code Playgroud)
(我没有 WSL 2 可以尝试。)
WSL 支持导出和导入发行版,如下所示:
wsl --export Debian C:\temp\Debian.tar
wsl --import MovedDebian C:\WSL\Debian C:\temp\Debian.tar --version 2
Run Code Online (Sandbox Code Playgroud)
请注意我如何指定一个名为InstallLocation( C:\WSL\Debian)的参数。请记住,在我的示例中,“Debian”发行版仍然存在,因此我在导入时选择了不同的名称。您可以使用该wsl实用程序来管理您的 WSL 环境。
| 归档时间: |
|
| 查看次数: |
12277 次 |
| 最近记录: |