2、Linux基础准备:安装Ubuntu 22.04(虚拟机/双系统),配置国内软件源,安装基础开发工具
说实话,很多朋友学 ArduPilot 第一步就卡在环境搭建上。Windows 下编译固件不是不行,但坑太多。我自己的经验是——老老实实用 Linux,能省掉 80% 的莫名其妙的问题。
这一章,我们就来搞定 Ubuntu 22.04 的开发环境。不管你用虚拟机还是双系统,跟着走就行。
2.1 选择你的安装方式:虚拟机 vs 双系统
先别急着下载镜像,想清楚你要哪种方式。我两种都用过,给你说说区别。
| 对比项 | 虚拟机(推荐新手) | 双系统(推荐长期开发) |
|---|---|---|
| 安装难度 | 低,像装个普通软件 | 中,需要分区和引导配置 |
| 性能损耗 | 约 10%-20% | 几乎无损耗 |
| 硬件直通 | USB、串口需要额外配置 | 原生支持 |
| 切换成本 | 随时切回 Windows | 需要重启 |
| 适用场景 | 学习、轻量编译 | 频繁烧录、调试硬件 |
我的建议:如果你只是学仿真、改改参数,虚拟机完全够用。我刚开始学 ArduPilot 时用的就是虚拟机,跑了半年才切到双系统。别一上来就搞双系统,万一引导搞坏了,心态容易崩。
2.2 虚拟机安装 Ubuntu 22.04(推荐方式)
我习惯用 VMware Workstation,当然 VirtualBox 也行。下面以 VMware 为例。
2.2.1 准备工作
- 下载 VMware Workstation Pro(官网注册免费个人版)
- 下载 Ubuntu 22.04 LTS 桌面版镜像(iso 文件)
- 确保硬盘剩余空间至少 40GB
2.2.2 创建虚拟机步骤
- 打开 VMware,点击「创建新的虚拟机」
- 选择「典型(推荐)」→「稍后安装操作系统」
- 客户机操作系统选「Linux」,版本选「Ubuntu 64位」
- 虚拟机名称填「ArduPilot_Dev」,位置选个空间大的盘
- 磁盘大小建议 60GB,选择「将虚拟磁盘存储为单个文件」
- 自定义硬件:内存给 8GB 以上,处理器至少 2 核
- 加载下载好的 Ubuntu iso 镜像,启动虚拟机
注意:我曾经遇到过虚拟机磁盘给太小,编译 ArduPilot 时空间不够。编译一次固件大概要 5-8GB,加上源码和工具链,40GB 是底线。60GB 比较稳妥。
2.2.3 Ubuntu 安装要点
启动后按提示走就行。有几个地方我特别提醒一下:
- 语言:选 English(避免终端路径出现中文)
- 键盘布局:选 English (US)
- 安装类型:选「Erase disk and install Ubuntu」——别怕,这只是擦除虚拟磁盘
- 用户名:建议全小写英文,不要用空格
安装完成后重启,登录系统。嗯,到这里 Ubuntu 就跑起来了。
2.3 配置国内软件源
这一步不做,后面 apt install 能慢到你怀疑人生。我当年在宿舍装个 build-essential 等了半小时……
2.3.1 更换源的方法
# 备份原始源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑源文件
sudo nano /etc/apt/sources.list
把里面的内容全部替换成阿里云源(或者清华、中科大源,都行):
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
保存退出后,执行:
sudo apt update
sudo apt upgrade -y
验证是否生效:看 apt update 的输出,如果看到 mirrors.aliyun.com 的地址,就说明成功了。速度应该能达到 5-10MB/s。
2.4 安装基础开发工具
ArduPilot 编译需要一堆工具链。别一个个装,我直接给你整理好了。
2.4.1 核心编译工具
sudo apt install -y build-essential cmake git
sudo apt install -y python3 python3-pip python3-venv
sudo apt install -y gcc-arm-none-eabi binutils-arm-none-eabi
这里解释一下:
- build-essential:包含 gcc、g++、make 等基础编译器
- cmake:ArduPilot 用 CMake 管理构建,不是 Makefile
- git:版本管理,后面要拉源码
- gcc-arm-none-eabi:交叉编译器,用来编译飞控固件
2.4.2 仿真相关工具
# Gazebo 和 SITL 依赖
sudo apt install -y libtool automake autoconf libexpat1-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libprotobuf-dev protobuf-compiler
sudo apt install -y libboost-all-dev libltdl-dev libudev-dev
2.4.3 验证安装
装完后,跑一下这些命令,确认环境没问题:
gcc --version
cmake --version
git --version
arm-none-eabi-gcc --version
python3 --version
每个命令都应该返回版本号。如果哪个报「command not found」,就重新装一下对应的包。
一个小技巧:装完所有工具后,我习惯把 apt 的安装记录保存下来。万一以后重装系统,直接跑脚本就行:
apt list --installed > ~/installed_packages.txt
2.5 本章知识体系
下面这张图帮你理清这一章的核心逻辑:
2.6 常见问题与避坑
最后,分享几个我踩过的坑:
- 虚拟机卡顿:检查是否开启了 3D 加速,没开的话 VMware 界面会非常卡。在虚拟机设置里勾选「加速 3D 图形」。
- apt update 报错:大概率是源写错了。检查一下 jammy 是不是拼成了 jammmy 或者 jummy。我犯过这种低级错误。
- arm-none-eabi-gcc 装不上:Ubuntu 22.04 的默认源里可能没有最新版。可以用
sudo apt install gcc-arm-none-eabi试试,如果不行,去 ARM 官网下载预编译包手动安装。 - 磁盘空间不够:虚拟机可以扩展磁盘,但需要安装
gparted来调整分区。别问我怎么知道的……
重要提醒:如果你用的是双系统,安装 Ubuntu 前一定要备份 Windows 的重要数据。分区操作有风险,我曾经手滑把整个硬盘格了……嗯,那是我大学最后悔的一个下午。