Windows 11 这一波操作让程序猿们爱了爱了,突然觉得手里的 MacOS不香了
Windows 11 正式版于2021年10月5日发布,让我们从开发者的角度来看看,它是有多么的逆天。
先简单介绍一下WSL和WSLg。
WSL
2016年,微软在Windows 10周年更新中,引入了新的子系统WSL (Windows Subsystem for Linux ),它把基本的 Linux 系统带到了 Windows 10 中,用 Windows 的 API 构建一套 Linux 模拟器(模拟机制),动态地将 Linux 程序中的 system call 硬生生翻译成 Windows API 调用,达到二进制兼容 Linux 程序的目标。毕竟是内核设计的差异,这种模拟无法实现 100% 全部翻译,即使 100% 翻译了性能也可能打折扣。
WSLg
2019年,微软官宣了 WSL2,翻译系统调用的坑太大填不下去了,第二代 WSL 改成了真Linux内核套虚拟机的方式。从模拟到虚拟,一字之差,技术路线迥异,魔改起来更得心应手。微软调教的 Linux 内核配上自己家 HyperV,比起普通虚拟机搭配 Linux 发行版的效率高不少。WSL2 所用的Linux内核,也是开源的,项目地址:https://github.com/microsoft/WSL2-Linux-Kernel,适配 WSL2的 Linux 发行版也越来越多。
2020年build大会,微软立下了在 WSL 中支持 Linux GUI 程序的目标,并做了初步的演示。前面的 WSL 和 WSL2 已经很好地解决了在 Windows 中运行 Linux 命令行程序的问题,配上漂亮大气的 Windows Terminal 终端,大大提高 Windows 10 生产力,从 Mac 阵营多多少少争取了些粉丝过来。但微软有着更远的目标,要做就做全,大厂就是这么大气。
2021年4月,微软放出了在 WSL2 中支持 Linux GUI 程序技术的预览版产品,叫做 WSLg,并且开源,项目地址:https://github.com/microsoft/wslg,此次build 2021大会只是再次介绍了下。
WSLg 是 Windows Subsystem for Linux GUI 的缩写,意图在 WSL 中支持直接运行 Linux GUI 程序,界面和 Windows 桌面环境无缝集成。WSLg在预览版之后不久就发布了正式版。
Windows terminal 能自动检测到你本地安装的所有终端,还包括 Linux 子系统哦,通过 Settings 可以自定义你的终端。

终端窗口透明度调整(ctrl + shift + 鼠标滑轮),可以在终端窗口上面添加图片,方便区分不同终端。

alt + 单击 终端列表中的任意一个,会分屏显示。

Alt + enter 进入全屏模式,这些快捷键都可自己设置。
可自定义终端命令提示符。

通过简单一行命令安装不同的 Linux 系统,剩下的就全部交给它就好了,美哉美哉。
wsl --install Debian

查看当前 WSL 的状态,-v -> verbose
wsl --list -v
启动一个 Ubuntu 系统相当于秒开一个终端窗口,可同时运行多个 Linux 系统,被惊讶到了吗?
只能在 Linux 上面运行的GUI软件,现在也能用 Windows 体验了。例如,你在 Ubuntu 系统上安装了 giggle(Linux GUI app),你是可以在 Windows 里面直接使用它的,Windows 检测到后会在开始菜单中为我们新增一个快捷方式。
sudo apt-get install -y giggle

打开后的图形界面还是 Ubuntu 自己的,是一个无缝连接的远程桌面。

Linux 系统会自动挂载 Windows 上面的磁盘 /mnt/c,Linux 系统可以非常方便的访问 Windows 文件系统。

当然,我们也是可以在 Windows 中访问 Linux 文件系统。

在 Ubuntu 系统中打开 vscode 也是可以的哦,它自动安装 VS Code Server。

然后神奇的事情发生了,它会在 Windows 中打开 vscode,安装相应的 Linux 依赖包。

vscode 也标注了这是在和 Ubuntu 系统做交互。

vscode 的 TERMINAL 也是 Ubuntu 的。把不同事物中最美好的东西合并在一起来使用,世界和平了。

在 Ubuntu 系统中启动的服务,是可以直接在 Windows 中用 localhost + port 访问的。SO,作为开发者,它不香吗?

在Linux 命令行中用 mpv 视频播放器打开一个视频文件,声音是在 Windows 播放的。
mpv avideoforyou.mp4
WSLg 架构
微软做了个和WSL用户发行版(User Distro,如Ubuntu、Debian、openSUSE、CentOS等)平级的“WSLg System Distro”,这个Linux发行版原本是微软内部在Azure云上的Linux系统,叫做“CBL-Mariner”,现在经过精心剪裁一番魔改之后,专门干一件事——跑X Server。好了现在X Server有了,但图形界面是显示在WSLg System Distro里,怎么进到这个系统里看呢?微软在WSLg System Distro里加了远程桌面服务套件——FreeRDP,一个支持Windows远程桌面协议(RDP)的服务端,如果是在Windows里装Linux虚拟机的话,可以用Windows自带的远程桌面客户端和虚拟Linux系统中的FreeRDP通信。就这样,通过Windows -> RDP -> X Server一层套一层,把图形窗口“无缝”地集成到了Windows桌面环境中,整个形成了下图的架构。
上面提到WSLg里的X Server其实说法不准确,应该叫Wayland Compositor(就是Wayland官方给出的参考实现Weston)。
Weston可以对接Wayand客户端程序,但传统的X11客户端程序也不可忽视,可以通过XWayland进行协议转换,最后都交到Weston来显示图形窗口,这样同时支持Wayland和X11客户端程序。

总之,现在在 Windows 和 Linux 系统之间无缝来回切换的成本已经非常之低了,大家可以体验下 Windows 11,相信能给你带来一些惊喜,而且你只需要一行命令 wsl --install。

转发自微信公众号DevOpsMe

关注公众号,获取 Python 官方发布整套中文PDF文档(共27本)+ Shell 高级编程指南

浙公网安备 33010602011771号