
文章图片
WSL是个非常棒的系统 , 可以在Windows内核上直接运行Linux镜像 , 避免了通过虚拟机方式运行Linux 。 从而高效搞交互解决windows下运行Linux的问题 。 但是WSL图形交互功能不是很好 , 这对Windows用户来说这个显得略显生疏 。 为了解决这个问题 , 微软今年开源了WSLG系统 (Windows Subsystem for Linux GUI) 的 , 其目的是Windows上以完全集成的桌面体验运行Linux 桌面应用程序 。本文请和虫虫一起来学习一下WSLG系统 。
概述WSLG支持在Windows环境下需要运行在 Linux自己桌面工具或应用程序的开发人员、科学家或爱好者提供友好的交互和高效体验 。
WSLG 致力于让Linux GUI应用程序在Windows上使用起来感觉原生和自然 。 可以任务栏中、剪切/粘贴 , WSLG支持Windows和 Linux桌面应用程序的无缝体验的工作流程 。
系统架构WSLG基于WSL虚拟机 , Linux桌面个原生APP通过Xwayland , Pulse音频服务器 , 继承到Weston系统 , 再通过FreeRDP , WSLDVC Windows插件(mstsc.exe)和Windows交互 , 其架构图如下:
用户发行版用户发行版都在同一个 WSL 虚拟机中针对Linux内核的单个实例运行 。 PC上的不同用户拥有自己的VM和WSL实例 。 其Linux 环境是用户级的是无法与其他 Windows用户共享 。
系统发行版WSLG系统发行版整个架构的核心和交互中心 , 其实质是一个容器化的Linux环境 , 系统发行版基于 Microsoft CBL-Mariner Linux一个最小的Linux环境 , 用于以运行WSLG的各个部分 。 容器中运行WSLG XServer、Wayland 服务器和Pulse音频服务器 。 他们之间以及和用户发行版通过Soket进行通讯交互 。 用户发行版中预设了环境变量 DISPLAY、WAYLAND_DISPLAY 和 PULSE_SERVER用于应用这些组件服务 , 实现WSLG 开箱即用 。
用户可以通过在c:\\users\\MyUser\\.wslconfig中添加以下方法来关闭系统发行版:
[wsl2
guiApplications=false
每个WSL 2用户发行版都与其系统发行版实例配对 。 系统发行版与其配对的用户发行版部分隔离 , 在NS/PID/UTS命名空间中运行 , 但共享其他命名空间 , 例如 IPC允许跨边界共享内存优化 。
系统发行版的每个实例都从其支持的VHD中以只读方式加载 。 当WSL重新启动时 , 对系统发行版的内存实例所做的任何修改(例如安装新包或创建新文件)都会被丢弃 。
WSLGdWSLGd是在init之后启动的第一个进程 。WSLGd启动Weston (使用 XWayland)、 PulseAudio 并通过mstsc.exe主机上以静默模式建立RDP连接 。RDP连接将保持活动状态并准备好显示正在启动的新GUI应用程序 , 没有任何连接建立延迟 。WSLGd以守护进程凡事监听这些进程 , 避免他们由于错误退出 。
WestonWeston 是Wayland项目的参考合成器 , WSL的核心 。 在WSLG中对其扩展libweston 现有RDP后端 , 实现远程应用程序 。 WSLG还在其新增加了多显示器支持、剪切/粘贴、音频输入/输出等功能 。
应用程序集成是通过名为RAIL(本地远程应用程序集成)和VAIL(本地集成虚拟化应用程序)的RDP技术实现的 。 RAIL和VAIL之间的主要区别在于像素如何从RDP服务器传输到 RDP 客户端 。 在RAIL中 , 假设服务器和客户端运行在通过网络通信的不同物理系统上 , 因此需要通过 RDP 传输复制像素 。 在VAIL中 , Server 和Client位于同一个物理系统上 , 可以跨 Guest/Host VM边界共享内存 。
RAIL-Shell
WSLG中还引入了RAIL Shell用于帮助将单个窗口从Linux映射到 Windows , 该 shell 非常简单 , 不涉及任何实际的小部件或shell拥有的像素 。
FreeRDPWeston 利用FreeRDP来实现其后端RDP服务器 。 FreeRDP用于根据RDP协议规范直线RDP 服务器到RDP客户端(Windows 上的 mstsc)的所有通信进行编码 。它还用于解码从RDP客户端到RDP服务器的所有流量 。
Pulse音频插件对于音频输入(麦克风)和输出(扬声器/耳机) , WSLG 运行 Pulse音频服务器 。 WSLG 使用两个RDP插件的用于接收音频输出和音频输入 , 插件有效地在 Pulse Server和Weston RDP服务器之间传输音频样本 。 音频流由Weston RDP服务器合并到RDP传输上 , 从而有效地在所有场景(桌面/RAIL/VAIL 风格远程处理)中启用Weston RDP后端中的音频输入/输出 。
WSLDVCPluginWSLG在Weston RDP 服务器和Windows主机上运行的mstsc RDP客户端之间使用自定义虚拟通道 。 Weston 使用该通道枚举所有Linux GUI应用程序(即具有Gui 类型的桌面文件条目的应用程序)及其启动命令行和图标 。WSLDVCPlugin 处理通过此通道发送的Linux GUI应用程序列表 , 并在Windows开始菜单中为其创建链接 。
安装先决条件Windows 10 Insider Preview内部版本 21362+
WSLG 将与即将发布的Windows一起普遍可用 。 要访问 WSLG 的预览版 , 需要加入预览体验并从测试版或开发频道运行Windows 10预览版本 。
建议在为WSL启用虚拟 GPU (vGPU) 的系统上运行 WSLG , 以便可以从硬件加速OpenGL渲染 。 可以在下面找到合作伙伴提供的支持 WSL的预览驱动程序 。
从具有管理员权限的命令提示符运行命令
wsl --install -d Ubuntu
然后在出现提示时重新启动 。
已有WSL安装对于已经安了WSL的用户 , 并且想要更新到包含WSLG的最新版本的WSL , 可以运行命令
wsl –update
注意 , WSLG仅与WSL 2兼容 , 并且不适用WSL 1模式下的发行版 。 可以从通过命令提示符查询当前使用发行版和WSL版本 。
wsl --list -v
如果为WSL 1模式 , 需要切换到WSL 2:
wsl --set-version _distro_name_ 2
通过管理员模式命令提示符运行此命令来重新启动WSL , 确保首先保存所有挂起的工作:
wsl -shutdown
更新WSL + WSLG要更新到为预览发布的最新版本的WSL和WSLG , 只需从管理员模式命令提示符或powershell运行
wsl --update
需要重新启 WSL才能使更改生效 , 需要重启WSL
wsl -shutdown
运行桌面应用如果已经安装了Ubuntu按照这些说明进行 Linux 发行版 , 会找到一个Ubuntu开始菜单中的图标 , 启动它 。 这将启动WSL 2 VM在该VM中启动 Ubuntu WSL发行版 , 并为提供一个与之交互的终端 。
对于 Linux 发行版 , 可以使用 wsl --list --online命令从提升的命令提示符选择的可用的发行版 。
安装和运行 GUI 应用程序可以通过Linux终端运行以下命令来下载和安装一些流行的应用程序(Ubuntu为例) 。
更新可用包列表
## Update list of available packages
sudo apt update
## Gedit
sudo apt install gedit -y
## GIMP
sudo apt install gimp -y
## Nautilus
sudo apt install nautilus -y
## VLC
sudo apt install vlc -y
## X11 apps
sudo apt install x11-apps -y
## Google Chrome
cd /tmp
sudo wget google/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt install --fix-broken -y
sudo dpkg -i google-chrome-stable_current_amd64.deb
## Microsoft Teams
cd /tmp
sudo curl -L -o \"./teams.deb\" \" teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb\"
sudo apt install ./teams.deb -y
## Microsoft Edge Browser
sudo curl packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-dev/microsoft-edge-dev_93.0.946.1-1_amd64.deb -o /tmp/edge.deb
sudo apt install /tmp/edge.deb –y
安装这些应用程序后 , 就可以在开始菜单中的发行版名称下找到它们 。 例如 Ubuntu -> Microsoft Edge 。
终端中启动也可以使用命令从终端窗口启动这些:
xcalc xclock xeyes
gimp
gedit ~/.bashrc
nautilus
vlc
google-chrome
teams
microsoft-edge
总结【Linux|WSLG:微软开源WSL桌面APP增强】WSLG作为对微软子系统的图形增强工具 , 可以实现高效搞交互的Linux桌面应用使用 , 对不熟悉Linux Shell用户提供友好的橄榄枝 , 让其可以以更加熟悉的方式进行Linux使用和学习 。 该项目开源不到半年 , 其Github仓库(github/microsoft/wslg)就已经收获5.8k的星星 , 其受欢迎程度可见一斑 , 希望大家尝试 , 也可以对其提交PR参与贡献 。
- 走近跃迁 | WKJKB23接口板使用说明书
- Redmi K50超大杯也入网了,性能、拍照双提升
- 华为nova10系列渲染图曝光,后摄模组有所改变,前置药丸曲面屏
- 陈根:持续亏损的涂鸦智能,讲不好智能家居的故事
- 看看手机的发展,使感受科技的不断变化,给人们带来的改变
- 重磅上线!TikTok Shop东南亚可以货到付款了!
- 百元左右的国产键盘,轻松收纳到背包里,在家办公也能用
- 从“根”进行突破!华为正式宣布,美媒:将彻底改变历史!
- 2022年最好用的7款windows软件推荐
- 618结束了,各家旗舰现在什么行情?
