从 0 开始:Mac 下 UTM 虚拟机安装 ROS Noetic(Ubuntu 20.04)

ROS(Robot Operating System)是机器人开发的核心框架,Mac 系统因内核和依赖限制无法直接安装 ROS,通过 UTM 虚拟机搭建 Ubuntu 20.04 环境是最便捷的解决方案。本文完整记录从 0 开始在 Mac 的 UTM 中安装 Ubuntu 20.04 + ROS Noetic 的全过程,解决安装中遇到的源配置、权限异常、硬盘挂载、网络访问等核心问题,适合 ROS 新手参考复刻。

一、环境准备

  1. 软件版本匹配(关键!)
    表格
    组件 版本 / 规格 说明
    主机系统 MacOS(任意版本) 无需额外配置,仅需安装 UTM
    虚拟机工具 UTM(最新版) 免费开源,可从 App Store 或官网下载
    Ubuntu 镜像 Ubuntu 20.04.6 Desktop AMD64 ROS Noetic 仅适配 Ubuntu 20.04(focal)
    ROS 版本 Noetic Ninjemys 对应 Ubuntu 20.04,稳定版
    虚拟机配置 内存≥4G,硬盘≥150G ROS 完整版安装需足够存储空间
  2. UTM 创建虚拟机(基础步骤)
    打开 UTM,点击「新建」→ 选择「Virtualize」→ 选择「Linux」;
    挂载下载好的 Ubuntu 20.04 ISO 镜像文件;
    配置虚拟机参数:内存建议 4G+,硬盘容量设置 150G+;
    启动虚拟机,进入 Ubuntu Live 模式(选择「Try Ubuntu」)。
    二、Ubuntu 系统安装(解决 Live 模式核心限制)
  3. 问题背景
    Live 模式下 Ubuntu 运行在内存中,存在空间不足、系统服务不全、依赖链缺失等问题,无法安装 ROS 完整版,必须将系统永久安装到虚拟机硬盘。
  4. 安装向导启动(解决权限报错)
    在 Live 桌面点击「Install Ubuntu」,若提示Error getting authority: Could not connect: No such file or directory,执行以下命令修复权限:
    bash
    运行

重启权限管理服务

sudo systemctl restart dbus

授予图形界面权限

sudo xhost +si:localuser:root

重置显示环境变量

export DISPLAY=:0

sudo -E env "DISPLAY=$DISPLAY" ubiquity

  1. 硬盘分区配置(关键!)

安装类型选择「其他选项」,对 150G 硬盘进行手动分区:

/dev/sda1:EFI 分区,512M,文件系统选择FAT32(自动生成,无需修改);

/dev/sda2:根分区(/),剩余全部空间,文件系统选择Ext4,勾选「格式化此分区」;

确认「安装启动引导器的设备」为/dev/sda(整个硬盘),点击「现在安装」;

按提示完成时区(上海)、用户名 / 密码设置,等待安装完成。

  1. 修复「重启仍进入 Live 模式」问题

安装完成后重启,若仍进入 Ubuntu Live 界面,原因是 UTM 优先从 ISO 镜像启动:

关闭虚拟机,在 UTM 虚拟机设置中找到「CD/DVD」选项;

将挂载的 ISO 镜像改为「None」,彻底移除镜像文件;

重新启动虚拟机,选择 GRUB 菜单中的「Ubuntu」,进入完整安装的系统。

三、ROS Noetic 安装(核心步骤 + 问题解决)

  1. 系统基础环境更新
    bash
    运行

更新系统包缓存并升级

sudo apt update && sudo apt upgrade -y

安装ROS必备基础工具

sudo apt install -y curl wget gnupg2 lsb-release build-essential

  1. 配置 ROS 国内源(解决访问慢 / 签名失败)

问题:官方源访问慢 + 公钥验证失败

原生 ROS 源依赖 GitHub 和海外服务器,国内访问易超时,且公钥导入失败会提示NO_PUBKEY F42ED6FBAB17C654。

解决方案:使用中科大源

bash

运行

添加中科大ROS源(适配Ubuntu 20.04)

添加 ROS 源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

添加密钥

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

更新软件包列表

sudo apt update

运行

安装ROS Noetic完整版(含GUI、仿真、教程)

