这周,我作为微软公司的特邀嘉宾参加了举办于旧金山的微软开发者大会。
对于我而言,我觉得这一切发生得有些太过突然了,因为我已经有将近十六年的时间没有使用过微软公司的Windows操作系统了。但是在几个月前,这一切确实发生了一些变化,因为我参与了微软公司和Canonical公司之间的一个秘密合作项目(这个项目实在是令人难以置信!)。关于这个项目的具体信息将会在今天揭晓,Kevin Gallo将会在本次开发者大会中的开幕主题演讲中给大家介绍关于这个秘密项目的具体内容。
Ubuntu是基于linux的免费开源桌面PC操作系统。Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的操作系统(主要由自由软件构建而成)。Ubuntu具有庞大的社区力量,用户可以方便地从社区获得帮助。而Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell。除此之外,Bash也是大多数Linux系统以及Mac OS X默认的shell,它能运行于大多数类Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现Windows的POSIX虚拟接口。
现在,Windows 10中的cmd.exe命令控制台将默认支持用户使用bash shell!
你明白我在说什么吗?如果不明白的话也不用担心,我在几个月前第一次听说这件疯狂的事情时也没有能够立刻理解其中的意义,直到我想了半天之后我才弄明白。
现在,让我们来慢慢梳理一下整个事情的脉络…
1. Windows 10的用户
2. 可以点击屏幕左下角的“开始”图标
3. 然后直接输入“bash”,按下回车键
4. 这条命令将会打开cmd.exe命令控制台的窗口
5. 命令控制台会直接运行Ubuntu中的/bin/bash
6. 用户将能够获取到Ubuntu用户空间的完整访问权限
7. 没错,我指的就是apt, ssh, rsync, find, grep, awk, sed, sort, xargs, md5sum, gpg, curl, wget,apache, mysql, python, perl, ruby, php, gcc, tar, vim, emacs, diff, patch…
8. 除此之外,用户还可以获取到Ubuntu中成千上万的源代码数据包
“没错,但这不就相当于在Windows中运行了一个Ubuntu虚拟机吗?”事实并非如此!这实际上并不是一个虚拟机,因为这里既不存在Linux内核,也没有相应的虚拟机系统管理程序。这仅仅是Ubuntu的用户空间而已。
那你可能还会有这样的想法:“好吧,所以这就是一个装在容器中的Ubuntu?”不是的!这也不是一个容器。这是在Windows中直接运行本地的Ubuntu代码。
“嗯,好吧!那这样的话,它应该是和cygwin类似吧?”不是的!Cygwin中包含有开源的实用程序,这些程序需要经过重新编译才能在本地Windows系统中运行。我们现在所讨论的是直接在Windows操作系统中运行Ubuntu ELF代码。
“也许它有点像一个Linux模拟器?”我很欣慰,现在大家终于有些明白了!微软公司的顶尖开发团队正在努力尝试在Windows操作系统中直接将Linux的系统调用请求实时转换成Windows操作系统的调用请求,其中还将会用到微软的搜索技术。很多Linux爱好者可能会认为这种行为有一些本末倒置了,没错,就是在本地Windows操作系统中运行Ubuntu代码。微软公司将这一机制称为“专为Linux设计的Windows子系统”。(但是,目前该系统的源代码仍未开源)
而且值得注意的是,研究人员在对这个子系统进行了分析之后发现,该系统的CPU,内存,以及IO设备的性能几乎与原操作系统的性能一样。
所以,作为一名系统工程师,我需要将Ubuntu的root文件系统重新封装成Windows的应用程序包(.appx文件)。这也就意味着,我必须使用微软的Visual Studio来克隆出一份应用程序样本,重新编辑几十个XML文件,然后制作出各种尺寸的.png图标。除此之外,似乎还有一大堆的事情要等着我去做!
由于我不是Windows平台的开发者,所以当我在Windows操作系统中使用Visual Studio时,我是非常痛苦的,我花费了好几个小时的时间来研究这个东西,在此过程中我还有多次想要将我的咖啡杯砸向显示器的冲动。
当我按下Win键,然后输入“bash”,按下回车键。我发现了应用程序的样本存储目录(/mnt/c/Users/Kirkland/Downloads),然后利用命令“cp -a”将这个目录拷贝了出来,并对目录文件进行了更新。Ubuntu的转换程序可以立刻将所有的图标转换成我所需要的格式和尺寸。接下来的工作Visual Studio都可以帮我完成,例如对数据包进行编译,并将其上传至Windows商店中。简直太棒了!
不知道你有没有注意到/mnt/c…这个目录下的工具真的非常的实用!Windows操作系统下所有的驱动器,例如C:就是在/mnt目录下直接加载其读写权限的。除此之外,你也可以直接在Windows的资源管理器中(C:UsersKirklandAppDataLocalLxssrootfs)查看到Ubuntu文件系统中的全部文件。
与此同时,在工作的过程中我可能还需要利用ssh来连接我其他的Ubuntu系统。为此,我们不再需要使用Putty了!我们可以直接在Ubuntu shell中使用ssh来实现远程连接。
当然了,apt安装和升级是不可或缺的。
是否所有的功能和组件都能够像我们预期的一样正常工作呢?不,事实并非如此,至少现在还不是这样。其中大多数的功能的确没有问题,但是有少部分的组件仍然存在着一些问题。
由于我们目前使用的系统版本为Ubuntu 14.04 LTS,所以我们期待在Windows商店中Ubuntu 16.04 LTS能够尽快上架,并替换掉Ubuntu 14.04 LTS。
最后,我猜测有些长时间使用Windows操作系统或者Ubuntu的读者可能还会有疑问,这样做到底有什么实际的意义?在过去的二十多年时间里,我一直都在为自由和开源软件而奋斗和努力,而软件开源这一趋势已经势不可挡了,微软公司对此也表示认可,而且微软也逐渐开始意识到了开放源码的重要性。实际上,对于微软公司而言,现在也是其步入开源世界的一个绝佳机会。从微软公司的发展前景来看,开源能够帮助他们更好地从Ubuntu和Linux等平台吸取优秀的发展经验。而且根据各种调查和用户研究所得出的结论,开源也是所有人所共同期盼的。
因此,如果你是微软公司的内部人员,或者你可以获取到这项技术的beta测试版,我希望你可以去尝试使用一下。请你在使用之后一定要将你的意见和建议告知我们!
如果你还想了解更多有关的信息,希望你能够关注我们的网站。我们将会在第一时间给大家带来最新的信息。