虚拟机安装Ubuntu 18.04与ROS Melodic完整教程

发布时间:2026/10/17 23:08:24
虚拟机安装Ubuntu 18.04与ROS Melodic完整教程 每个做机器人相关的开发者不管是做SLAM、机械臂还是无人车基本都绕不过一个坎在Linux环境下搭一套ROS开发环境。而大多数人的第一选择不是直接装双系统而是“虚拟机 安装Ubuntu18.04和ROS Melodic”。我第一次搭这套环境的时候也觉得挺折腾系统版本、ROS版本、源、依赖一堆事踩了不少坑之后才跑通。这篇文章就把这套流程完整记录下来从创建虚拟机开始到Ubuntu 18.04装好再一直把ROS Melodic跑起来中间涉及的所有关键操作、参数选择、避坑事项都会讲到。先说清楚这套组合解决什么问题Windows环境下没法直接跑ROS虚拟机方案不用动宿主机系统日常办公还是用Windows需要编译运行ROS代码时切回虚拟机互不干扰。适合刚入门机器人开发的学生、想从其他方向转过来做机器人应用的人、需要复现老项目但不想重装电脑的人。整篇文章按实操顺序来你可以照着一步步做。1. 为什么还要用虚拟机装Ubuntu 18.04和ROS Melodic1.1 双系统与虚拟机怎么选我见过很多新手上来就问“为什么不用双系统”双系统确实性能更好硬件资源全部给Linux用跑Gazebo和rviz会更流畅。但双系统的代价也摆在那里每次切换系统都得重启电脑想同时看Windows里的资料和Linux里的代码就很不方便装系统过程中引导出问题可能把Windows也搞挂更关键的是双系统下你不敢随便折腾系统万一环境装坏了修复成本很高。虚拟机在这几个方面优势明显。虚拟机运行在宿主机之上出问题可以打快照系统改坏了恢复一下就行不用重装两边系统。虚拟机内部和宿主机共享剪贴板、拖拽文件、共享文件夹之后Windows和Linux之间的资料交换非常顺手。唯一的顾虑是性能损耗但对学习阶段的ROS开发来说编译单个包、跑turtlesim、做简单的rviz可视化虚拟机的性能完全够用。跑大型3D仿真时确实会吃力那就是后面升级物理机或转双系统的事。1.2 Ubuntu 18.04与ROS Melodic的组合现状Ubuntu 18.04官方标准支持期已经结束ROS 1也在2025年全面停止维护。但一个现实摆在眼前市面上的ROS教材、机器人竞赛培训、大量开源项目代码仍然是基于这套组合写的。很多论文开源代码用到的功能包版本跑到新版本ROS上可能因为接口变化、依赖库版本对不上直接编译失败反而在Melodic上一切正常。这就是生态惯性。你可以用更新的Ubuntu 20.04加ROS Noetic甚至直接上ROS 2但遇到老项目还是需要一套1x.04加对应ROS版本的环境。虚拟机正好干这个事一个环境坏了不影响另一个环境多版本共存也方便。1.3 这套方案适合哪些人学生党是最典型的场景。课程作业、毕业设计用到的很多Demo基于Melodic需要在宿舍笔记本上运行笔记本性能有限又不想冒险装双系统虚拟机是最稳妥的起点。转行做机器人开发的人同样适合先在虚拟机里把ROS的工程结构、常用命令、工作流程摸熟再考虑配置更高、更贴近实际项目的环境。还有一些做技术验证的工程师需要快速验证一个开源算法虚拟机里跑通了再决定要不要上实机。这套组合一个很大的好处是资料多遇到的问题几乎都能搜到现成解决方案学习曲线平缓很多。2. 环境准备虚拟机选型、参数规划与系统镜像下载2.1 常用虚拟机软件怎么选目前在个人PC上最常见的是VMware Workstation和VirtualBox这两款。VMware Workstation Pro功能全面3D加速相对更稳定快照管理简单直观对新手友好VirtualBox免费开源基础功能齐全但3D图形支持和剪贴板共享等体验上偶尔会有些小问题。我的建议是如果条件允许优先用VMware Workstation Pro。不是说VirtualBox不行而是在虚拟机里跑Ubuntu图形界面、后续装ROS的图形工具、跑rviz的时候VMware的图形加速和响应手感确实更好。VMware对新版Ubuntu的支持也更及时一些虚拟化选项比如UEFI、NVMe设备配置起来更顺手。VirtualBox也不是不能用但遇到显示异常、复制粘贴失效的情况会多一些新手容易卡住。两款软件在虚拟机文件格式上不互通选定后别随意迁移。2.2 创建虚拟机前的硬件分配与网络模式选择虚拟机不是创建完直接装系统就行先把资源分配好后面能省很多事。以一台16GB内存、六核心处理器的宿主机为例我给虚拟机的配置是这样配置项推荐值说明内存8GB至少4GB虚拟机内存小于4GB跑桌面和ROS勉强编译大功能包容易卡处理器4核心如果宿主机核心数少至少给2核心catkin编译是并行的核心越多越快硬盘80GB60GB也能用装完ROS和常用工具后剩余空间会比较紧张网络NAT模式虚拟机共享宿主机网络上网简单稳定适合大多数开发场景磁盘类型SATA兼容性最佳不需要刻意追求NVMe内存和CPU分配要结合宿主机剩余资源来决定。虚拟机开太大的话宿主机自己卡成幻灯片反而影响体验。NAT模式下虚拟机可以正常访问外网、下载软件包宿主机和虚拟机之间可以通过共享文件夹和剪贴板交换文件绝大多数学习场景都够用。如果后面做多机通信比如笔记本连小车上的机载电脑再改成桥接模式。2.3 下载Ubuntu 18.04镜像Ubuntu 18.04的最后一个版本是18.04.6下载镜像时认准这个版本号即可。镜像可以从官网或国内的开源软件镜像站获取。下载后核对一下文件名里的版本号确认是“ubuntu-18.04.6-desktop-amd64.iso”。如果镜像文件名里写着Beta、Alpha、Daily说明是测试版或开发版不要用。镜像大小在2GB左右下载完成后建议和镜像站的SHA256校验值对比一下防止下载损坏。校验值在镜像站的下载页面上就有Windows下用PowerShell的Get-FileHash命令即可计算Get-FileHash -Algorithm SHA256 .\ubuntu-18.04.6-desktop-amd64.iso校验通过后再开始下一步。这一步很多人会跳过但镜像文件要是下载损坏安装到一半报错定位问题会很痛苦。3. 从创建虚拟机到进桌面Ubuntu 18.04安装全过程3.1 新建虚拟机的关键参数设置VMware创建虚拟机的时候新建虚拟机向导里有一步会问“安装程序光盘映像文件”这里不要直接选ISO镜像而是选择“稍后安装操作系统”。原因很简单选“稍后安装”可以先把虚拟机硬件参数配置完整之后再挂载ISO启动安装流程更可控。后续的几步配置要点客户机操作系统选择“Linux”“版本”选择“Ubuntu 64位”。选成32位会导致系统安装和ROS运行都出问题务必确认。虚拟机名称按项目来比如“ubuntu18-ros-melodic”以后创建多个虚拟机时一目了然。固件类型保持BIOS即可。UEFI在虚拟机里意义不大还可能带来引导兼容问题。处理器设置里勾选“虚拟化Intel VT-x/AMD-V”。如果虚拟化引擎选项是灰色不可用说明宿主机BIOS里没开启虚拟化需要重启进BIOS打开这一步对安装Ubuntu影响很大后面会专门讲。内存按前面的表格分配不要低于4GB。网络类型选择NAT。创建完成后先不急着启动。在虚拟机设置里把光驱指向下载好的Ubuntu 18.04.6 ISO镜像然后可以顺便关掉“启动时连接声卡”和“打印机”这类用不到的设备减少干扰。虚拟机设置页面里的“显示器”设置把“加速3D图形”勾上跑rviz的时候图形渲染会更顺畅。3.2 Ubuntu安装向导里的几个关键选择启动虚拟机进入安装界面。左侧语言列表选择“English”。可能有读者习惯选中文但我建议系统安装阶段就用英文。原因是后面所有ROS命令、功能包、错误日志几乎都是英文的终端里的中文路径偶尔也会引发编码和兼容问题系统保持英文反而省心。中文输入法可以在系统装好后自行添加不影响使用习惯。进入“Updates and other software”页面有两个选择要点。第一“Install third-party software for graphics and Wi-Fi”这个选项在虚拟机里其实用不到因为图形和网络由宿主机与虚拟机软件虚拟化提供的不需要闭源驱动可以不勾选。第二安装类型选“Erase disk and install Ubuntu”或“Something else”。在虚拟机里没有双系统共存需求直接整盘安装最简单。不过我还是建议选择“Something else”手动分区理由见下。硬盘分区方面手动分区能更清楚自己给系统分配了多少空间。在虚拟机里最稳妥的分区方案先建一个“/”分区大小50GB以上文件系统选择ext4用于安装系统和所有软件再建一个swap分区大小4GB到8GB物理内存是8GB时swap给4GB即可主要用作系统休眠和内存溢出时的兜底。如果你的磁盘空间只有60GB“/”给55GBswap给4GB剩余空间太多反而浪费。如果虚拟机的系统盘是用UEFI方式引导的分区时还需要创建一个EFI系统分区。用BIOS引导则不需要。判断方法很简单如果启动时看到的是GRUB菜单说明BIOS引导如果看到的是带蓝色背景的UEFI菜单则需要EFI分区。VMware默认情况下用BIOS引导按上面的分区方案即可。3.3 账号设置与安装完成后的第一轮更新用户账号设置页面填用户名和密码。这个账户是系统管理员账户会加入sudo组后面几乎每个安装命令都要通过它来执行。密码在本地虚拟机里使用设成“123456”这类简单密码完全没问题别用特殊字符给自己找麻烦。安装过程大约持续十到二十分钟取决于虚拟机CPU和磁盘性能。安装完成后重启。第一次进入桌面后建议立刻打开终端执行sudo apt update sudo apt upgrade -y这一步把系统自带软件包更新到当前镜像源里的最新版本修复已知安全漏洞和依赖问题。虚拟机刚装完的系统依赖库版本可能偏旧后续安装ROS时如果遇到依赖冲突多半和这轮更新没做有关。在升级过程中如果问到是否保持某个服务的配置版本一般选择保持默认即可。4. ROS Melodic完整安装换源、装包、初始化、跑通小乌龟4.1 先解决系统源备份与替换ROS安装依赖apt软件包管理而apt的软件源配置文件是/etc/apt/sources.list。Ubuntu刚装好时默认指向官方软件仓库国内访问速度很不稳定下载安装包经常只有几十KB/s甚至会中断。所以装ROS之前先把系统源换成国内访问速度较快的开源镜像站。执行前先备份这是所有系统配置操作的习惯改动前先备份出问题能快速恢复。sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后编辑文件把官方地址替换为镜像站地址。替换方法可以是手动编辑也可以用sed命令批量替换。假设镜像站地址写成mirrors.example.com实际使用哪个镜像站直接搜对应镜像站的帮助文档就有Ubuntu 18.04的源配置sudo sed -i s/archive.ubuntu.com/mirrors.example.com/g /etc/apt/sources.list sudo sed -i s/security.ubuntu.com/mirrors.example.com/g /etc/apt/sources.list替换后执行sudo apt update正常情况下更新过程会明显变快拉取软件包列表不会再长时间卡住。如果update时出现报错把配置文件内容与镜像站帮助文档核对一下尤其是bionic、bionic-updates、bionic-security这些仓库路径必须存在并且与Ubuntu 18.04对应。4.2 添加ROS软件源与密钥ROS官方为Ubuntu维护了独立的软件源地址格式是deb http://packages.ros.org/ros/ubuntu bionic main在国内直接访问官方源速度不理想许多国内开源镜像站也提供ROS源。我使用的方案是直接配置国内镜像站的ROS源速度和稳定性都有保障。配置步骤先向软件源列表添加ROS仓库sudo sh -c echo deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list上面命令会写入官方地址。换成国内镜像时参考镜像站ROS源帮助文档的格式替换域名即可。接着添加ROS官方的GPG密钥。没有这个密钥apt会拒绝安装来自该软件源的包并报出NO_PUBKEY错误。命令是sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE88626B1A2F3E8F3D0B2E2E5B3C1这条命令会从密钥服务器拉取ROS官方密钥。密钥服务器在某些时候连接慢可以多试几次或者从镜像站直接下载密钥文件并用sudo apt-key add导入。4.3 安装ros-melodic-desktop-full密钥配置好后再执行一次sudo apt update让apt识别到刚添加的ROS软件源。随后安装ROS Melodic的完整桌面版sudo apt install ros-melodic-desktop-full这个软件包组包含三大部分ROS核心模块包括roscpp、rospy、tf、actionlib等基础库、可视化与调试工具rviz、rqt全家桶、2D仿真器turtlesim和基础机器人模型。它覆盖了绝大多数入门和中级开发场景不用再单独纠结装哪些包。安装过程会拉取约1.5GB至2GB的软件包耗时较长。中途如果出现依赖冲突优先查看有没有提示缺少某类库通常执行一下sudo apt --fix-broken install可以解决。安装完成后可以验证一下核心库是否装好dpkg -L ros-melodic-roscpp | head输出结果里能看到/opt/ros/melodic下的文件路径基本说明安装正常。4.4 rosdep初始化与环境变量配置ROS的包管理器工具rosdep负责解析并安装功能包的外部依赖。安装完成后需要执行两步初始化sudo rosdep init rosdep updaterosdep init会创建/etc/ros/rosdep/sources.list.d/20-default.list文件它指向官方rosdep数据仓库地址。rosdep update会下载并更新本地的rosdep索引数据库。这一步是整个安装过程中最容易卡住的地方因为rosdep依赖的数据仓库托管在境外服务器上国内网络访问经常超时。我遇到的问题和解决办法放在后面的常见问题章节这里先按照标准流程执行。初始化完成后配置环境变量。ROS命令和功能包默认安装在/opt/ros/melodic下需要把这个路径加入当前shell的环境变量。执行echo source /opt/ros/melodic/setup.bash ~/.bashrc source ~/.bashrcsource命令的作用是让当前shell立刻加载ROS环境变量不用重启终端。如果忘记执行第二条新开终端里roscore等命令会提示找不到所以平时新建终端后建议先确认一行命令能正常运行echo $ROS_DISTRO输出melodic说明环境变量生效。之后安装一些常用的构建工具sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential git这些工具在后续创建catkin工作区、编译功能包时会用到。4.5 用turtlesim验证ROS可用性环境配好后最快验证ROS是否可用的方式就是跑一下小乌龟。打开一个终端启动ROS主节点roscore如果能看到类似started core service [/rosout]的输出说明ROS核心正常运行。再开一个终端启动小乌龟节点rosrun turtlesim turtlesim_node屏幕上应该弹出一个蓝色背景的小乌龟窗口。第三个终端启动键盘遥控节点rosrun turtlesim turtle_teleop_key在键盘上按方向键小乌龟会跟随移动。整个过程跑通说明ROS安装成功且环境变量、节点通信都正常。到这里一个基础的“虚拟机Ubuntu 18.04 ROS Melodic”环境就搭好了。但虚拟机环境下的日常使用还需要做几件事才能舒服。5. 虚拟机场景下的增强配置与性能优化技巧5.1 安装open-vm-tools解决剪贴板、分辨率与拖拽问题刚装完的Ubuntu虚拟机分辨率大概率锁死在800x600或者640x480从宿主机向虚拟机拖文件也用不了Windows和虚拟机之间无法共享剪贴板。这是因为VMware完全虚拟化的显示适配器需要对应的驱动支持这个驱动就是VMware Tools。安装方式有两种一种是通过VMware菜单中的“安装VMware Tools”它会向虚拟机光驱提供tar.gz压缩包解压后执行vmware-install.pl脚本另一种是直接通过apt安装开源版本的VMware Tools驱动我推荐这种方式更简单稳定。在终端里执行sudo apt install open-vm-tools open-vm-tools-desktop安装完成后重启虚拟机。重启后分辨率会自动适配虚拟机窗口大小宿主机和虚拟机之间的剪贴板共享、拖拽文件、窗口自适应缩放全部生效。如果重启后剪贴板仍然不工作检查宿主机VMware设置里的“客户机隔离”选项确保“启用复制粘贴”勾选状态。5.2 快照的正确打开方式虚拟机最大的价值之一是快照功能。快照把系统当前状态完整保存下来之后无论怎么折腾都能一键恢复到保存的那个状态。我发现很多人要么不用快照要么乱打快照导致磁盘占用暴涨。正确做法是在两个时间点打快照。第一个时间点是刚装好系统并完成apt更新之后命名为“18.04-base”。这时候系统是干净的没有ROS适合作为任何后续工作的起点。第二个时间点是ROS安装完成并通过turtlesim验证后命名为“ros-melodic-clean”。后面开发中需要在系统里安装各种库、编译各种源码出现问题直接在VMware的“虚拟机-快照-快照管理器”里恢复到ros-melodic-clean比手动卸载重装快几个数量级。快照的代价是磁盘空间。每个快照都会保存自上次快照以来的系统差异数据所以快照数量建议控制在两三个以内完成一个阶段目标后删除之前的旧快照。5.3 虚拟机性能调优与磁盘瘦身虚拟机用久了会感觉越来越卡排查方向集中在内存、CPU、磁盘三个层面。内存不足是最常见的原因可以在虚拟机关机状态下把内存调大观察宿主机空闲内存是否充足。CPU核心数也可以按需调整但核心数超过宿主机物理核心数反而会拖慢性能保持在物理核心一半到三分之二之间最合理。Ubuntu桌面动画特效在虚拟机里也算一种负担。如果觉得桌面操作不流畅可以在Ubuntu的设置里把动画效果关掉或者直接用GNOME Classi环境桌面响应会有明显改善。磁盘占用问题值得留意。虚拟机硬盘文件会随着系统里创建、删除文件而不断膨胀即使删除了大量文件虚拟磁盘文件在宿主机上的大小也不会自动缩小。VMware提供了碎片整理和磁盘压缩功能。在虚拟机关机状态下从VMware菜单进入“虚拟机-设置-硬盘-碎片整理”和“压缩”可以回收一部分空间。宿主机磁盘紧张时这个操作很有用。5.4 共享文件夹配置除了剪贴板和拖拽文件更稳定的文件交换方式是共享文件夹。在VMware中对虚拟机设置一个Windows本地的文件夹路径Ubuntu内就能把这个文件夹挂载到自己喜欢的路径下。配置步骤虚拟机关机状态下在“虚拟机设置-选项-共享文件夹”里添加宿主机文件夹路径设置为“总是启用”。启动虚拟机后执行sudo mkdir -p /mnt/hgfs sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid1000然后看看/mnt/hgfs下是否出现了共享的文件夹。如果希望重启虚拟机后自动挂载把上面挂载命令写入/etc/fstab。在宿主机和虚拟机间传输代码文件、编译脚本、数据集走共享文件夹非常方便速度和稳定性都远胜拖拽。6. 安装与使用中的高频问题排查与避坑记录6.1 虚拟化未开启导致的启动异常现象是虚拟机启动时弹窗提示VMware无法运行或者开机后Ubuntu一直黑屏进程卡死。原因多数是宿主机BIOS中没有开启CPU虚拟化功能。排查方法Windows任务管理器的“性能”标签页中查看“虚拟化”状态。如果显示“已禁用”需要重启电脑进入BIOS找到Intel Virtualization Technology或AMD SVM的选项改为Enabled。不同品牌BIOS里的菜单名称有差异大致方向是“Advanced”或“CPU Configuration”下。开启并保存重启后虚拟机的启动速度会明显改善。6.2 apt源失效与更新失败Ubuntu 18.04进入停止标准支持阶段后部分第三方镜像源可能下线或不再更新bionic仓库。apt update时出现“仓库不再包含Release文件”或404错误基本就是源配置里的镜像地址失效了。处理方案换一个还在维护的国内镜像源重新编辑/etc/apt/sources.list把镜像站地址换成当前可用的地址再执行sudo apt update。如果懒得分清域名最省事的做法是直接用sed把mirrors.example.com批量替换为新的镜像站地址保留之前的备份文件以防需要还原。6.3 rosdep init和update网络超时这是ROS Melodic安装中最高频的报错。sudo rosdep init时卡住或提示连接失败rosdep update时下载中断本质都是因为rosdep数据所在的境外服务器网络链路不稳定。实用的处理序列先重试两三次有时候只是临时网络抖动。如果依旧失败检查DNS设置可以临时把DNS改为公共DNS再试。另一种思路是从一个已经成功的ROS环境里打包rosdep数据拷贝到当前机器使用具体办法是把/etc/ros/rosdep/sources.list.d/目录和~/.ros/rosdep目录打包在目标机器对应路径下解压然后执行rosdep update数据较旧但基本可用。还有一种做法是网上有一些国内可访问的ROS源码镜像仓库配置它们替代默认rosdep源也能解决连接问题。不管用哪种方案rosdep只影响功能包依赖的自动解析不影响ROS核心运行如果功能包不多先手动安装依赖也可以跳过这一步。6.4 功能包安装与编译常见问题在sudo apt install ros-melodic-xxx时发现包不存在多数情况是功能包名称拼写错误或者该功能包不在ros-melodic-desktop-full里但存在于ROS仓库中。用搜索命令确认apt-cache search ros-melodic | grep xxx确认名称后再安装。也可以直接访问ROS发行版的功能包索引页面确认包名再执行安装。编译功能包时如果出现C标准不匹配、缺少Boost库、找不到opencv头文件等报错多半是系统缺少编译所需依赖。Ubuntu 18.04自带Python 2.7和GCC 7ROS Melodic默认就是对接这套工具链不要手痒去升级系统里的GCC或Python默认版本某次升级直接导致整个ROS环境deprecated的情况不在少数。6.5 键盘、中文输入法与其他日常问题虚拟机里Ubuntu键盘输入卡顿或按键错乱优先检查VMware“虚拟机-可移动设备”中键盘相关选项确认宿主机输入法状态正常。中文输入法方面如果坚持在Ubuntu虚拟机里用中文输入可以在系统设置安装中文语言包然后在“区域与语言”中添加拼音输入法。我更推荐的做法是虚拟机保持英文系统宿主机Windows保持中文环境两边复制粘贴效率反而最高避免切换输入法各种冲突。我个人装完这套环境后的体会是真正耗时的不是安装过程本身而是“装完又坏、坏了又装”的重复劳动。如果你也打算长期在这个环境里做开发一定把快照这件事用好装好一套干净的系统加ROS立刻保存快照之后随意折腾。还有一个小习惯分享一下每次创建新项目或克隆别人的代码之前先在虚拟机里执行一次sudo apt update sudo apt install -y再把共享文件夹里的源码拷贝进工作区编译出错率会低很多。系统版本和ROS版本保持和项目需求一致不要手痒做升级稳定复现永远比追新更重要。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询