参考资料:Xfce4 Desktop Environment and X Server for Ubuntu on WSL 2
2016年发布的原始Windows Linux子系统(WSL)添加了 Bash shell 并能够在
Windows 中运行基于 Ubuntu,openSUSE,SUSE Enterprise Linux,Debian 或 Kali
Linux 的用户空间。但是,没有真正的Linux内核在操作系统上运行。微软的仿真层将 Linux 系统调用转换为 Windows 系统调用。想要在 Windows 上测试和编译 Linux 应用程序的开发人员大为欢迎 WSL,因为这意味着他们可以使用 GNU 工具和实用程序而无需双启动或VM。与VM相比,除了文件系统 I / O 之外,WSL 的 CPU 性能接近本地。由于 WSL 没有真正的 Linux 内核,因此在 WSL 中运行的Linux应用程序因处理文件元数据的 Windows 钩子而成为瓶颈,比原始 Linux 文件系统要慢得多。而且,某些应用程序存在兼容性问题,因为它们依赖的内核服务不可用。
WSL2 是为运行于 2016 年 5 月的 Windows Insider 计划中的 Fast Ring 用户而推出的 Windows 子系统。WSL2 是运行的实用程序 VM,它不依赖于内核仿真,而是开源的完整 Linux 内核。在 Windows 之上。VM 难道不意味着 WSL2 会像使用 Hyper-V 在 Windows 上运行 Linux VM 一样遭受性能损失吗?为解决此问题,Microsoft 将 WSL2 视为使用 Hyper-V 功能子集的高度优化的 VM,该功能可提供接近本机的 CPU 和文件系统 I / O 性能。到目前为止,大多数 Beta 测试人员都观察到 WSL2 的性能可与 WSL1 媲美。使用本地Linux内核,WSL2 拥有近乎本机的文件系统性能,这促使 Docker 宣布其即将推出的 Windows 版 Docker 将利用 WSL2 代替当前在 Hyper-V 中运行 Linux 容器所依赖的 Moby Linux VM。您不再需要等待 Docker for Windows 引导其 VM 的启动。根据 Docker 的说法,WSL2 和 Docker 守护程序会在其开发笔记本电脑上在2秒内启动,这意味着 WSL2 可以在启动容器的同时启动(而不是在启动时启动)。另外一个好处是,从容器到 Windows 主机的绑定装载将不再依赖 Samba 服务,而是由 WSL2 以本机方式进行处理,性能要好得多。
安装 WSL2 不需要启用 Hyper-V,只需启用 Linux 的 Windows 子系统和 Windows 可选功能中的虚拟机平台。只要您运行的是 Insider Preview 内部版本 18917 或更高版本,您就会看到这些功能可用-包括 Windows 10 Home。尽管 WSL2 旨在作为开发人员的命令行工具,但是桌面环境可以在 WSL2 内运行,并且您可以使用 Windows 的X Server(例如 Xming或 VcXSrv)来侦听 Linux 中的 X11(图形)程序。Xfce4 是一个轻量级的桌面环境,开发人员已经能够使用 WSL 和 WSL2。WSL2 需要 Insider Preview 内部版本 18917 及更高版本。 要检查您当前正在运行的 Windows 构建版本,请打开 Powershell 窗口并运行命令 winver
。如果内部版本号> 18917,就可以开始使用。
接下来,打开 Administrator Powershell 窗口并运行以下命令。启用每个功能都需要重新启动,因此请保存所有工作并关闭其他应用程序。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
接下来,打开 Microsoft Store 并安装您选择的发行版。我们使用Ubuntu 20.04 LTS,但您可以选择任何与 WSL 兼容的发行版。
下载完成后,从“开始”菜单打开 Ubuntu Shell 以完成 Ubuntu 的安装。系统将提示您提供 Linux 用户名和密码。最初,WSL 将在不利用新功能的原始版本 WSL1 下运行。现在打开 Powershell 窗口并运行以下命令。第一个命令列出了已安装的 Linux 的 WSL 发行版,第二个命令将 Ubuntu 从 WSL1 转换为WSL2。如果希望以后安装的所有 WSL 发行版默认使用 WSL2 功能,则第三条命令是可选的。
wsl --list --verbose
wsl --set-version Ubuntu-18.04 2
wsl --set-default version 2
如果 WSL 到版本2的转换失败,并显示错误消息,例如“转换失败”或“错误0x03a001a”,则由于虚拟磁盘系统限制,无法完成请求的操作。虚拟磁盘文件必须未压缩和未加密,并且不能稀疏。”,请尝试检查以下内容。
- 重新启动系统。
- 必须在您的BIOS 中启用虚拟化扩展,例如 Intel VT-x 或 AMD-V。
- 必须为 Ubuntu AppData 文件夹禁用压缩和加密(请参阅 Github Issue #4103)。 路径看起来像这样。
%localappdata%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
1 设置图形界面
1.1 安装 choco
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
1.2 使用 choco 安装 VcXsrv
choco install vcxsrv
配置防火墙,外界网络访问 VcXsrv 的端口
2 启动 VcXsrv
Display settings: One large window
How to start clients: Start no client
Disable access control: Yes:一定要选这一项,WSL 2 相当于远程(外界)网络了,和 Windows 10 是分开的,和 WSL 1 不一样
完成后,单击“完成”以启动X服务器。如果Windows防火墙提示,请确保允许从公用网络和专用网络都连接到 VcXSrv。双击系统任务栏中的X图标,将 VcXSrv 带入前台。现在,您将看到黑屏,因为 Linux 中还没有运行图形化的 X11 应用程序。
3 wsl 安装 xfce4
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install xfce4
sudo apt install xfce4-session
安装完之后需要稍微配置一下:
echo "export DISPLAY=:0.0">> ~/.bashrc
或者
echo "export DISPLAY=localhost:0">> ~/.bashrc
如果报错,则需要在 PowerShell 获取 IP:
ipconfig
在 WSL 中修改:
echo "export DISPLAY=IP:0">> ~/.bashrc
使设定生效:
source ~/.bashrc
4 时钟测试
sudo apt install x11-apps
启动:
xclock
效果:
5 启动 Ubuntu 桌面
startxfce4
或者
xfce4-session
效果: