Windows 10及组织网络下WSL2启动图形界面
Windows 10及组织网络下WSL2启动图形界面
环境与症状
- 完全由组织管理IP的Windows 10下WSL2
Gtk
,tcl
,tkinter
等无法启动,称无DISPLAY
环境变量DISPLAY
环境变量默认为空,设为:0
及:0.0
后,报错变为无法链接至DISPLAY 0.0
等export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0
等设置无效,仍显示无法连接到显示
解决方法
- 安装Xming(或VcXsrv,X410等,以下以Xming为例),配置完毕后台运行。
设置中的
window number
实际指的是服务器端口号,此处如果修改需要同时修改后续操作中的端口号。并且需要勾选no access control
。
- 运行
wf.msc
(即控制面板>系统和安全>Windows Defender 防火墙>高级设置),在Inbound rules中检查Xming X Server
是否允许了Domain
和Private
。 - (可选)通过任务管理器查看GPU型号并在这里更新驱动。
- Powershell运行
ipconfig
,查看Windows 10主机的IP地址,如x.x.x.x
。 - WSL2中运行
export DISPLAY=x.x.x.x:0.0
并将其添加至.?shrc
中,即可在Windows 10中唤起WSL2的GUI。
少走点弯路
翻阅了无数个Issue和Stack Overflow页面,抛开rz的没有设置$DISPLAY
不谈,大部分人都能通过简单的X Server和修改DISPLAY至/etc/resolv.conf
中的地址解决这一问题。
然而,1.1提到,/etc/resolv.conf
已被手动替换为了组织DNS解析站并禁用了自动生成。因此,文件中的nameserver已经不是可用的地址(?)。
经过测试,此情况下将nameserver替换为Windows 10 IP地址仍会带来DNS解析问题。
考虑到,要将WSL2中的GUI通过X Server在Windows 10中唤起,所以这里的地址应该替换为ipconfig
找到的主机IP。(很奇怪,这一点完全没有在Xming的log中体现)
所以,还是建议大家不要嗯抄网上看起来非常高大上血长一行的shell,我个人觉得这篇笔记中的流程更符合逻辑,如1.4中的命令之所以有用只不过是确实非组织管理IP下\etc\resolv.conf
中的nameserver和所需IP一致罢了。
整这么多没用的不如转Windows 11
This post is licensed under CC BY 4.0 by the author.