在 Windows 上运行 Linux 程序

安装适用于 Linux 的 Windows 子系统 (WSL) 时有两个选项:

  • 简化安装 (预览版) :wsl --install

    要使用 wsl --install 简化安装命令,你需要加入 Windows 预览体验计划 并安装 Windows 10 的预览版(OS 版本 20262 或更高版本),但不需要执行手动安装步骤。 只需使用管理员权限打开命令窗口并运行 wsl --install,重启后即可使用 WSL。

  • 手动安装 :按照下列 6 个步骤进行操作。

    下面列出了 WSL 的手动安装步骤,可按这些步骤在任意版本的 Windows 10 上安装 Linux。

Windows 预览体验计划的简化安装

在 Windows 10 的最新 Windows 预览体验预览版中,显著改进了适用于 Linux 的 Windows 子系统的安装过程,将以下手动步骤替换为单个命令。

要使用 wsl --install 简化安装命令,必须先完成以下操作:

  • 加入 Windows 预览体验计划
  • 安装 Windows 10 的预览版(OS 版本 20262 或更高版本)。
  • 使用管理员特权打开命令行窗口

满足这些要求后,可通过以下方式安装 WSL:

  • 在管理员模式下打开命令行,并输入以下命令:wsl.exe --install
  • 重启计算机

首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,要求你等待将文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 分发版创建用户帐户和密码

祝贺你!现已成功安装并设置了与 Windows 操作系统完全集成的 Linux 分发!

--install 命令执行以下操作:

  • 启用可选的 WSL 和虚拟机平台组件
  • 下载并安装最新 Linux 内核
  • 将 WSL 2 设置为默认值
  • 下载并安装 Linux 分发版(可能需要重启)

默认情况下,安装的 Linux 分发版为 Ubuntu。 可以使用 wsl --install -d <Distribution Name> 进行更改。 (将 <Distribution Name> 替换为所需分发版的名称。)初始安装后,可以使用 wsl --install -d <Distribution Name> 命令将其他 Linux 分发版添加到计算机。

若要查看可用 Linux 分发版的列表,请输入 wsl --list --online

手动安装步骤

如果你没有使用 Windows 预览体验版本,则需要按照以下步骤手动启用 WSL 所需的功能。

步骤 1 - 启用适用于 Linux 的 Windows 子系统

需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。

以管理员身份打开 PowerShell 并运行:

PowerShell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

建议现在转到步骤 #2,更新到 WSL 2,但如果只想安装 WSL 1,现在可以重新启动计算机,然后继续执行步骤 6 - 安装所选的 Linux 发行版。 若要更新到 WSL 2,请等待重新启动计算机,然后继续执行下一步。

步骤 2 - 更新到 WSL 2

若要更新到 WSL 2,需要运行 Windows 10。

要求

  • 对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本。
  • 低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。

若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 (或者在 Windows 命令提示符下输入 ver 命令)。 更新到“设置”菜单中的最新 Windows 版本

 备注

如果运行的是 Windows 10 版本1903 或 1909,请在 Windows 菜单中打开“设置”,导航到“更新和安全性”,然后选择“检查更新”。 内部版本号必须是 18362.1049+ 或 18363.1049+,次要内部版本号需要高于 .1049。 阅读详细信息:WSL 2 即将支持 Windows 10 版本 1903 和 1909。 请参阅疑难解答说明

步骤 3 - 启用虚拟机功能

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。

以管理员身份打开 PowerShell 并运行:

PowerShell
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重新启动 计算机,以完成 WSL 安装并更新到 WSL 2。

步骤 4 - 下载 Linux 内核更新包

  1. 下载最新包:

     备注

    如果使用的是 ARM64 计算机,请下载 ARM64 包。 如果不确定自己计算机的类型,请打开命令提示符或 PowerShell,并输入:systeminfo | find "System Type"

  2. 运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。)

安装完成后,请继续执行下一步 - 在安装新的 Linux 分发时,将 WSL 2 设置为默认版本。 (如果希望将新的 Linux 安装设置为 WSL 1,请跳过此步骤。)

 备注

有关详细信息,请参阅 Windows 命令行博客上的文章对更新 WSL2 Linux 内核的更改

步骤 5 - 将 WSL 2 设置为默认版本

打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:

PowerShell
wsl --set-default-version 2

 备注

从 WSL 1 更新到 WSL 2 可能需要几分钟才能完成,具体取决于目标分发版的大小。 如果从 Windows 10 周年更新或创意者更新运行 WSL 1 的旧(历史)安装,可能会遇到更新错误。 按照这些说明卸载并删除任何旧分发

如果 wsl --set-default-version 结果为无效命令,请输入 wsl --help。 如果 --set-default-version 未列出,则表示你的 OS 不支持它,你需要更新到版本 1903(内部版本 18362)或更高版本。

运行命令后如果看到此消息:WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel。 仍需要安装 MSI Linux 内核更新包。

步骤 6 - 安装所选的 Linux 分发

  1. 打开 Microsoft Store,并选择你偏好的 Linux 分发版。

    Microsoft Store 中的 Linux 分发版的视图

    单击以下链接会打开每个分发版的 Microsoft Store 页面:

  2. 在分发版的页面中,选择“获取”。

    Microsoft Store 中的 Linux 分发版

首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 分发版创建用户帐户和密码

Windows 控制台中的 Ubuntu 解包

