整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

我们用Windows官方跑了跑Linux GUI应用,不愧是“胶水操作系统”

晨 萧箫 发自 凹非寺
量子位 报道 | 公众号 QbitAI

现在,Windows不仅是最好的Linux发行版,还是最好的Linux桌面了。

怎么回事?

原来是Windows官方的Linux子系统(WSL),终于支持Linux GUI了!

也就是说,你现在可以直接在Windows系统中运行喜欢的GUI编辑器&工具,来构建和测试Linux应用程序。

所以在“咕咕咕”一年后,微软终于实现了去年Build开发者大会上立下的flag:

  • 在Windows里运行Linux的IDE开发Linux程序
  • 在Windows里运行只支持Linux的GUI程序,或者在Linux环境测试你的程序
  • 支持GPU 3D加速

……

那么,实际上手体验后,效果究竟如何呢?我们帮你测试了一下。

使用体验

要使用WSLg,首先要加入Windows预览体验计划,并选择Dev渠道。

接下来将系统升级到最新预览版。

如果已经安装过WSL直接运行“wsl —update”就可以了。如果没有安装过,运行“wsl —install”就会默认安装最新带WSLg的版本。

△不指定发行版的话默认安装Ubuntu

下载好之后需要重启,重启后就会自动安装了。

在Linux子系统里装了几个基础程序后回到Windows一看,好家伙,直接出现在开始菜单里了。

△但是图标怎么都是小企鹅?

随便打开一个Gnome文件管理器试试。

拖动窗口和拖拽选取的时候还是能明显感觉到有一点掉帧(Surface Book 2)。

接下来安装VS Code的WSL插件。

在WSL里装个PyQt,写个最简单的demo,成功运行,跨平台调试以后就方便了。

电脑配置好的话也可以在WSL里安装Linux环境的开发工具。已经有人试过Pycharm的社区版是可以运行的。

调试的时候如果出现错误,安装一些依赖就行。

sudo apt-get install build-essential autoconf libtool

“最棒的Linux桌面”

这个名为WSLg的功能,目前相关代码已经开源,geek们又有的玩了。

具体到显示服务上,WSLg同时支持X11和Wayland两种协议,能通过微软内置的远程桌面进行连接。

据微软表示,相比之前的第三方实现,WSLg更加稳定方便。(毕竟是官方钦定)

WSLg基本上是以Wayland为基础开发的一个Linux桌面,并通过托管XWayland服务器,来支持X11应用程序。

微软选择了Weston,来作为WSLg的核心,即Wayland合成器的参考实现,包括一个重度扩展的RDP后端、一个RAIL/VAIL shell和一个X Window管理器。

换而言之,如果一个Linux程序能在Linux的Weston合成器中正常工作,那它也能在WSLg中正常工作。

如下图,是WSLg的整体结构。

这一架构的部分技术细节如下:

首先,是重度扩展RDP后端实现的功能。

例如,远程传输能在单个窗口显示,而非整个桌面。开发者采用RDP RAIL技术,将远程Linux应用程序集成到本地桌面上;同时,采用VAIL技术进行传输,在主机和客户端之间共享内存。

又或者,让Linux应用程序能在Windows桌面上实现缩放,以支持多显示器配置,同时支持单个显示器的DPI(图像输出分辨率)缩放。

值得一提的是,这次还增加了剪贴板功能,能在Linux和Windows应用程序之间直接复制文本、html和位图数据,比虚拟机更方便。当然,目前还不支持拖放操作。

然后,这次还增加了对音频输入和输出的支持

开发者编写了小型插件,用于在PulseAudio和RDP后端之间传输音频数据,让音频流通过RDP传输集成到本地或远程RDP客户端。

此外,还有后台 (用于启动、暂停Weston核心,以及建立到主机的RDP连接,并在传输中止时重启)、以及应用程序管理插件 (卸载、安装Linux应用)等功能。

不过,目前的“预览版”WSLg,仍然采用服务器端来移动和调整窗口大小,导致窗口移动和调整不像在本地操作一样流畅。

软件以外,WSLg还支持OpenGL应用程序的加速,可以运行更复杂的3D应用程序。

微软员工Steve Pronost做了一个简单的性能测试,独立显卡和核显加速效果都很明显。

而在今年早些时候,微软还在WSL中加入了机器学习的API DirectML。

加上现在GPU和Linux GUI应用程序也都已经支持,在WSL2上能直接运行英伟达CUDA加速功能,可以加速cuDNN、cuBLAS、TensorRT等CUDA-X库。

