WSL 运行 Linux GUI 应用

浏览量:1,153

在 Build 2020 上,微软介绍了将 Linux GUI 应用程序引入 Windows 子系统的计划。Windows 10 Insider Preview Build 21364 终于带来了此功能的第一个预览版本。此项目被命名为 WSLg ,下面我们来了解一下,你可以使用此功能做什么,如何安装它,以及它的工作原理。

WSL 是什么?

Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。WSL 2 是体系结构的一种新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。

WSLg 什么是?

WSLg 是 Linux 的 Windows 子系统对 Wayland 和 X server 相关场景支持的简称。

WSLg 为开发人员、科学家或爱好者提供集成体验,他们需要在 PC 上运行 Windows,但也需要在 Linux 环境中运行一些工具或应用程序。虽然今天可以通过安装多系统或虚拟机满足此要求,但 WSLg 提供了一个更友好、更高效的替代方案。

WSLg 使 Linux GUI 应用程序在 Windows 上的使用体验更加接近原生,更加自然。从 集成到开始菜单任务栏中显示,从 alt-tab 体验 到实现 Windows 和 Linux 应用程序上无缝复制/粘贴,WSLg 实现了 Windows 和 Linux 应用程序的无缝桌面体验和工作流程。

全新安装 WSL2 和 WSLg

WSL2 仅适用于 Windows 10 版本 18917 或更高版本,WSLg 仅适用于 Windows 10 版本 21362 或更高版本

打开 控制面板-程序-程序和功能-启用或关闭Windows功能

勾选 适用于Linux的Windows子系统虚拟机平台

也可以使用命令,通过在 PowerShell 中通过管理员权限运行以下命令来执行此操作

wsl --install

接下来确定,重启,打开微软商店搜索WSL,选择你喜欢的发行版本安装即可。

使用命令来安装你喜欢的发行版本

你可以使用此命令来查看当前 WSL 可用的发行版本

wsl --list --online

接下来使用管理员权限执行此命令来安装你喜欢的发行版本。

wsl --install -d <Distro>

将 Distro 替换为你的发行版的实际名称,例如:

wsl --install -d Ubuntu

启用 WSL2

WSL1 是 WSL 默认的体系结构,如果要使 WSL2 成为你的默认体系结构,可以通过此命令执行该操作

wsl --set-default-version 2

执行此命令之后,所有安装的发行版本都会以 WSL2 的方式运行

如果只想将某个以安装的发行版本转换为 WSL 可以使用此命令

wsl --set-version <Distro> 2

并且确保将 Distro 替换为你的发行版的实际名称。 (可使用以下命令找到这些内容:wsl -l)。 可以随时更改回 WSL 1,方法是运行与上面相同的命令,但将“2”替换为“1”。

最后使用管理员权限运行此命令重新启动 WSL

wsl --shutdown

到此 WSL 和 WSLg 就已经安装成功并且可用了。

已经安装了 WSL2 如何启用 WSLg

如果你已经安装了一个没有 WSLg 版本的 WSL,可以使用管理员权限运行此命令来更新 WSL

wsl --update

请注意,WSLg 仅与 WSL2 兼容

你可以使用此命令来查看 WSL 的体系结构。

wsl -l -v

如果你使用的发行版本以 WSL1 模式运行,请使用此命令切换到 WSL2,具体见上方 启用 WSL2 部分

wsl --set-version <Distro> 2

最后使用管理员权限运行此命令重新启动 WSL

wsl --shutdown

到此 WSLg 就已经安装成功并且可用了。

安装并运行 GUI 应用

现在,你可以在 WSL 中运行以下命令来安装一些流行的 Linux GUI 应用程序。如果您使用的发行版本并不是 Ubuntu,则包管理器有可能不同。

## Update all packages in your distro
sudo apt update

## Gedit
sudo apt install gedit -y

## GIMP
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 https://dl.google.com/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" "https://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 https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-dev/microsoft-edge-dev_91.0.852.0-1_amd64.deb -o /tmp/edge.deb
sudo apt install /tmp/edge.deb -y

安装完成后,你可以在开始菜单中找到它们。

下面是微软的一些示例

在 WSL 中运行 gedit 和 gvim 来编辑 Linux 文件。

在 WSL 中运行 TestCafe Studio 并通过在 Linux 中安装的 Microsoft Edge 浏览器进行一些 Web 测试。

构建、测试和使用支持音频或麦克风功能的 Linux 应用程序。

使用 GPU 加速 3D 图形的支持来运行 Linux 应用程序。

WSLg 如何工作

从上面的示例中可以看出,我们不需要手动启动 X server,WSLg 将自动启动所需的一切,包括 Wayland、X Server、PulseAudio,以及 Linux GUI 应用程序与 Windows 通信所需的一切。使用完 GUI 应用程序并终止 WSL 后,系统也会自动结束其会话。

和 WSL 管道的其余部分一样,WSLg 其实也是一个运行在 WSL 中的子系统,为了使 WSLg 可以有无缝的使用体验,这个子系统对用户是不可见的,使用 wsl -l -v 命令并不可以看到这个发行版本,WSLg 采用了微软的 CBL Mariner 发行版本,CBL Mariner 是一个内部 Linux 发行版本,被用于微软的云基础设施、边缘产品和服务,下图展示了 WSLg 的体系结构。

如果想要更深入的了解 WSLg 的技术细节,可以查看微软的这篇博客《WSLg Architecture》,或访问 WSLg 的 Github 仓库。

ReadMe Card

关闭 WSL 对 GUI 应用程序的支持

用户可以通过创建此条目 C:\Users\MyUser.wslconfig 来关闭 WSL 对 GUI 应用程序的支持。

[wsl2]
guiApplications=false

留下评论