WSL 2简介

在最近的Build大会上,Microsoft推出了Linux的Windows子系统的第二个版本。 这是对原始WSL概念的重大改进,从将Linux系统调用转换为Windows到交付与Windows自己的内核一起运行的完整Linux内核。

这样做的原因很多,但最主要的原因很简单:每年交付两次的仿真器不可能跟上Linux内核中的变化,Linux二进制文件所依赖的变化。 如果Windows支持开发人员为云构建Linux应用程序,则它不仅需要一致性,还需要兼容。

[紧跟InfoWorld的新闻通讯,这些通讯是针对软件开发人员,分析师,数据库程序员和数据科学家的 | 从我们的会员专享内幕文章中获取专家见解 ]

WSL 2简介

WSL 2有两个重大发展。第一个是Microsoft致力于将Hyper-V虚拟化工具用作Windows中的隔离层,从而将其转变为通用的虚拟机管理程序服务。 第二个是与Docker密切相关的合作, Windows上的Linux容器 ,即LCOW。

LCOW是一切的起点,它使用Hyper-V托管一个瘦Linux内核,以在Windows服务器上运行带有Linux应用程序的Docker容器。 使LCOW成为Windows开发工具(尤其是Visual Studio Code的新远程开发功能)可以访问的无缝环境的大量工作,以使容器仍然像本机Windows代码一样运行的方式运行容器。

这种近乎原生的性能来自微软对Hyper-V所做的更改,以支持其作为Windows 10中的关键安全功能的新角色。Hyper-V承载着新的隔离式登录屏幕进程或运行仅支持Windows内核的具有Windows Defender Application Guard中浏览器所需的功能。 它也是最近引入的Windows Sandbox (可抛弃的Windows实例)之下的一层,可用于调试或检查可疑代码。

Hyper-V及其在这些新方案中如何托管代码的最大变化是与Windows调度程序的集成。 Windows现在可以管理虚拟机管理程序平台托管的所有进程,而不再像管理程序及其所有托管代码的进程那样使用Windows,而是像标准Windows应用程序一样自由运行。

以此为基础,不难看出LCOW如何成为WSL新方法的基础,该方法托管了Microsoft维护的完整Linux内核,并支持与旧WSL相同的Linux发行版。 预览版是Windows Insider版本的20H1系列中的版本,可通过Fast Ring渠道获得。

WSL 2现在拥有自己的文件系统。 使用9P协议 ,WSL的虚拟硬盘存储(使用Linux原生的ext4文件系统)可以与Windows共享(以及Windows与Linux一起使用CIFS)。 这使您可以将Visual Studio Code的远程开发和调试功能与Windows UI一起使用,但可以将Linux上运行的代码作为Linux工具链的一部分使用。

WSL的两个发行版之间有很多更改。 对于开发人员而言,最值得注意的是WSL 2现在拥有自己的根文件系统。 现在,您所有的Linux文件都需要存储在它们自己的根目录中,从而使它们可以更快地访问文件。 得益于Windows的9P支持,Windows可以直接访问新的Linux文件系统。 您可以从Linux Shell启动Windows Explorer或Visual Studio Code之类的工具,从而直接访问Linux文件。

WSL 2入门

您不需要新的WSL Linux发行版即可开始使用WSL 2 。 首先,从PowerShell或Windows功能控制面板启用20H1 Windows Insider版本随附的新虚拟机平台功能。 安装到位后,使用相同的工具启用WSL。 这将设置WSL 1和WSL 2支持。

从Windows应用商店下载您选择的WSL Linux发行版。 设置,解压缩发行版并添加用户帐户后,可以将其转换为与WSL 2一起使用。Microsoft已向Windows添加了一组新的wsl命令以帮助管理发行版。 从wsl -l -v开始以获取已安装发行版及其WSL版本的列表。 要将命令从WSL 1转换为WSL 2,请使用命令wsl –set-version <distroname> 2.要返回,请使用相同的命令,将版本号更改为1。

在WSL 2下启动Linux发行版与在WSL 1下启动一个Linux发行版相同。 在命令行中输入其名称,或从开始菜单中启动它。 有趣的是,Microsoft如何将WSL 2与新的开放源代码Windows Terminal集成在一起,当前可以从Windows Store获得Beta版。

WSL网络的更改

转向在Windows上使用Linux的基于虚拟化的方法已经改变了您访问基于Linux的网络应用程序的方式。 在WSL 1下,一切都属于同一网络; 使用WSL 2,Linux环境可以获得自己的动态IP地址。 在初始版本中,这意味着您必须使用VM的IP地址才能连接到服务。

微软已经表示,它正在努力简化这一过程,并已开始在WSL 2初始版本的最新更新中解决它。 这增加了对从Windows到WSL的基于本地主机的网络的支持,从而简化了对容器托管的应用程序和其他Linux服务的访问。 但是,它仍然只是一种方法,因此,如果不使用脚本来动态设置DISPLAY变量 ,就无法使用基于X的应用程序。

带上自己的Linux内核

最新版本中最大的变化也许是使用您自己的Linux内核作为Microsoft内核的替代品的能力。 .wslconfig文件中的内核选项用于设置将在启动时加载的内核的路径。 这将允许您使用自己的自定义内核,从而使您可以选择使用WSL开发嵌入式系统应用程序以及更熟悉的云托管代码。 这里有很多开发和测试的灵活性。 可以使用长期支持内核来开发代码,并可以使用例如您的云提供商的Kubernetes环境中使用的内核进行测试。

这种新方法存在一个重要问题,它可能会影响现有的开发环境。 Hyper-V是一种非常底层的工具,位于Windows之下。 除非您使用的任何其他虚拟化工具支持新的Hyper-V API,否则它们将不会在托管WSL 2的系统上运行。对于无法切换到可与Hyper-V一起使用的管理程序的用户,例如最新的VirtualBox版本或Google的Android模拟器,微软表示不会撤回原始的WSL。 相反,新的WSL命令行工具将允许您管理特定发行版本运行的版本。 例如,使用WSL 2,您可以拥有在WSL 2上运行的Pengwin Linux副本和在WSL 1上运行的Ubuntu版本。

使用WSL 2进行试验已经经历了有趣的几周。Microsoft简化了在Linux平台之间的切换过程,并且由于具有完整的Linux内核,因此无需担心兼容性。 另外一个好处是真正的本机Linux容器,不需要额外的管理程序层。 Visual Studio Code中的新功能在这里效果很好,可以将您的开发环境扩展到WSL虚拟机中。

唯一真正的问题? 随着WSL 2作为20H1 Windows 10版本的一部分进行开发,我们将不得不等到2020年5月才能在生产中使用它。 但是现在,我们终于在台式机上确定了Linux的发布日期。

From: https://www.infoworld.com/article/3412063/an-introduction-to-wsl-2.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值