使用“打开或关闭 Windows 功能”向导安装适用于 Linux 的 Windows 子系统 (WSL)。打开此功能后,首次调用 Bash For Windows 时,它会声称正在从 Microsoft Store 下载软件。是否可以创建一些包含 WSL 安装所需所有文件的软件包,并让 Windows 在没有互联网连接的环境中使用这些文件安装 WSL?如果可以,如何操作?
答案1
无需网络连接即可安装 Linux 发行版
您可以 (1) 从 Windows 商店下载安装程序,或 (2) 下载分发文件并使用以下工具进行安装:lxRunOffline。如果您有分发文件,您可以使用 USB 驱动器或其他设备复制文件来进行安装。
从 Windows 应用商店下载安装程序
您可以下载使用 Powershell 从 Windows 应用商店安装。例如,你可以使用以下命令下载 Ubuntu 16 版本
PS> Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu.appx -UseBasicParsing
在上面的命令中,输出文件是Ubuntu.appx
。它必须以这种方式命名。您可以运行该应用程序来安装 Ubuntu。
PS> Ubuntu.appx
使用 LxRunOffline
首先,你必须下载一些发行文件。lxRunOffline 维基。
例如,要从 Microsoft Windows Store 安装相同的 Ubuntu 16,你可以从以下位置下载文件
https://lxrunoffline.apphb.com/download/UbuntuFromMS/16
然后,您可以使用 lxRunOffline 安装 Linux 发行版
# lxrunoffline install -n <name> -d <folder> -f <distribution file>
C:\wsl> lxrunoffline install -n copy -d c:\wsl\copy -f 16.04.2-server-cloudimg-amd64-root.tar.gz
要运行发行版,您可以使用相同的 lxRunOffline
C:\wsl> lxrunoffline run -n copy -w
使用 DistroLauncher
你可以使用一些 DistroLauncher。有许多基于微软的例子为 WSL 创建自定义 Linux 发行版。例如,您可以使用Yuk7 版本。
您必须下载分发文件和launcher.exe
。您必须将分发文件重命名为,rootfs.tar.gz
并将启动器重命名为您想要的分发名称。稍后您必须以管理员身份运行启动器(我以普通用户身份运行它时出现错误)
PS> ren launcher.exe mydistro.exe
PS> ren .\16.04.2-server-cloudimg-amd64-root.tar.gz rootfs.tar.gz
PS> .\mydistro
第一次运行启动器时,它会安装并运行发行版。下次,它会运行 Linux 发行版。
wslconfig
安装后,您可以使用或命令管理分发lxrunoffline
。
答案2
为 WSL 设置 Windows 后,您将需要安装合适的 WSL Linux 发行版。
您可以在 WSL 文档中找到有关 WSL Linux 发行版离线安装的说明,网址为:https://learn.microsoft.com/en-us/windows/wsl/install-manual。
但请注意,由于 WSL 发行版以 Windows 应用商店应用包的形式提供,因此您需要许可证才能激活该应用。如果您的计算机没有互联网连接,则当您尝试运行该应用时,该应用将无法启动,因为 Windows 无法获取许可证。Windows 事件日志将包含一个错误事件,向您提供详细信息。
本质上,您需要 APPX 包和许可证文件才能真正离线安装和激活 WSL Linux 发行版。这需要一个 Microsoft Business 帐户,您可以从中获取所需的应用程序许可证文件。要安装并激活 WSL,您不应使用 PowerShell cmdlet ,而应使用带有选项的Add-AppxPackage
cmdlet ,同时提供包和许可证文件。Add-AppxProvisionedPackage
-Online
真正的离线安装的解决方法是不安装 WSL 分发应用程序包,而是从具有 Internet 连接的计算机设置和导出 WSL 实例,然后在目标系统上导入映像。有关详细信息,请参阅https://learn.microsoft.com/en-us/windows/wsl/enterprise#creating-a-custom-wsl-image。