祝贺你!现已成功安装并设置了与 Windows 操作系统完全集成的 Linux 分发!

安装 Windows 终端(可选)

Windows 终端可启用多个选项卡(在多个 Linux 命令行、Windows 命令提示符、PowerShell 和 Azure CLI 等之间快速切换)、创建键绑定(用于打开或关闭选项卡、复制粘贴等的快捷方式键)、使用搜索功能,以及使用自定义主题(配色方案、字体样式和大小、背景图像/模糊/透明度)。 了解详细信息。

安装 Windows 终端

Windows 终端

将分发版版本设置为 WSL 1 或 WSL 2

可打开 PowerShell 命令行并输入以下命令(仅在 Windows 内部版本 18362 或更高版本中可用),检查分配给每个已安装的 Linux 分发版的 WSL 版本:wsl -l -v

PowerShell
wsl --list --verbose

若要将分发版设置为受某一 WSL 版本支持,请运行:

PowerShell
wsl --set-version <distribution name> <versionNumber>

请确保将 <distribution name> 替换为你的分发版的实际名称,并将 <versionNumber> 替换为数字“1”或“2”。 可以随时更改回 WSL 1,方法是运行与上面相同的命令,但将“2”替换为“1”。

此外,如果要使 WSL 2 成为你的默认体系结构,可以通过此命令执行该操作:

PowerShell
wsl --set-default-version 2

这会将安装的任何新分发版的版本设置为 WSL 2。

排查安装问题

下面是相关的错误和建议的修复措施。 有关其他常见错误及其解决方法,请参阅 WSL 故障排除页

  • 安装失败并出现错误 0x80070003

    • 适用于 Linux 的 Windows 子系统只能在系统驱动器(通常是 C: 驱动器)中运行。 请确保分发版存储在系统驱动器上:
    • 打开“设置”->“系统”-->“存储”-> “更多存储设置”: 更改新内容的保存位置” 用于在 C: 驱动器中安装应用的系统设置屏幕截图
  • WslRegisterDistribution 失败并出现错误 0x8007019e

    • 未启用“适用于 Linux 的 Windows 子系统”可选组件:
    • 打开“控制面板” -> “程序和功能” -> “打开或关闭 Windows 功能”-> 选中“适用于 Linux 的 Windows 子系统”,或使用本文开头所述的 PowerShell cmdlet。
  • 安装失败,出现错误 0x80070003 或错误 0x80370102

    • 请确保在计算机的 BIOS 内已启用虚拟化。 有关如何执行此操作的说明因计算机而异,并且很可能在 CPU 相关选项下。
  • 尝试升级时出错:Invalid command line option: wsl --set-version Ubuntu 2

    • 请确保已启用适用于 Linux 的 Windows 子系统,并且你使用的是 Windows 内部版本 18362 或更高版本。 若要启用 WSL,请在 PowerShell 提示符下以具有管理员权限的身份运行此命令:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • 由于虚拟磁盘系统的某个限制,无法完成所请求的操作。虚拟硬盘文件必须是解压缩的且未加密的,并且不能是稀疏的。

    • 取消选中“压缩内容”(如果已选中“加密内容”,请一并取消选中),方法是打开 Linux 发行版的配置文件文件夹。 它应位于 Windows 文件系统上的一个文件夹中,类似于:USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited...
    • 在此 Linux 发行版配置文件中,应存在一个 LocalState 文件夹。 右键单击此文件夹可显示选项的菜单。 选择“属性”>“高级”,然后确保未选择(未勾选)“压缩内容以节省磁盘空间”和“加密内容以保护数据”复选框。 如果系统询问是要将此应用到当前文件夹还是应用到所有子文件夹和文件,请选择“仅此文件夹”,因为你只是要清除压缩标志。 完成此操作后,wsl --set-version 命令应正常工作。

WSL 发行版属性设置的屏幕截图

 备注

在我的示例中,我的 Ubuntu 18.04 发行版的 LocalState 文件夹位于 C:\Users<my-user-name>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc

请检查 WSL Docs GitHub 主题 #4103,其中跟踪了此问题以提供更新的信息。

  • 无法将词语“wsl”识别为 cmdlet、函数、脚本文件或可运行程序的名称。

  • 错误:此更新仅适用于装有适用于 Linux 的 Windows 子系统的计算机。

    • 若要安装 Linux 内核更新 MSI 包,需要 WSL,应先启用它。 如果失败,将看到以下消息:This update only applies to machines with the Windows Subsystem for Linux
    • 出现此消息有三个可能的原因:
    1. 你仍使用旧版 Windows,不支持 WSL 2。 有关版本要求和要更新的链接,请参阅步骤 #2。

    2. 未启用 WSL。 需要返回到步骤 #1,并确保在计算机上启用了可选的 WSL 功能。

    3. 启用 WSL 后,需要重新启动才能使其生效,请重新启动计算机,然后重试。

  • 错误:WSL 2 要求对其内核组件进行更新。若需了解相关信息,请访问 https://aka.ms/wsl2kernel 。

    • 如果 %SystemRoot%\system32\lxss\tools 文件夹中缺少 Linux 内核包,会遇到此错误。 若要解决此问题,请在安装说明的步骤 #4 中安装 Linux 内核更新 MSI 包。 可能会需要从“添加或删除程序”卸载 MSI,然后重新安装。
posted @ 2020-12-27 00:48  tianyamoon  阅读(2927)  评论(0编辑  收藏  举报