这意味着开发者能直接在WSL上训练神经网络,不必再单独安装一个Linux系统了。

WSLg的开发人员表示,他们会继续完善这个项目,改进用户体验。

套娃开始

现在Windows可以运行Linux程序了,Linux也早就能运行Windows程序了。

脑洞大的网友想到这已经坐不住了:如果在WSL下运行Wine,是不是等于套娃了一个Windows?

先来一个简单的,在WSLg里的Linux下跑一个Wine下的IE。

注意看时间,8分钟以后,这事就收不住了:WSLg下Linux的Chrome里跑一个JavaScript写的Windows3.1。

另外有消息称,微软在WSL的基础上正在开发安卓子系统。

没想到Windows成了一个“胶水操作系统”。

参考链接:
[1]https://devblogs.microsoft.com/commandline/the-initial-preview-of-gui-app-support-is-now-available-for-the-windows-subsystem-for-linux-2/
[2]https://devblogs.microsoft.com/commandline/wslg-architecture/
[3]https://www.hanselman.com/blog/can-you-really-develop-with-linux-gui-apps-on-windows-10-with-wslg-how-about-pycharm
[4]https://twitter.com/shanselman/status/1385381521679286276

— 完 —

量子位 QbitAI · 头条号签约

关注我们,第一时间获知前沿科技动态

前,我写过一个“WordPress的静态化方法”,使用的是一个名为cos-html-cache的插件实现。

这个插件非常简洁小巧,直接在原网站上生成首页和文章页的html文件,不过,这个插件只支持文章静态化,不支持页面、标签和分类的静态化,之后也再没有过更新。

后来,我想到过利用WordPress插件导出全静态化网站的方法,用这个方法,对于少量文章挺方便,但文章数量一旦多了,就经常出错。

后来,我看到有人在cos-html-cache插件的基础上又开发了一个插件,名叫Super Static Cache,我用了一下,发现其BUG较多,但Rewrite模式是可以正常使用的,在这个模式下,可以将首页、文章页、单页、分类页、Tag页都生成静态化文件,并保存在一个名为super-static-cache的目录下,直接复制这个目录即可得到一个静态化网站。

因此,一个更简单的生成静态化网站的方法来了,先在网站安装Super Static Cache,之后运行一个抓取网站的工具,这类工具很多,例如wget、sitemaps生成器之类的,把整个网站抓一遍(wget还能多生成一份),即可在super-static-cache的目录获取到网站的静态化Html文件。

wget在Windows、Linux、Mac都有,用wget下载网站的命令是:

wget -m 网站地址

我们每个人接触Linux之前,应该先接触的都是windows吧?但我们一般接触Linux后,习惯linux的管理和使用方法后,我们再回过头再来使用windows的时候,内心其实是拒绝的。我们会觉得图形好麻烦,图形好Low的感觉,这个时候我们差不多是一个linux的重度爱好者了。对于Linux是欲罢不能的,真是一个遇到贵妇一样的感觉,总是觉的她很神秘、很多我们想探索的地方。windows和linux作为杰出的系统代表,磕磕盼盼在所难免,他们之间也有很多不为人知的故事,今天我将梳理一下linux与windows之间那些剪不断理还乱的关系。

Linux系统与window系统的诞生

1991 年的十月,当初网络还不像现在这么普遍,上网的人大部分都隶属于一些研究机构,或者是大学里面的学生、教授。有一个名为 Linus Torvalds 的年轻芬兰大学生10月5号在新闻群组上发表了这样一封内容不怎么起眼的 POST:

Hello everybody out there using minix -

I'm doing a (free) operation system (just a hobby,won't be big and professional like gnu)for 386(486) AT clones.

而这封邮件也正式的向外宣布Linux 内核系统诞生,这段消息可以称为Linux 的诞生宣言,并且一直广为流传。因此10 月5 日对Linux 社区来说是一个特殊的日子,许多后来Linux 的新版本发布时都选择了这个日子。

Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用、也慢慢的成为家家户户最喜爱的操作系统。

Windows采用了图形化模式GUI,比起从前的DOS需要键入指令使用的方式更为人性化、便捷化。随着电脑硬件和软件的不断升级,微软的Windows也在不断升级,从古老的16位、32位再到现在流行的64位, 系统版本从最初的Windows 1.0 到大家熟知的Windows 95、Windows 98、Windows ME、Windows 2000、Windows 2003、Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10 和 Windows Server服务器企业级操作系统,不断持续更新,微软一直在致力于Windows操作系统的开发和完善。

