有没有办法在非 C 盘安装 WSL?

有没有办法在非 C 盘安装 WSL?

由于 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,然后单击结果旁边的三个点按钮,应该看起来像这样:

Ubuntu 安装 thingo

单击移动,然后选择驱动器....转到开始菜单(或按 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包。选择适合您的体系结构(通常是)的包_x64Expand-Archive该包。

    请注意,如果您使用的是 PowerShell Core,则可以直接使用Expand-Archiveappx文件。否则,您需要.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直接包含一个。

  1. swapFile[可选] 我们可以放置一个 .wslconfig,根据以下内容明确更改位置WSL 文档 (我没有测试swapFile当我们改变安装位置时是否会自动改变位置)。

  2. 只需单击 Microsoft Store App 中的 Ubuntu 22.04 安装按钮(仅下载 appx 包,当我们第一次在 StartMenu 中单击 Ubuntu 时就会触发安装)。

  3. 然后通过 Everything 应用程序搜索install.tar.gz,惊喜的是如下内容:来自 Macrosoft 商店的 Expand-appx

  4. 将所有文件复制到D:WSL\appx或者你喜欢的地方,点击<distribution>.exe安装,然后ext4.vhdx会创建一个如下文件:安装后

  5. 最后从 StartMenu 触发卸载,删除 dirve-C 中的包。

相关内容