【WSL2】 Ubuntu20.04 GUI图形化界面 VcXsrv ROS noetic Vscode 主机代理 配置

【WSL2】 Ubuntu20.04 GUI图形化界面 VcXsrv ROS noetic Vscode 主机代理 配置

  • 前言
  • 整体思路
  • 安装 WSL2
    • Windows 环境
      • 升级为 WIN11 专业版
      • 启用window子系统及虚拟化
    • 安装WSL2
      • 通过 Windows 命令提示符安装 WSL
      • 安装所需的 Linux 发行版(如 Ubuntu 20.04)
      • 查看和设置 WSL 版本
  • 配置 WSL2 的 GUI 图形界面
    • 更新 WSL 并重启
    • 安装 VcXsrv
    • 配置 VcXsrv
      • VcXsrv 参数配置
      • 设置显示环境变量
  • 安装并配置 ROS Noetic
    • ROS 的换源与安装
    • ROS 的测试
    • ROS 的基础配置
  • 安装并配置 VSCode
  • 主机代理
    • 配置 Blash
    • 在wsl中修改环境变量
  • 常见问题
    • VcxSrv 报错 qt.qpa.xcb: QXcbConnection: XCB error: 147 (Unknown), sequence: 178, resource id: 0, major code: 141 (Unknown), minor code: 20 Segmentation fault

前言

本文基于 Win11专业版,实现了在 WSL2 环境下配置 Ubuntu 20.04,支持Rviz Gazebo等图形化界面应用运行,安装并配置 ROS Noetic、VSCode

参考资料:

  • 如何使用 WSL 在 Windows 上安装 Linux
  • 在适用于 Linux 的 Windows 子系统上运行 Linux GUI 应用
  • 开始通过适用于 Linux 的 Windows 子系统使用 Visual Studio Code
  • 通过 VcXsrv 在 WSL2 上使用图形化界面
  • Install ROS Noetic on WSL2
  • wsl rviz可视化

整体思路

  1. 配置 Win11 环境并安装 WSL2
  2. 安装 VcXsrv 并配置 WSL2 的 GUI 界面
  3. 安装并配置 ROS Noetic
  4. 安装并配置 VSCode,启用 WSL 扩展

安装 WSL2

Windows 环境

升级为 WIN11 专业版

安装 WSL2 前,请确保你的 Windows 系统为 Win11 专业版,因为只有专业版及以上版本支持启用 Windows 虚拟化功能,缺乏该功能会影响 WSL2 的正常配置和运行

升级到 Win11 专业版的方法可以参考:小白升级–Win11家庭版到专业版

ps:如果显示激huo密钥失效,可以尝试使用 2025年Windows 10/11永久激huo码汇总 中的激huo密钥,或者在网上搜索并多尝试

启用window子系统及虚拟化

搜索 启用或关闭Windows功能

勾选 Hyper-V适用于Linux的Windows子系统虚拟机平台
请添加图片描述
点击确认后重启

安装WSL2

建议参考微软官方文档:如何使用 WSL 在 Windows 上安装 Linux

通过 Windows 命令提示符安装 WSL

wsl --install

安装所需的 Linux 发行版(如 Ubuntu 20.04)

法一:命令行安装

wsl --install Ubuntu-20.04

法二:Microsoft Store 微软商店安装

在这里插入图片描述
安装你所需要的 Ubuntu版本,第一次进入需要设置 Ubuntu 的账户名和密码

ps: 开启代理可能会导致无法打开微软商店。关闭代理后,访问微软商店时速度较慢,请耐心等待。

查看和设置 WSL 版本

查看当前 WSL 版本

wsl --list --verbose

在这里插入图片描述

如果当前版本不是 WSL2,可以通过 PowerShell 设置 WSL 默认版本为 WSL2

设置默认 WSL 版本

wsl --set-default-version 2

此部分可以参考微软官方文档中的将版本从 WSL 1 升级到 WSL 2章节

在这里插入图片描述)

配置 WSL2 的 GUI 图形界面

此部分可以参考微软官方文档中的 在适用于 Linux 的 Windows 子系统上运行 Linux GUI 应用 章节

更新 WSL 并重启

在 PowerShell 中输入 WSL 更新命令

wsl --update

需要重启 WSL,更新才能生效

