目的
在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 |
2, 配置 DISPLAY 环境变量:
• 你需要设置
DISPLAY |
环境变量,让 WSL 能够找到运行中的 VcXsrv。执行以下命令:
echo "export DISPLAY=$(grep nameserver /etc/resolv.conf | awk '{print $2}'):0" >> ~/.bashrc |
• 如果你使用的是 WSL2,可能需要使用
localhost |
替代
grep |
语句:
echo "export DISPLAY=localhost:0" >> ~/.bashrc |
测试图形界面
1, 测试 X11 转发:
• 在 WSL 终端中执行以下命令:
xclock |
• 如果一切正常,你应该会看到一个时钟窗口弹出。
2, 运行其他图形界面应用:
• 你可以安装并运行其他 GUI 应用,比如 gedit
或 firefox
,来确认图形界面的功能。
完成这些步骤后,你应该能够在 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 |