其实从上述可以看到,windows早于linux出世,相当于兄长,但因为Linux的开源让他显得更加有活力,Linux的爸爸也是很励志的,大学期间就能写出这么棒的系统内核,着实鼓励着一大批程序员和系统管理员。

Linux系统与Windows系统的性能之争

Linux的性能是非常出色的,可以完全针对机器的配置有针对性的优化,而且Linux对于x86_64的支持领先Windows 不是一点半点。在相同平台上,优化过的Linux在性能方面确实远远超过Windows,所以国内的大部分企业服务器,使用的都是Linux平台。由于其优于windows的性能,让其成为市场的宠儿,对Linux技术有兴趣的可以看下:http://www.linuxprobe.com/chapter-00.html

另外从Windows的理念就可以知道了:不管你要不要,我都给你。在我看来,这是一种强硬的企业文化,我就是这么硬,反正你也不怎么懂我,这可能源于Windows系统对于家庭用户这些年来的绝对垄断。不管你是不是跑某种和GUI完全无关的关键服务,Windows GUI一定是要运行的,如果一个GUI的BUG导致了系统的崩溃,那只能说你太倒霉了。还有windows的商业气息更为严重,闭源一定程度影响了windows的发展,虽然Windows在近些年来一直再大力推崇开源。不过想对于普通个人用户的使用感受,windows还是非常出色的,他们的图形使用起来简洁明了。

自从Kernel 2.6之后,Linux对于线程的支持也好了很多,性能方面也更加出色,这些都是Linux长足的进步。而且经过全球资深的Linux爱好者的开发、优化,Linux确实可以承担起相当重要的角色了。公平的说一句,Windows的性能和稳定性比以前已经好了很多了,起码在某些地方完全是与Linux处于同样层次的。但是Windows的优化能力是十分有限的,因为MS为你做了很多事情,虽然你不想让他这么做,但是你也没的选择。对于多数比较“懒”的用户来说,这样也许很好,但是对于系统优化拥有固执追求的人来说,Windows并不适合。根据8/2法则,MS这样做在市场上是很聪明的,但是这种武断蛮横的方式,恐怕有不少人无法接受。

因此对于全球用户群体来说,windows在使用者上领先Linux。一定程度来说,用户无法根据自己的需求选择合适的模块,用户的专业知识受限,用户的使用需求限制,windows的使用者已经习惯了这种系统,他们能够接受这种闭源下的技术黑洞。但对于技术爱好者,我们更喜欢Linux这样更加纯净的系统,我们更喜欢弄清操作系统的本质,使用自己优化且定制的系统。

做运维是要学习Linux系统还是Windows系统呢?

很多同学问我,学习Linux好,还是学习windows好。这个问题其实不好回答,因为就企业需求来说,windows和Linux服务器企业都能用到,但Linux依靠安全稳定的应用性,使得其在企业服务器领域一直占有很大的优势,并且存在逐年增加的情况。

你可以选择两个都学习,然后对某一个深入学习,我目前就是这么一个状态。我们可能无法预料未来在企业当中,我们主要会遇到Linux还是windows,我们的服务器可能是做的windows的维护,也可能是linux的维护,当然现在的发展情况,我们更可能接触基于Linux的服务架构,我本人目前就在学习Linux系统相关知识,我选择红帽的rhce认证作为了学习Linux的切入点,我希望通过红帽这样一个系统化的培训过程,能够让我对Linux有一个系统化的了解,后续的深入探究会显得容易一些。

我目前了解的情况是我认识不少同学都是windows转向学习linux,对于他们来说,Linux显得更加有意思,更加有征服的欲望,我想主要还是市场的需求导致的。关于Linux的初步学习,我一直都希望能在做到系统化,我当初学习之时通过互联网,搜索到一本跟红帽有关的教材《Linux就该这么学》,我发现这本书籍很好的做到了Linux学习的系统化,对于Linux初学者而言,他们能够从这本书中很好的看到知识的脉络结构,为后续的学习打下坚实的基础。

windows和Linux在我们生活中都扮演者重要的角色,他们之间的关系我们不能一概而论,谁好谁差并没有一个绝对的定论。我们可以根据自己的需求,选择适合自己的操作系统,也正式因为他们之间的比较和战争,才能更好的推进操作系统的前行。windowns与Linux之间的战争就在于差异化满足人类的需求,他们是竞争者,也是好的同伴,因为感谢彼此的磕磕碰碰,才能彼此变得更加美好。我们无论选择站在战争的哪一方,我们都是受益者,因为这是一场没有伤害的信仰战争。