wsl --shutdown

安装 VcXsrv

在 Windows 上安装 X-Server VcXsrv,用于接收和显示 WSL 中的图形界面应用。

下载VcXsrv 建议安装 1.20.14.0 版本

配置 VcXsrv

VcXsrv 参数配置

打开 Xlaunch,进行 VcXsrv 的配置

在这里插入图片描述
PS:最后点击 Save Configuration 保存配置,之后可以直接双击配置文件,按照保存的配置快速启动 VcXsrv

设置显示环境变量

打开 .bashrc 文件

sudo nano ~/.bashrc

在文件末尾添加以下内容:

export DISPLAY=xx.xx.xx.xx:0.0

其中 xx.xx.xx.xx 是您 Windows 主机的 IPv4 地址。您可以在 Windows 中通过 PowerShell 使用 ipconfig 命令来查找该地址
在这里插入图片描述
重新加载 ~/.bashrc 配置文件

source  ~/.bashrc

安装并配置 ROS Noetic

该部分建议参考:Install ROS Noetic on WSL2

ROS 的换源与安装

更换 ROS 源为 ustc 中科大源

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

导入 ROS 的公钥

curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -

更新软件包索引

sudo apt update

安装 ROS Noetic Desktop 和 Python3 rosdep

sudo apt install -y ros-noetic-desktop python3-rosdep

初始化 rosdep

sudo rosdep init

更新 rosdep

rosdep update

将 ROS 环境变量的自动加载添加到 .bashrc 文件中

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

ROS 的测试

此部分可以参考Install ROS Noetic on WSL2中的Testing Installation of ROS

测试:

cd
roscore

ROS 的基础配置

创建工作空间

mkdir -p catkin_ws/src

构建工作空间

cd ~/catkin_ws
catkin_make

安装并配置 VSCode

该部分内容建议参考:开始通过适用于 Linux 的 Windows 子系统使用 Visual Studio Code

安装 VSCode

通过在 Windows 中安装 VSCode,并使用 WSL 扩展,直接在 Windows 上操作 WSL 中的项目

VSCode安装页
在这里插入图片描述
ps:当在安装过程中系统提示“选择其他任务”时,请务必选中“添加到 PATH”选项,以便可以使用代码命令在 WSL 中轻松打开文件夹。

安装 WSL 拓展

安装 Remote Development 拓展WSL拓展
在这里插入图片描述
在这里插入图片描述
重启电脑后,您可以在 WSL 中使用 code . 命令,直接打开 Windows 本地的 VSCode 进行 Ubuntu 环境中的开发

主机代理

该部分内容可以参考:WSL2使用Blash代理

在配置 WSL 使用主机代理时,建议关闭防火墙,或者确保防火墙允许访问主机代理的端口。很多连接问题通常是由于防火墙阻止了端口访问引起的。如果无法正常连接主机代理,请检查防火墙设置。

配置 Blash

在这里插入图片描述

在wsl中修改环境变量

  1. 打开配置文件
nano ~/.bashrc
  1. 添加代理地址到环境变量
export https_proxy="http://<hostip>:7890"
export http_proxy="http://<hostip>:7890"

hostip 处填写你的 Windows 主机的 IP 地址

  1. 激活修改后的环境变量
source ~/.bashrc
  1. 测试能否连接到 Google
wget google.com

如果出现以下图示所示的情况,则说明代理配置成功
在这里插入图片描述

常见问题

VcxSrv 报错 qt.qpa.xcb: QXcbConnection: XCB error: 147 (Unknown), sequence: 178, resource id: 0, major code: 141 (Unknown), minor code: 20 Segmentation fault

该部分可参考文章:wsl rviz可视化

问题原因
该问题大概率与 OpenGL 配置和兼容性相关。WSL2 默认不支持硬件加速 OpenGL,导致图形渲染时可能出现错误。缺少正确的 OpenGL 库或驱动、硬件加速设置不当、或者 VcXsrv 的配置问题,都可能导致 Qt 应用程序在与图形界面交互时崩溃。此外,某些 OpenGL 功能和库(如 libGL 或 libGLU)可能未正确安装或配置,从而影响图形渲染的稳定性和性能

问题解决

编辑 .bashrc 文件

sudo nano ~/.bashrc

在文件末尾添加以下内容:

