准备工作
-
Windows 2004 上启用 WSL2
-
X Server(X11 Server)
X11 Server 有 VcXsrv、XMing、X410 等,这里选择 VcXsrv;
工具操作
这里演示 VcXsrv 的安装运行,和 MobaXterm 内置 X11 的配置运行;
安装使用 VcXsrv
先关闭其他的 X 服务器;
下载地址:点这里下载
VcXsrv 安装
选择全部组件:
选择安装位置:
VcXsrv 配置
每次打开软件,首先会进入显示设置;
选择多窗口:
选择默认的 “Start no client”
额外设置项:
运行某些软件如 rviz2 需要把 Native opengl 去掉勾选;
配置完成后,托盘区出现 X 图标即运行成功;未出现,可能是其他 X 服务器占用了端口;
使用 MobaXterm 内置的 X11
同理,先关闭其他的 X 服务器;
X11 配置
- 随软件启动,如果用其他 X11 服务器这项就不选择;
- x11 远程访问选择“full”,建议选择,否则会有弹窗提示;
X11 运行
-
菜单 “X 服务器” –> “XDMCP 会话”
生成的 Broadcast 会话可以删除,不影响;
-
菜单 “X 服务器” –> “启动 X 服务器”
再次点击是关闭 X 服务器;
WSL2 操作
配置 IP
主机上 ipconfig
查看主机和 WSL2 连接的 IP:
WSL2 上设置显示环境变量(配置远程显示):
以下是临时生效,加入到
~/.bashrc
才能保持生效;
1
2
3
4
5
6
7
8
9
# 方式一:填写查询到的 ip
export DISPLAY=172.23.144.1:0
# 方式二:填写 /etc/resolv.conf 中记录的信息
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0
# 加上后不会报 libGL error
# 部分程序如 rviz2 需要将下面环境变量设为 0
export LIBGL_ALWAYS_INDIRECT=1
测试
如果不成功,请先关闭 Windows 防火墙再尝试;
安装轻量 gui 编辑器 mousepad,接着运行:
1
2
3
4
# 安装
sudo apt install mousepad -y
# 运行
mousepad hello.txt
效果:
不想阻塞可以加 & 后台执行;
安装 x11-apps(不建议):
1
sudo apt install x11-apps
运行小程序:
不想阻塞可以加 & 后台执行;
1
2
3
4
5
# 控制台 1 运行
xclock
# 控制台 2 运行
xcalc
效果:
如果报错,请检查防火墙,试着允许 x11 服务器的端口;
其他
此外,WSL2 和 Windos 是共享环境变量的,可以在控制台调用和打开对方的软件;
在 WSL2 上打开 explorer.exe 和 notepad.exe:
在 PowerShell 中调用 bash: