在Windows中运行Linux听起来就像是愚人节的笑话,但是这却变成了现实,微软的官方项目Primordial已经能够在Windows 10中翻译Linux系统指令并原生运行包括shell等核心Linux工具。
Primordial这个单词的意思是“初始”,这个项目目前就和它的名字一样还处于比较原始的状态,但它的前途是大有希望的。不过在使用它之前,有四个关键问题要注意:
1.要想正常使用这个子系统,你会碰到一些障碍,可能需要多等一些时间
如果你喜欢在Linux中使用命令行操作,那么你肯定认为自己是一个电脑专家。Windows中的Linux子系统同样考虑到了这一点,它必须通过一个隐藏的“专家用户”的入口才可以进入。也就是说,你需要使用build 14316 或更高版本的Fast Ring开发者版本Windows 10通过Windows Insider程序进入。
在这里请注意,如果你已经成为Fast RingInsider,可能还要等上几天,让build 14316推送到你的系统。据我所知目前还没有能够快速获得最新版本的ISO镜像文件的办法。
开始运行build 14316之后,进入设置>更新与安全性>开发者专用,选择开发者模式。然后在搜索框中输入“Windows功能”并且选择“打开或关闭Windows功能”,接下来选择“Windows的Linux子系统(Beta)”。
安装完成之后,在提示命令窗口中输入bash,你就可以受邀从Windows商店中下载并安装Bash(不要在Windows商店的界面里寻找Bash,你不会找到的)。完成之后,只要在Windows的CLI命令行窗口中输入bash命令,就会弹出并进入Linux子系统了,启动命令行窗口,在这里你可以用Linux指令启动其他应用程序,比如vim。
运行在Linux子系统中的vim编辑器
2.这些都是真正的Linux二进制文件,并且以二进制运行
当微软在Build2016大会第一次宣布这一项目时,它特意强调说这个Linux子系统并不是一个虚拟机,而是一个转换层,Linux二进制文件能够在其中正常运行,并且项目会将Linux系统调用翻译为类似于Windows的系统调用。
关于这一点有好有坏。好的方面是大多数的Linux二进制文件--只要它们是为Ubuntu Linux编译的--都可以安全正常的运行,就如同在Ubuntu中一样,包文件可以通过apt下载。而且有一些勇敢的先行者已经开始在其中运行gcc了,虽然能否在这个子系统之中正常编译Linux应用程序还无从得知。
在Reddit上已经出现了一些讨论,关于在这个子系统中大胆的试运行各种Linux应用,并且记录试验是否成功。
Linux子系统中的二进制文件是完全真实的,其他的二进制文件也可以获取并且添加至系统中,但是目前还无法保证它们可以正常工作
3.仍然缺乏一些主要功能
微软希望能够在这个Linux子系统的第一个迭代版本中提供给开发者那些他们最常使用的工具,包括bash shell、ssh远程连接工具还有许多其他工具,但这并不意味着你能够在其中运行Docker或者虚拟机。
然而另一方面,你应该会对它所能完成的工作感到惊讶,因为这只是一个最早期的版本。在上文提到过的Reddit讨论中,已经有用户报告说Apache Web Server能够启动,虽然问题很多并且只能在本地的局域网络中正常工作,但实际工作状况还是令人满意的。同样,xorg客户端也能够在X Windows中运行,虽然还需要进行手动配置并且在Windows主机上安装X显示服务器。
4.不要期望Linux和Windows应用能够直接对话
在子系统中运行的Linux应用并不知道它们是在一个子系统中运行,对于它们来说,整个宇宙就是这个Linux系统。这些Linux应用程序并不会知道外面的Windows应用程序的存在。而随着时间的推移,Windows应用很可能会先了解一些内部Linux应用的相关信息,不过这要取决于微软将会怎样扩展这个Linux子系统的功能,以及将来会推出哪些API。
也就是说,在目前的状况下,Linux应用只能通过两种方式向Windows的世界传递消息。第一种是通过网络,不过这样也需要一个Windows应用来监听另一端发过来的数据。第二种是通过文件系统,让Linux子系统自动在/mnt下创建挂载点,并且映射到Windows的驱动器。目前看起来在Linux子系统中并不能直接创建外部文件--这或许是设计或者是权限的问题--但是可以读取并且修改现有的文件。
原文标题:What to know before using Windows 10’s new Linux system,作者:Serdar Yegulalp