在wsl上配置VcXsrv

目的

在windows的虚拟机上跑ros, 问了chatGPT后搞通了,记录一下这个过程;

安装 WSL 和 Ubuntu

1, 在 Windows 上启用 WSL:

• 打开 PowerShell 以管理员身份运行,并执行以下命令:

wsl --install

• 这会安装 WSL 和 Ubuntu。如果你已经安装了 WSL,可以跳过这一步。

2, 从 Microsoft Store 安装 Ubuntu:

• 打开 Microsoft Store,搜索并安装你需要的 Ubuntu 版本(如 Ubuntu 20.04 或 22.04)。

安装并配置 VcXsrv

1, 下载并安装 VcXsrv:
• 从 VcXsrv 官方网站下载并安装 VcXsrv。
2, 配置 VcXsrv:
• 打开 VcXsrv,选择 “Multiple windows” 模式。
• 勾选 “Disable access control” 选项以允许所有连接。
• 点击 “Next” 并完成配置。

在 WSL Ubuntu 中配置 X Server

1, 安装必要的图形界面组件:

• 打开 WSL 终端并执行以下命令安装

x11-apps

用于测试 X11 转发:

sudo apt update
sudo apt install x11-apps

2, 配置 DISPLAY 环境变量:

• 你需要设置

DISPLAY

环境变量,让 WSL 能够找到运行中的 VcXsrv。执行以下命令:

echo "export DISPLAY=$(grep nameserver /etc/resolv.conf | awk '{print $2}'):0" >> ~/.bashrc
source ~/.bashrc

• 如果你使用的是 WSL2,可能需要使用

localhost

替代

grep

语句:

echo "export DISPLAY=localhost:0" >> ~/.bashrc
source ~/.bashrc

测试图形界面

1, 测试 X11 转发:

• 在 WSL 终端中执行以下命令:

xclock

• 如果一切正常,你应该会看到一个时钟窗口弹出。

2, 运行其他图形界面应用:

• 你可以安装并运行其他 GUI 应用,比如 geditfirefox,来确认图形界面的功能。

完成这些步骤后,你应该能够在 WSL 中使用 Ubuntu,并通过 VcXsrv 连接和使用图形界面应用。如果遇到问题,可以检查防火墙设置,确保 VcXsrv 的端口未被阻止。

但是我通过上述步骤并没能实现小时钟的出现,根据提示信息,设置防火墙等相关事项,回答如下:

在 Windows 上,你可以通过以下步骤来配置防火墙,确保 VcXsrv 的端口未被阻止:

通过控制面板设置防火墙

1, 打开 Windows 防火墙设置:

• 按 Windows + R 打开运行对话框,输入 control 并按回车,打开控制面板。

• 在控制面板中,选择 “系统和安全 (System and Security)”,然后点击 “Windows Defender 防火墙 (Windows Defender Firewall)”。

2, 允许应用通过防火墙:

• 在左侧菜单中,点击 “允许应用或功能通过 Windows Defender 防火墙 (Allow an app or feature through Windows Defender Firewall)”。

3, 查找并添加 VcXsrv:

• 在列表中查找 “VcXsrv” 或 “X Server” 应用程序。如果没有列出,你需要手动添加:

• 点击 “更改设置 (Change settings)”,然后点击 “允许其他应用 (Allow another app) ”。

• 点击 “浏览 (Browse)”,导航到 VcXsrv 的安装目录(通常在 C:\Program Files\VcXsrv\),选择 vcxsrv.exe

• 点击 “添加 (Add)” 然后确保为 “专用 (Private)” 和 “公用 (Public)” 网络勾选。

4, 确认并保存设置:

• 点击 “确定 (OK)” 以保存更改。

使用高级防火墙设置

如果你需要手动开放端口,可以使用高级防火墙设置:

1, 打开高级安全 Windows Defender 防火墙:

• 在防火墙主界面中,点击左侧的 “高级设置 (Advanced settings)”。

2, 创建入站规则:

• 在左侧的 “入站规则 (Inbound Rules)” 上点击右键,选择 “新建规则 (New Rule)”。

• 选择 “端口 (Port)” 然后点击 “下一步 (Next)”。

• 在特定本地端口中输入 6000(这是 X11 默认使用的端口),然后点击 “下一步 (Next)”。

• 选择 “允许连接 (Allow the connection)” 并点击 “下一步 (Next)”。

• 选择适用的网络类型(专用、域和公用),然后点击 “下一步 (Next)”。

• 为此规则命名(例如 “VcXsrv X11 Port”),然后点击 “完成 (Finish)”。

检查设置

配置完成后,确保 VcXsrv 运行时不被防火墙阻止。可以通过运行 X11 应用如 xclock 来确认防火墙配置是否正确。

这些步骤应该能帮助你正确配置防火墙,确保 VcXsrv 的正常运行。如果你仍然遇到问题,可以考虑暂时关闭防火墙以进行测试,但通常不建议长期关闭防火墙。

看看配置的ros2是否起来了

ros2 run turtlesim turtle_teleop_key

CMakeLists Eigen FCPX GNU Gazebo Git Interest KDL Life Linux Matrix ODE ROS Ros UML Ubuntu VcXsrv algorithm algorithms axis-angle bode calibration chrome control cpp data_struct dots figure gdb latex launch life linux mac math matlab memory motor moveit operator optimal algorithm python robot robotics ros ros2 rtb simulation stl thread tools twist urdf velocity vim web work wsl
知识共享许可协议