WSL2下Ubuntu18.04运行Ruby2d报"No available video device"如何解决
报错根因
该报错是因为WSL2默认没有提供图形渲染环境,Ruby2d依赖的SDL图形库需要X窗口服务才能创建图形窗口,同时缺少XDG_RUNTIME_DIR必要环境变量配置。
解决方案(Windows 10通用方案)
1. 安装并配置Windows侧X服务
- 在Windows系统中安装VcXsrv,启动时需做如下配置:
- 勾选「Disable access control」,允许WSL2的访问请求
- 附加启动参数添加
-ac,关闭访问限制 - 确认Windows防火墙允许VcXsrv通过专用、公用网络访问
2. 配置WSL2 Ubuntu端环境变量
编辑用户配置文件~/.bashrc(使用zsh则编辑~/.zshrc),在末尾添加如下内容:
# 图形输出配置 export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 export XDG_RUNTIME_DIR=/tmp/runtime-$USER mkdir -p $XDG_RUNTIME_DIR chmod 0700 $XDG_RUNTIME_DIR export LIBGL_ALWAYS_INDIRECT=1
保存后执行source ~/.bashrc让配置即时生效。
3. 安装WSL2端图形依赖库
执行命令安装SDL、OpenGL等必要依赖:
sudo apt update sudo apt install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libgl1-mesa-glx x11-apps
安装完成后执行xeyes验证配置,若成功弹出带眼睛的图形窗口,说明图形环境配置正常。
4. 测试Ruby2d运行
重新执行你的测试代码:
require 'ruby2d' show
即可正常弹出空白的Ruby2d窗口。
可选简化方案(Windows 10 21H2及以上版本适用)
无需单独安装X服务,直接升级WSL到最新版本开启WSLg即可:
- 以管理员身份打开PowerShell,执行
wsl --update - 升级完成后执行
wsl --shutdown重启WSL - 再次进入Ubuntu系统即可直接使用图形能力,无需额外配置环境变量
内容的提问来源于stack exchange,提问作者taz mazia
相关产品推荐
相关产品推荐

