前言
记录下这两天折腾WSL2 GUI遇到的坑。
基础设置
微软官方给的WSL GUI使用说明没有说咋配置,感觉有点坑(也可能是我没找到)。
- 安装vcXserver: github VcXsrv Windows X Server 或 sourceforge VcXsrv Windows X Server。这个软件目测原本是在sourceforge上开源的,后面挪到GitHub上了,因此版本差的有点多。
- 启动 XLaunch:
- 上面
Native opengl
的设置,好像是选择是否用window下的OpenGL。这里如果用的sourceforge的版本不要勾,用的GitHub的版本得勾上。
- 上面
- 在文件
~/.bashrc
中加入下面两行,并执行source ~/.bashrc
:export DISPLAY=localhost:0.0 export DISPLAY=`cat /etc/resolv.conf | grep nameserver | awk '{print $2}'`:0.0
测试
- 安装一个GUI应用:
sudo apt install gnome-text-editor -y
- 运行此应用:
gnome-text-editor
- 如果一切正常就会看到一个记事本窗口弹出,且控制台没有报错。
遇到的坑
1. vcXserver莫名其妙退出,且日志中报错“winInitMultiWindowWM - Could not open display, try: 5, sleeping: 5”
windows防火墙的原因,解决办法有两个:
- 关闭防火墙
- 把vcXserver添加到白名单:
- 允许应用通过防火墙:
- 更改设置->允许其他应用:
- 浏览
- 找到vcXserver的安装路径,选择vcxsrv.exe和xlaunch.exe:
- 重启电脑!!!!!!!!!!!!!!
2. 出现 /sbin/ldconfig.real: Can’t link /usr/lib/wsl/lib/libnvoptix_loader.so.1 to libnvoptix.so.1 错误
我是在安装ROS2时出现这个报错,更新下wsl2应该就好了,但我进行了下面的操作(这个问题在GitHub上也有:https://github.com/microsoft/WSL/issues/5548):
- Open cmd as Administrator and cd into C:\Windows\System32\lxss\lib
- Delete libcuda.so and libcuda.so.1 (You can also do this in Windows Explorer as well)
- Run
wsl -e /bin/bash
in cmd and you should already in/mnt/c/Windows/System32/lxss/lib
, now you have permission to create symlink:ln -s libcuda.so.1.1 libcuda.so.1 ln -s libcuda.so.1.1 libcuda.so
不过我弄完了上面的操作还是不行,所以执行了下wsl --update
和wsl --shutdown
然后就好了…