sudo apt install -y ros-noetic-desktop-full

  1. 解决 rosdep 初始化失败(最大坑!)

问题现象

执行sudo rosdep init时提示:

bash

运行

ERROR: cannot download default sources list from:

https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list

Website may be down.

原因:国内网络无法访问 GitHub 的raw.githubusercontent.com域名。

解决方案:安装 rosdepc(国内镜像版)

bash

运行

卸载原生rosdep

sudo apt remove -y python3-rosdep

安装pip工具

sudo apt install -y python3-pip

安装rosdepc(清华源加速)

sudo pip install rosdepc -i https://pypi.tuna.tsinghua.edu.cn/simple

初始化+更新(国内镜像,100%成功)

sudo rosdepc init

rosdepc update

  1. 配置 ROS 环境变量(永久生效)

bash

运行

将环境变量写入.bashrc,终端启动自动加载

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

立即生效环境变量

source ~/.bashrc

  1. 验证 ROS 安装成功

bash

运行

启动ROS核心(无红色报错则成功)

roscore

新开终端启动可视化工具(验证GUI功能)

rviz

新开终端启动仿真工具(验证仿真功能)

gazebo

✅ 成功标志:

roscore终端输出started core service [/rosout];

rviz能打开 3D 可视化窗口,gazebo能加载仿真界面。

四、常见问题汇总(避坑指南)

表格

问题现象 原因 解决方案

df -lh看不到 150G 硬盘分区 分区未挂载,仍在 Live 模式 移除 ISO 镜像,从硬盘启动完整系统

E: Unable to locate package ros-noetic-desktop-full ROS 源未正确添加 / 生效 直接指定focal版本添加源,而非依赖lsb_release -sc自动获取

zsys daemon connection refused Live 模式下系统快照服务未启动 忽略该警告,不影响 ROS 安装和使用

ubiquity安装向导无法启动 图形界面权限 / DBUS 服务未启动 重启 dbus 服务 + 重置 DISPLAY 环境变量

rosdepc update超时 国内镜像偶尔波动 多执行 1-2 次,或检查虚拟机网络连接

五、最终验证命令(一键回顾)

bash

运行

1. 验证硬盘挂载(确认/dev/sda2为根目录)

df -lh

2. 验证ROS环境

source /opt/ros/noetic/setup.bash

roscore

3. 验证核心工具

rviz

gazebo

总结

Mac 下 UTM 安装 ROS 的核心逻辑:

先将 Ubuntu 完整安装到虚拟机硬盘,彻底避开 Live 模式的空间 / 权限限制;

改用国内源(中科大 / 清华)解决 ROS 源访问慢、公钥验证失败问题;

用 rosdepc 替代原生 rosdep,解决 GitHub 资源访问限制;

确保硬盘分区正确挂载,为 ROS 安装提供足够存储空间。

完成以上步骤后,即可在 Mac 的 UTM 中拥有完整的 ROS Noetic 开发环境,满足机器人开发、仿真、可视化等全流程需求。

相关推荐
深念Y2 小时前
旧物新生:用魅蓝Note5 root后搭建家用Linux服务器(部署宝塔/AList/QB)
linux·运维·服务器·手机·diy·魔改·魅族
bing_feilong2 小时前
Jetson Orin Nano(7): ubuntu22.04安装chromium
ubuntu
weixin_447640062 小时前
AI使用验证:windows上通过WSL2运行ubuntu,ubuntu的系统时间变慢且不同步
linux·运维·ubuntu
开开心心就好2 小时前
轻量级PDF阅读器,仅几M大小打开秒开
linux·运维·服务器·安全·pdf·1024程序员节·oneflow
RDCJM2 小时前
Linux下MySQL的简单使用
linux·mysql·adb
ljh5746491192 小时前
linux sed 命令
linux·运维·服务器
wbs_scy2 小时前
Linux 进程间通信之管道基础解析 —— 匿名管道的原理与实现
linux·运维·服务器
牛马鸡niumasi2 小时前
Linux: zip/tar/scp
linux
无限进步_2 小时前
深入解析C++容器适配器:stack、queue与deque的实现与应用
linux·开发语言·c++·windows·git·github·visual studio