Windows系统

在Windows中启用全新WSL2 体验新版本的Linux on windows

继微软发布了 WSL 2 (Windows Subsystem for Linux 2)之后,前两天正式提供了 WSL2 更新,处于 Insider Fast 通道中的用户可以通过安装 Windows build 18917 更新来体验最新版本的 WSL2。

在这篇文章中,我们将介绍如何入门、新的 wsl.exe 命令以及一些重要提示。有关 WSL 2 的完整文档可在微软的文档页面上找到。

先行警告:由于架构变化,启用WSL2会调用Hyper-V,这将导致VMWare等其他品牌虚拟机软件不可用!!!

例如VMWare会提示“VMware Workstation 与 Device/Credential Guard 不兼容”。

安装 WSL 2

要安装并开始使用 WSL 2,请完成以下步骤:

  • 启用“虚拟机平台Virtual Machine Platform”可选组件以及WSL子系统
  • 使用命令行设置要由 WSL 2 支持的发行版
  • 验证你的发行版使用的 WSL 版本

请注意,你需要运行 Windows 10 build 18917 或更高版本才能使用 WSL 2,并且你需要安装 WSL(可以在此处找到相关说明)。

启用“虚拟机平台”可选组件

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

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

以管理员权限启动 PowerShell,然后输入以下命令启用 Linux 子系统功能:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

启用这些更改后,你需要重新启动计算机。(当然,这个命令跟你在控制面板中启用“适用于 Windows 的 Linux 子系统”功能是一样的。)

在Windows中启用全新WSL2 体验新版本的Linux on windows插图

使用命令行设置要由 WSL 2 支持的发行版

在 PowerShell 中运行:

  1. wsl --set-version Distro 2

并确保将 【Distro】 替换为发行版的实际名称。 (你可以使用以下命令找到它们:wsl -l)。 你也可以通过运行与上面相同的命令随时更改回 WSL 1(即WSL降级),但将“2”替换为“1”。

此外,如果你想使 WSL 2 成为默认架构,可以使用以下命令执行此操作:

  1. wsl --set-default-version 2

这将使你安装的任何新发行版初始化为 WSL 2 发行版。

完成验证发行版使用的 WSL 版本

要验证每个发行版使用的 WSL 版本,请使用以下命令:

  1. wsl --list --verbose
  2. wsl -l -v

你在上面选择的发行版现在应该在“version”列下显示“2”。 现在完成了,你随时可以开始使用你的 WSL 2 发行版了!

WSL 2 的体验变化

首次开始使用 WSL 时,你会注意到一些用户体验变化。以下是此预览中两个最重要的变化。

将 Linux 文件放在 Linux 根文件系统中

确保将 Linux 应用程序中经常访问的文件放在 Linux 根文件系统中,以享受文件性能优势。过去微软一直强调在使用 WSL 1 时将文件放入 C 盘,但 WSL 2 中的情况并非如此。要享受 WSL 2 中更快的文件系统访问权限,这些文件必须放在 Linux 根文件系统里面。而且现在 Windows 应用程序可以访问 Linux 根文件系统(如文件资源管理器!尝试在 Linux 发行版的主目录中运行:explorer.exe . 看看会发生什么),这将使这种转换变得更加容易。

在初始构建中使用动态 IP 地址访问 Linux 网络应用程序

WSL 2 做了架构的巨大变更,使用了虚拟化技术,并仍在努力改进网络支持。由于 WSL 2 现在运行在虚拟机中,因此你从 Windows 访问 Linux 网络应用程序需要使用该 VM 的 IP 地址,反之亦然,你需要 Windows 主机的 IP 地址才能从 Linux 中访问 Windows 网络应用程序。 WSL 2 的目标是尽可能使用 localhost 访问网络应用程序!可以在文档中找到有关如何执行此操作的完整详细信息和步骤。

在WSL中默认是不支持AF_PACKET的,这也就导致了类似于nmap、tcpdump、wineshark等Linux网络应用无法在WSL下正常运行,并且会提示诸如“Socket type not supported”,“Couldn’t open a raw socket”等错误信息。在WSL2中如上所述启用了全新的网络支持,所以预计该问题会得到解决。

在Windows中启用全新WSL2 体验新版本的Linux on windows插图1

要了解有关用户体验更改的更多信息,请参阅文档:WSL 1 和 WSL 2 之间的用户体验变化

要了解nmap/tcpdump/wineshark等无法运行的问题,请参阅文档:https://github.com/microsoft/WSL/issues/1628

新的 WSL 命令

WSL 添加了一些新命令选项来帮助控制和查看 WSL 版本和发行版。

除了上面提到的  --set-version 和 --set-default-version 之外,还有:

  • wsl --shutdown立即终止所有正在运行的发行版和 WSL 2 轻量级实用程序虚拟机。一般来说,支持 WSL 2 发行版的虚拟机是由 WSL 来管理的,因此会在需要时将其打开并在不需要时将其关闭。但也可能存在你希望手动关闭它的情况,此命令允许你通过终止所有发行版并关闭 WSL 2 虚拟机来执行此操作。
  • wsl --list --quiet仅列出发行版名称。此命令对于脚本编写很有用,因为它只会输出你已安装的发行版的名称,而不显示其他信息,如默认发行版、版本等。
  • wsl --list --verbose显示有关所有发行版的详细信息。此命令列出每个发行版的名称,发行版所处的状态以及正在运行的版本。默认发行版标以星号。

由 WSL2 降级至 WSL1 命令

在WSL2安装环节中已经提到过如何升级,由于之前提到过的WSL2不兼容性问题,所以在这里强调一下如何降级WSL2:

在 PowerShell 中运行:

  1. wsl --set-version Distro 1

并确保将 【Distro】 替换为发行版的实际名称。 (你可以使用以下命令找到它们:wsl -l)。在这里最后的参数“1”表示为降级至WSL1版本。

反馈意见

如果你遇到任何问题, 请在 Github 上提交问题: https://github.com/microsoft/wsl/issues ,如果你对 WSL 有一般性问题,你可以在这个推特列表上找到该团队所有成员的 Twitter。

 

译自:devblogs.microsoft.com作者: Craig Loewen
原创:LCTT https://linux.cn/article-10972-1.html译者: Xingyu.Wang