由于 SSD 空间有限,我无法让C:
Windows 应用商店默认将 WSL(适用于 Linux 的 Windows 子系统)安装在我的主驱动器上。
我可以将 WSL 安装在不同的驱动器上吗?我在 Google 上搜索过,但没有提到这个问题。
答案1
是的。首先,记下您要安装的发行版的 URL此列表, 前任:https://aka.ms/wslubuntu2204
现在打开 PowerShell:
# Substitute the drive on which you
# want WSL to be installed if not D:
Set-Location D:
# Create a directory for our installation and change to it, we'll call it WSL:
New-Item WSL -Type Directory
Set-Location .\WSL
# Make downloads faster by not displaying progress bar:
$ProgressPreference = 'SilentlyContinue'
# Using the URL you found above, download the appx package:
Invoke-WebRequest -Uri <appx_package_url> -OutFile Linux.appx -UseBasicParsing
# Make a backup and unpack:
Copy-Item .\Linux.appx .\Linux.zip
Expand-Archive .\Linux.zip
# Search for the installer:
Get-Childitem -Filter *.exe
您可能会找到一个名为的文件<distribution>.exe
。运行该文件,WSL 发行版应该安装在另一个驱动器的解压文件夹中。如果您没有看到可执行文件,让我们寻找一个刚刚解压的 .appx 文件,这是您想要的版本,然后解压它,如下所示:
Set-Location Linux
# look for correct appx file:
Get-Childitem -Filter *.appx
# rename to .zip so that Expand-Archive will work
ren .\Ubuntu_2204.1.7.0_x64.appx .\Ubuntu_2204.zip
Expand-Archive .\Ubuntu_2204.zip
Set-Location .\Ubuntu_2204
# Now exe should exist:
Get-Childitem -Filter *.exe
# run it
.\ubuntu.exe
您现在可以删除除ext4.vhdx
(对于 WSL2、rootfs
对于 WSL1)和ubuntu.exe
启动该发行版并可以更改默认用户名的文件之外的所有内容。
答案2
对此问题似乎有一个更简单的答案,至少在 Windows 11 上,如果你真的不想在脑子里运行 powershell 命令的话。
基本上,安装一个发行版。例如:
wsl --install -d Ubuntu
取消注册:
wsl --unregister Ubuntu
这会删除您的“根”驱动器,但不会删除 ubuntu 映像。
转到设置>应用程序>应用程序和功能,搜索 ubuntu,然后单击结果旁边的三个点按钮,应该看起来像这样:
单击移动,然后选择驱动器....转到开始菜单(或按 Windows 键或任何适合您的键),搜索 ubuntu 并运行它,启动安装程序。
它所做的一切现在都将在您选择的驱动器上,包括正在运行的磁盘映像。
答案3
我很喜欢@Wasif 的回答,但我会添加一些似乎不适合编辑的其他细节:
首先,最重要的是,正如评论中指出的那样,
<distribution>.exe
通常不再存在直接地在 Appx 包中。您下载的 Appx 现在是微软软件包可以(在本例中确实如此)包含适用于多种体系结构的软件包。对于大多数发行版,在 之后Expand-Archive
,您会发现几个额外的 Appx 文件,但没有.exe
。例如,以下是 Ubuntu 20.04 软件包的内容:Directory: D:\WSL\instances\Ubuntu\installer\Linux Name ---- AppxMetadata AppxBlockMap.xml AppxSignature.p7x Ubuntu_2004.2021.825.0_ARM64.appx Ubuntu_2004.2021.825.0_scale-100.appx Ubuntu_2004.2021.825.0_scale-125.appx Ubuntu_2004.2021.825.0_scale-150.appx Ubuntu_2004.2021.825.0_scale-400.appx Ubuntu_2004.2021.825.0_x64.appx [Content_Types].xml
重要的是
_ARM64
和_x64
包。选择适合您的体系结构(通常是)的包_x64
和Expand-Archive
该包。请注意,如果您使用的是 PowerShell Core,则可以直接使用
Expand-Archive
该appx
文件。否则,您需要.zip
按照@Wasif 的回答建议将其重命名为。展开该档案后,您应该找到
<distribution>.exe
需要运行的文件。如果您担心磁盘空间,请注意从提取的存档中只需要两个文件:
<distribution>.exe install.tar.gz
您可以将它们移动到您创建的顶层目录(例如
D:\WSL
),并删除其他所有内容。我建议复制文件前运行它所.exe
在的位置最终将成为安装位置。安装后,您还可以删除
install.tar.gz
。您甚至可以删除<distro>.exe
,但您可能希望保留它。它既可用于运行发行版,也可用于更改默认用户名如果需要的话。请注意,以这种方式安装不会为发行版创建 Windows 开始菜单项。仍然可以手动设置一个指向
wsl.exe
(对于默认发行版)或wsl ~ -d <distroname>
答案4
我找到了一种通过 Microsoft Store 获取 appx 包的技巧,其中<distribution>.exe
直接包含一个。
swapFile
[可选] 我们可以放置一个 .wslconfig,根据以下内容明确更改位置WSL 文档 (我没有测试swapFile
当我们改变安装位置时是否会自动改变位置)。只需单击 Microsoft Store App 中的 Ubuntu 22.04 安装按钮(仅下载 appx 包,当我们第一次在 StartMenu 中单击 Ubuntu 时就会触发安装)。
然后通过 Everything 应用程序搜索
install.tar.gz
,惊喜的是如下内容:来自 Macrosoft 商店的 Expand-appx将所有文件复制到
D:WSL\appx
或者你喜欢的地方,点击<distribution>.exe
安装,然后ext4.vhdx
会创建一个如下文件:安装后最后从 StartMenu 触发卸载,删除 dirve-C 中的包。