当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 将 WSL 移动到 Windows 中的另一个驱动器

作者:精品下载站 日期:2024-12-14 23:31:27 浏览:17 分类:玩电脑

将 WSL 移动到 Windows 中的另一个驱动器


Windows Subsystem for Linux(WSL2) 被开发人员、管理员和普通用户广泛使用,用于在 Windows 中运行不同的 Linux 发行版(Ubuntu、Debian、OpenSUSE、Kali Linux、Alpine)、工具和应用程序,而无需使用虚拟化和双启动。在本文中,我们将展示如何将现有 WSL 安装的文件移动到不同的驱动器或计算机。

在 Windows 中安装 WSL 时,所有环境文件都保存到系统驱动器 C:\。如果您的系统驱动器不够大(例如 SSD),WSL 文件系统的大小可能会显着增加,您可能需要将 WSL 移动到另一个驱动器或计算机。您可以通过多种方式移动 WSL 安装。

首先,获取当前驱动器上 WSL 文件系统的当前大小。列出计算机上已安装的 WSL 发行版:

wsl --list --verbose

[玩转系统] 将 WSL 移动到 Windows 中的另一个驱动器

在此示例中,仅安装了 Ubuntu-20.04。运行以下 PowerShell 命令以获取 Linux 发行版中的 UWP 应用的名称:

Get-AppxPackage -Name "*Ubuntu20*" | Select PackageFamilyName

在我的示例中,UWP 包的名称是 CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc。 Linux镜像的WSL文件系统位于ext4.vhdxVHD文件中

%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx

要使用 PowerShell 获取文件大小,请运行以下命令:


$path= $env:USERPROFILE+ "\AppData\Local\Packages\" + (Get-AppxPackage -Name "*Ubuntu20*").PackageFamilyName + "\LocalState\ext4.vhdx"
Get-ChildItem -Path $path | fl @{Label="SizeGb"; Expression={$_.Length / 1Gb}}

[玩转系统] 将 WSL 移动到 Windows 中的另一个驱动器

您可以尝试使用 Optimize-VHD cmdlet(来自 Hyper-V PowerShell 模块)减小 VHD 文件的大小。有时这就足够了:

optimize-vhd -Path <PATH_TO_VHD> -Mode full

WSL 发行版的 VHD 文件的路径存储在注册表项下的 BasePath 注册表参数中

HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss\{UUID}

[玩转系统] 将 WSL 移动到 Windows 中的另一个驱动器

您可以停止 WSL,将 ext4.vhdx 移动到另一个驱动器,然后更改注册表中目录的路径。但这种情况不推荐

在当前的 Windows 10 和 11 版本中,您可以使用内置的导出和导入过程正确迁移 WSL 环境。

运行WSL环境并检查用户名:

wsl
whoami

在我们的示例中,它是sysops

[玩转系统] 将 WSL 移动到 Windows 中的另一个驱动器

关闭在 Linux 环境和 WSL 控制台中运行的所有应用程序:

wsl --shutdown

为了备份(导出)您的 WSL 环境并将其保存到驱动器 E:,请运行以下命令:

mkdir e:\backup
wsl --export Ubuntu-20.04 e:\backup\ubuntu.tar

等待 WSL 导出结束(可能需要很长时间)。包含 WSL ext4 文件系统的 TAR 存档将出现在目标目录中。

[玩转系统] 将 WSL 移动到 Windows 中的另一个驱动器

然后您可以删除源磁盘上的 WSL 文件:

wsl --unregister Ubuntu-20.04

在新驱动器上为 Linux 映像创建一个目录,并使用以下命令将 TAR 存档导入到 WSL:

mkdir E:\WSL
wsl --import Ubuntu-20.04 E:\WSL\ E:\backup\ubuntu.tar

Ubuntu 的默认登录用户是 root。要将其更改为另一个用户名(我们之前得到的),请运行:

cd $env:USERPROFILE\AppData\Local\Microsoft\WindowsApps
.\ubunt4.exe config --default-user sysops

启动WSL环境:

wsl -d Ubuntu-20.04

[玩转系统] 将 WSL 移动到 Windows 中的另一个驱动器

提示。 您可以从 Windows 终端选项卡启动 WSL 发行版。

[玩转系统] 将 WSL 移动到 Windows 中的另一个驱动器

您可以使用相同的方案将配置的 WSL 映像移动到其他计算机。

您可以使用第三方实用程序 LxRunOffline (可在 GitHub 上获取 — https://github.com/DDoSolitary/LxRunOffline)在 Windows 中移动 WSL。您可以使用 Chocolatey 安装它:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
choco install lxrunoffline

列出可用的 WSL 图像:

lxrunoffline list

终止所有 WSL 进程:

wsl --shutdown

要获取当前目录,WSL 映像位于:

lxrunoffline get-dir -n Ubuntu-20.04

[玩转系统] 将 WSL 移动到 Windows 中的另一个驱动器

要将 WSL 映像移动到另一个磁盘:

lxrunoffline move -n Ubuntu-20.04 -d d:\wsl2\Ubuntu-20.04

迁移完成后,使用以下命令启动 WSL:

wsl -d Ubuntu-20.04

或者

lxrunoffline run -n Ubuntu-20.04 -w

在 Windows 11 中,您还可以将 Windows Subsystem for Andriod (WSA) 与 WSL 一起运行。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