当前位置: 首页 > backend >正文

win11中wsl在自定义位置安装ubuntu20.04 + ROS Noetic

wsl的安装

  • 环境
  • 自定义位置安装指定ubuntu版本
  • VsCode
  • ROS
  • 备份与重载
    • 备份
    • 重新导入
  • 常用命令
  • 参考文章

环境

搜索 启用或关闭 Windows 功能在这里插入图片描述
在这里插入图片描述
勾选这2个功能,然后重启

自定义位置安装指定ubuntu版本

从网上找到你所需要的相关wsl ubuntu版本的安装包,一般直接搜wsl ubuntu xxx就有了。
这里以我所安装的ubuntu20.04为例。

下载链接:wsl ubuntu20.04

1、我下载得到的文件名为:CanonicalGroupLimited.UbuntuonWindows_2004.2021.825.0.AppxBundle 或者类似的文件,将其后缀改为 .zip

2、将其解压到你想安装的路径下
3、会解压出一个文件叫:Ubuntu_2004.2021.825.0_x64.appx 或者类似的文件(后期更新了文件名可能会改变),同样将其后缀改为 .zip
4、解压这个文件(解压到要安装的位置,不要默认路径,会与之前的文件有重名文件,建议解压到那个路径下的新文件目录下)
5、运行 ubuntu.exe 进行安装(在哪个目录下运行,就是安装在哪),设置UNIX的用户名和密码即可安装完成

VsCode

在win下打开VsCode,下载 WSL 插件
在这里插入图片描述
通过这个拓展组件,就能在win下远程连接到Linux环境中。

ROS

1、一键安装ROS
建议使用鱼香大佬开发的一键安装ROS命令,可以省去不必要的麻烦,一键安装指令:

wget http://fishros.com/install -O fishros && . fishros

2、初始化rosdep:

sudo apt install python3-pip
sudo pip install rosdepc
sudo rosdepc init
rosdepc update

由于国内网络环境,rosdepc 工具是由鱼香ROS开发的,用来替代rosdep的

备份与重载

备份

为了防止发生意外,在安装nomachine前先备份系统

# 查看已安装的子系统版本wsl -l -v
# 关闭wsl
wsl --shutdown# 导出分发版为 tar文件到 D盘
wsl --export Ubuntu d:\wsl-ubuntu-22.04.tar

上面最后一条命令中的 Ubuntu为wsl -l -v所查看得到的
在这里插入图片描述

重新导入

# 选择你要安装的盘符,这里我是切换到E盘
cd E:# Ubuntu2为名称,E:/wsl为安装路径,后面为压缩包所在目录
wsl --import Ubuntu2 E:/wsl E:\wsl-ubuntu-20.04.tar 

在这里插入图片描述
导入成功后,这里显示的是一个vhdx的镜像文件,存放关于Linux的所有内容

常用命令

命令功能
wsl -l -v可列出已安装的 Linux 发行版
wsl -s <DistributionName>设定默认的Linux发行版
wsl -d <DistributionName>启动指定的Linux发行版
wsl启动默认的Linux发行版
wsl --unregister <DistributionName>卸载指定的Linux发行版

参考文章

1、Microsoft wsl 官方文档
2、小鱼的一键安装系列
3、WSL2环境安装(自定义安装路径,非C盘)+ 可视化 + VScode连接WSL
4、Win11 + WSL2 搭建 ros + gazebo 环境以及通过 VcXsrv 在 WSL2 上使用图形化界面(xfce4)
5、超详细的WSL教程:Windows上的Linux子系统

http://www.xdnf.cn/news/1814.html

相关文章:

  • 自动化测试概念及常用函数篇 [软件测试 基础]
  • 算法训练营第二天| 209.长度最小的子数组、59.螺旋矩阵II、区间和
  • 数智视融合驱动未来,Al+数字孪生重塑价值|2025袋鼠云春季数智发布会回顾
  • 离线电脑安装python包
  • 六、初始化与清理(Initialization cleanup)
  • Spring Boot 整合 Lock4j + Redisson 实现分布式锁实战
  • YOLOv11架构革新——基于RFEM模块的小目标感受野增强与特征优化
  • 如何管理“完美主义”导致的进度拖延
  • 高德地图API + three.js + Vue3基础使用与使用 + 标记不显示避坑
  • IMX6ULL 最新方案移植教程中间间系列5——向开发板迁移SSH和FTP
  • LeetCode hot 100—最长有效括号
  • 【FAQ】安装Agent的主机,为何不能更改显示分辨率
  • CVE-2025-32102 | Ubuntu 下复现 CrushFTP telnetSocket接口SSRF
  • dataType 和 content-type 参数的作用
  • 补4月22日23日
  • Sentieon软件发布V202503版本
  • 首版次软件产品有哪些阶段?专业软件测试服务公司分享
  • 使用String path = FileUtilTest.class.getResource(“/1.txt“).getPath(); 报找不到路径
  • Spring Boot 中配置线程池时优化 `ThreadPoolTaskExecutor` 的配置总结
  • DDL小练习
  • Java小公司实习面经
  • python字符串(3):字符集/编码(查看修改字符集,乱码);码点和字符的转换(chr和ord),字符串的编码解码函数(encode,decode)
  • Dockerfile指令
  • JavaScript 实现继承及 Class 本质详解
  • 【Python Web开发】02-Socket网络编程02
  • Java 高频面试题解析
  • Langchain提取结构化数据
  • 第九节:性能优化高频题-首屏加载优化策略
  • JS Array 方法 | 区分 slice 和 splice
  • `rfind()` 从字符串的右侧开始查找指定子字符串首次出现的位置