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 创建虚拟机步骤

  1. 打开 VMware,点击「创建新的虚拟机」
  2. 选择「典型(推荐)」→「稍后安装操作系统」
  3. 客户机操作系统选「Linux」,版本选「Ubuntu 64位」
  4. 虚拟机名称填「ArduPilot_Dev」,位置选个空间大的盘
  5. 磁盘大小建议 60GB,选择「将虚拟磁盘存储为单个文件」
  6. 自定义硬件:内存给 8GB 以上,处理器至少 2 核
  7. 加载下载好的 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章:Linux基础准备 安装方式选择 配置软件源 安装开发工具 虚拟机(新手推荐) 双系统(长期开发) 备份 sources.list 替换为国内镜像源 编译工具链 仿真依赖库 核心目标 搭建一个可编译、可仿真的 Ubuntu 22.04 开发环境 后续所有章节都基于这个环境运行

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 的重要数据。分区操作有风险,我曾经手滑把整个硬盘格了……嗯,那是我大学最后悔的一个下午。