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

news/2025/2/26 17:44:01

【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.niftyadmin.cn/n/5869004.html

相关文章

对比 Vue 中的 defineAsyncComponent 和 React 中的 lazy

Vue3 的 defineAsyncComponent 和 React 的 lazy 都是用于实现组件懒加载的核心 API&#xff0c;但两者在实现机制、功能扩展和应用场景上存在显著差异。 一、底层原理对比 1. Vue3 defineAsyncComponent 实现方式&#xff1a; 基于 Vue 的响应式系统和组件生命周期管理。通过…

C# 根据Ollama+DeepSeekR1开发本地AI辅助办公助手

在上一篇《访问DeepSeekR1本地部署API服务搭建自己的AI办公助手》中&#xff0c;我们通过通过Ollama提供的本地API接口用Python实现了一个简易的AI办公助手&#xff0c;但是需要运行Py脚本&#xff0c;还比较麻烦&#xff0c;下面我们用C#依据Ollama提供的API接口开发一个本地A…

设计模式|结构型模式总结

1. 介绍 结构型设计模式&#xff08;Structural Patterns&#xff09; 主要关注类与对象的组合&#xff0c;以提高代码的灵活性和可维护性。这些模式帮助创建更大结构&#xff0c;同时保持代码的低耦合性。 结构型设计模式包括以下七种&#xff1a; 适配器模式&#xff08;Ad…

如何让传统制造企业从0到1实现数字化突破?

随着全球制造业不断向智能化、数字化转型&#xff0c;传统制造企业面临着前所未有的机遇与挑战。数字化转型不仅是技术的革新&#xff0c;更是管理、文化、业务流程等全方位的变革。从零开始&#xff0c;如何带领一家传统制造企业走向数字化突破&#xff0c;是许多企业领导者面…

多线程进阶 : 八股文面试题 一 [Java EE 多线程 锁和死锁相关问题]

目录 锁策略: 1. 乐观锁 vs 悲观锁 2. 轻量级锁 vs 重量级锁 3. 自旋锁 vs 挂起等待锁 4. 公平锁 vs 非公平锁 5. 可重入锁 vs 不可重入锁 6. 读写锁 vs 互斥锁 Java中 synchronized 内部实现策略 (内部原理) Java中的synchronized具体采用了哪些锁策略呢? 死锁相关 …

DeepSeek05-大模型WebUI

一、说明&#xff1a; 将DeepSeek部署到前台Web界面的方法主要有以下几种推荐方案&#xff0c;涵盖开源工具、第三方客户端及特定场景适配方案&#xff1a; Open WebUIChatbox AICherry StudioSillyTavern 二、Open WebUI 安装配置教程 特点&#xff1a;Open WebUI 是一个开…

The First项目报告:MyShell开启AI创作经济新纪元

随着加密货币和区块链技术的不断发展&#xff0c;MyShell作为一个前瞻性的Web3 AI平台&#xff0c;迅速崭露头角。MyShell致力于通过去中心化的方式&#xff0c;将AI技术与区块链相结合&#xff0c;为全球创客社区提供一个开放、模块化的AI应用生态。2025年2月25日&#xff0c;…

idea里的插件spring boot helper 如何使用,有哪些强大的功能,该如何去习惯性的运用这些功能

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram&#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 &#xff1f; 5 IDEA必装的插件&…