export LIBGL_ALWAYS_INDIRECT=0

如果遇到后续报错,可以尝试将其更改为

export LIBGL_ALWAYS_INDIRECT=1

在 VcXsrv 的 XLaunch 配置程序中,在“附加参数”选项框中添加 -nowgl,以禁用硬件加速的 OpenGL 渲染
在这里插入图片描述

重新测试

在这里插入图片描述
问题解决!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/70718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

监听其他音频播放时暂停正在播放的音频

要实现当有其他音频播放时暂停当前音频&#xff0c;你可以使用全局事件总线或 Vuex 来管理音频播放状态。这里我将展示如何使用一个简单的事件总线来实现这个功能。 首先&#xff0c;你需要创建一个事件总线。你可以在项目的一个公共文件中创建它&#xff0c;例如 eventBus.js…

Android数据库SQLite、Room、Realm、MMKV/DataStore、ObjectBox性能比较

Android主流数据库基础特点核心数据库特性与性能对比维度总结 在 Android 开发中&#xff0c;数据库选型直接影响应用的性能、开发效率和可维护性。不同数据库的存储限制&#xff0c;比如常用的SharedPreferences、SQLite、还有基于SQLite封装的greenDao等&#xff0c;这些似乎…

Solidity study

Solidity 开发环境 Solidity编辑器&#xff1a;Solidity编辑器是一种专门用于编写和编辑Solidity代码的编辑器。常用的Solidity编辑器包括Visual Studio Code、Atom和Sublime Text。以太坊开发环境&#xff1a;以太坊开发环境&#xff08;Ethereum Development Environment&am…

【废物研究生零基础刷算法】DFS与递归(一)典型题型

文章目录 跳台阶递归实现指数级枚举递归实现排列型枚举上面两题总结 递归实现组合型枚举P1036选数 跳台阶 思路&#xff1a; 如果 n 1&#xff0c;只有一种走法&#xff08;走 1 级&#xff09;。如果 n 2&#xff0c;有两种走法&#xff08;11 或 2&#xff09;。对于 n &g…

GCC 和 G++的基本使用

GCC 和 G 命令 GCC 和 G 命令GCC&#xff08;GNU C 编译器&#xff09;基本用法常用选项示例 G&#xff08;GNU C 编译器&#xff09;基本用法常用选项示例 GCC 与 G 的区别选择使用 GCC 还是 G C编译流程1. 预处理&#xff08;Preprocessing&#xff09;2. 编译&#xff08;Co…

HWUI 和 Skia

&#x1f4cc; HWUI 和 Skia 的关系 Skia 是 Android 的底层 2D 图形库&#xff0c;提供 CPU 和 GPU 渲染能力&#xff0c;支持 OpenGL、Vulkan、Metal 等后端。HWUI 是 Android UI 组件的 GPU 渲染引擎&#xff0c;主要用于 加速 View、动画、阴影等 UI 元素的绘制。HWUI 依赖…

编写第一个 C++ 程序 – Hello World 示例

“Hello World”程序是学习任何编程语言的第一步&#xff0c;也是您将学习的最直接的程序之一。它是用于演示编码过程如何工作的基本程序。您所要做的就是在输出屏幕上显示 “Hello World”。 C Hello World 程序 下面是在控制台屏幕上打印 “Hello World” 的 C 程序。 // …

【Python量化金融实战】-第1章:Python量化金融概述:1.1量化金融的定义与发展历程

本小节学习建议&#xff1a;掌握Python编程、统计学&#xff08;时间序列分析&#xff09;、金融学基础&#xff08;资产定价理论&#xff09;三者结合&#xff0c;是进入量化领域的核心路径。 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章目录 1.1 量化金…

docker部署GPU环境

使用 Docker 部署 GPU 环境涉及到几个关键步骤,以下是详细步骤: 1. 安装 NVIDIA 驱动程序 确保你的系统已经安装了 NVIDIA GPU 驱动。这是使用 GPU 的前提条件。 2. 安装 Docker 和 nvidia-container-toolkit 首先,确保你已经安装了 Docker。然后,安装 NVIDIA Containe…

Pytorch实现之混合成员GAN训练自己的数据集

