上次我写过一篇VGPU和WSL2,这回我打算写一篇关于《通过WSL2运行GUI程序》的笔记。
起因
总所周知,KVM in Linux支持GPU passthrough
(GPU直通)功能的,就是配置稍稍多了一点。最初想试试如何在Hyper-V中尝试安装VM,但是vgpu的文档我没有在bing中搜到。
幸亏想起了自己之前看到microsoft为wsl2开发rdp和remotefx实现GUI的项目——WSLg。因此,尝试通过WSL2来实现GUI可开发。(正常人别轻易尝试此方法,易踩坑)
准备
- Windows 11/Windows 10 version 19044+
- WSL2
- Intel/AMD/Nvidia GPU driver for WSL
安装WSL请参考我之前的文章
现有 WSL 安装
通过管理员运行powershell
> wsl --update # WSL 更新命令
> wsl --shutdown # 重启wsl
安装最简单的GUI工具如gedit
运行cmd,通过bash进入ubuntu on wsl
$ cd ~ # home
$ gedit ~/.bashrc
返回一个错误
(gedit:33): Gtk-WARNING **: 18:18:16.725: cannot open display:
错误修复
下载VcXsrv,默认安装
配置防火墙
在入站规则中 新建规则
确认后完成配置
接着在 cmd 中运行 "C:\Program Files\VcXsrv\vcxsrv.exe" :0 -multiwindow -clipboard -wgl -ac
在bash中运行
$ export DISPLAY_NUMBER="0.0"
$ export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):$DISPLAY_NUMBER
$ export LIBGL_ALWAYS_INDIRECT=1
$ setxkbmap -layout us
这时候就可以正常运行 gedit ~/.bashrc
参考
- 在 适用于 Linux 的 Windows 子系统 上运行 Linux GUI 应用
- Running graphical Linux desktop applications from WSL 2 – “Error E233: cannot open display” [closed]