ROS(Robot Operating System)是机器人开发的核心框架,Mac 系统因内核和依赖限制无法直接安装 ROS,通过 UTM 虚拟机搭建 Ubuntu 20.04 环境是最便捷的解决方案。本文完整记录从 0 开始在 Mac 的 UTM 中安装 Ubuntu 20.04 + ROS Noetic 的全过程,解决安装中遇到的源配置、权限异常、硬盘挂载、网络访问等核心问题,适合 ROS 新手参考复刻。
一、环境准备
- 软件版本匹配(关键!)
表格
组件 版本 / 规格 说明
主机系统 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 完整版安装需足够存储空间 - UTM 创建虚拟机(基础步骤)
打开 UTM,点击「新建」→ 选择「Virtualize」→ 选择「Linux」;
挂载下载好的 Ubuntu 20.04 ISO 镜像文件;
配置虚拟机参数:内存建议 4G+,硬盘容量设置 150G+;
启动虚拟机,进入 Ubuntu Live 模式(选择「Try Ubuntu」)。
二、Ubuntu 系统安装(解决 Live 模式核心限制) - 问题背景
Live 模式下 Ubuntu 运行在内存中,存在空间不足、系统服务不全、依赖链缺失等问题,无法安装 ROS 完整版,必须将系统永久安装到虚拟机硬盘。 - 安装向导启动(解决权限报错)
在 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
- 硬盘分区配置(关键!)
安装类型选择「其他选项」,对 150G 硬盘进行手动分区:
/dev/sda1:EFI 分区,512M,文件系统选择FAT32(自动生成,无需修改);
/dev/sda2:根分区(/),剩余全部空间,文件系统选择Ext4,勾选「格式化此分区」;
确认「安装启动引导器的设备」为/dev/sda(整个硬盘),点击「现在安装」;
按提示完成时区(上海)、用户名 / 密码设置,等待安装完成。
- 修复「重启仍进入 Live 模式」问题
安装完成后重启,若仍进入 Ubuntu Live 界面,原因是 UTM 优先从 ISO 镜像启动:
关闭虚拟机,在 UTM 虚拟机设置中找到「CD/DVD」选项;
将挂载的 ISO 镜像改为「None」,彻底移除镜像文件;
重新启动虚拟机,选择 GRUB 菜单中的「Ubuntu」,进入完整安装的系统。
三、ROS Noetic 安装(核心步骤 + 问题解决)
- 系统基础环境更新
bash
运行
更新系统包缓存并升级
sudo apt update && sudo apt upgrade -y
安装ROS必备基础工具
sudo apt install -y curl wget gnupg2 lsb-release build-essential
- 配置 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
- 解决 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
- 配置 ROS 环境变量(永久生效)
bash
运行
将环境变量写入.bashrc,终端启动自动加载
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
立即生效环境变量
source ~/.bashrc
- 验证 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 开发环境,满足机器人开发、仿真、可视化等全流程需求。