简介 简介:提出一种新的MMGAN架构,使用常见生成器分布的混合对每个数据分布进行建模。由于生成器在多个真实数据分布之间共享,高度共享的生成器(通过混合权重反映)捕获分布的公共方面,而非共享的生成器捕获独特方面。 论文题目:MIXED MEMBERSHIP GENERATIVE ADVERSARI…

matlab和java混合编程经验分享

最常用的就是可以查到再控制栏deploytool选择library complier打包&#xff0c;但是有问题就是比如果用了外部的求解器比如yalmip或者cplex的话用这个方法会找不到外部的求解器&#xff0c;网上找了很多&#xff0c;基本都大同小异。 后面分享一个亲测有效的打包方法&#xff0…

观成科技:海莲花“PerfSpyRAT”木马加密通信分析

1.概述 在2024年9月中旬至10月&#xff0c;东南亚APT组织“海莲花”通过GitHub发布开源安全工具项目&#xff0c;针对网络安全人员发起了定向攻击。通过对相关攻击活动进行分析&#xff0c;可以将其与一些海莲花的样本关联起来。这些样本的通信数据结构与海莲花此前使用的攻击…

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(一)

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷&#xff08;一&#xff09; 第一部分&#xff1a;网络平台搭建与设备安全防护任务书DCRS:DCFW:DCWS:WAF: 第二部分&#xff1a;网络安全事件响应、数字取证调查、应用程序安全任务书任务 1&…

2月25(信息差)

&#x1f30d;四川省人民医院接入DeepSeek 将AI技术应用于看病全流程 &#x1f384;机器人新风口&#xff01;OpenAI押注公司 采用这种新材料 更轻盈耐磨&#xff01;尼龙概念股名单 ✨小米15 Ultra、小米SU7 Ultra定档2月27日 雷军宣布&#xff1a;向超高端进发 1.深夜王炸&…

全面汇总windows进程通信(三)

在Windows操作系统下,实现进程间通信(IPC, Inter-Process Communication)有几种常见的方法,包括使用管道(Pipe)、共享内存(Shared Memory)、消息队列(Message Queue)、命名管道(Named Pipe)、套接字(Socket)等。本文介绍如下几种: RPC(远程过程调用,Remote Pr…

【栈与队列】二叉树最大宽度

文章目录 662. 二叉树最大宽度解题思路&#xff1a;队列 广度搜索 662. 二叉树最大宽度 662. 二叉树最大宽度 ​ 给你一棵二叉树的根节点 root &#xff0c;返回树的 最大宽度 。 ​ 树的 最大宽度 是所有层中最大的 宽度 。 ​ 每一层的 宽度 被定义为该层最左和最右的非…

大语言模型安全测试:WDTA 标准下的全面解读与实践展望

1.前言 在人工智能&#xff08;AI&#xff09;飞速发展的时代&#xff0c;大语言模型&#xff08;LLM&#xff09;凭借其强大的语言理解和生成能力&#xff0c;广泛应用于智能客服、智能写作、智能翻译等众多领域&#xff0c;深刻改变着人们的生活和工作方式。然而&#xff0c…

在WINDOWS系统使用CMake gui编译NLopt配合VSCode使用

1. 准备工作 安装CMake&#xff1a;从CMake官网下载并安装CMake。下载Nlopt源码&#xff1a;从Nlopt官网或GitHub仓库下载Nlopt源码。安装编译器&#xff1a;确保已安装Visual Studio或其他支持的编译器&#xff08;如MinGW&#xff09;。 2. 配置CMake 方式1 打开CMake GU…

【DeepSeek开源:会带来多大的影响】

DeepSeek 开源&#xff0c;震撼登场对云计算行业的冲击 巨头云厂商的新机遇 DeepSeek 开源后&#xff0c;为云计算行业带来了巨大的变革&#xff0c;尤其是为巨头云厂商创造了新的发展机遇。以阿里云为例&#xff0c;它作为云计算行业的领军者&#xff0c;与 DeepSeek 的合作…

C++ QT 6.6.1 QCustomPlot的导入及使用注意事项和示例 | 关于高版本QT使用QCustomPlot报错问题解决的办法

C QT 6.6.1 QCustomPlot的导入及使用注意事项和示例 | 关于高版本QT使用QCustomPlot报错问题解决的办法 记录一下 qmake .pro文件的配置 QT core gui printsupportgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compil…