2、Ubuntu系统准备:虚拟机安装、Ubuntu 20.04 LTS安装、系统基础配置、换源与更新

说实话,很多新手在PX4编译上栽跟头,八成不是代码的问题,而是环境没搭好。我见过太多人直接在Windows上硬搞,结果各种路径报错、依赖冲突,折腾两天连第一个固件都没编译出来。

所以这一章,咱们老老实实把Ubuntu环境准备好。你想想看,地基打稳了,后面盖楼才快。

2.1 为什么选虚拟机?为什么是Ubuntu 20.04?

先回答两个最常被问到的问题。

为什么用虚拟机,而不是双系统或WSL?

我个人习惯用虚拟机,原因很简单:快照恢复。我在项目里踩过坑——有一次编译时手滑执行了sudo rm -rf /(别笑,真有人这么干),整个系统直接崩了。如果是双系统,你得重装;如果是虚拟机,恢复快照只要30秒。

另外,虚拟机里搞坏了不影响宿主机。你可以在里面随便试各种工具链版本,大不了删了重建。

为什么是Ubuntu 20.04 LTS,而不是22.04或18.04?

PX4官方在2024年之前,长期把20.04作为推荐版本。虽然现在也支持22.04,但很多第三方库和工具链在20.04上验证得最充分。我去年帮一个团队排查编译问题,最后发现就是因为他们用了22.04上某个新版GCC,跟PX4的旧版编译器不兼容。

核心结论:Ubuntu 20.04 LTS + 虚拟机 = 当前最稳妥的PX4编译环境组合。

2.2 虚拟机软件选择与安装

主流的虚拟机软件就两个:VMware Workstation Pro 和 VirtualBox。我两个都用过,简单对比一下:

特性 VMware Workstation Pro VirtualBox
性能 更好,3D加速强 一般,但够用
快照功能 支持,操作方便 支持,但略繁琐
价格 付费(有试用期) 免费开源
USB设备透传 稳定 偶尔掉线
适合人群 有预算、追求稳定 学生、个人开发者

我个人建议:如果你是学生或者刚开始学,用VirtualBox完全够用。等后面需要接飞控硬件调试时,再考虑VMware。

安装过程很简单,去官网下载对应版本,一路下一步就行。嗯,这里要注意:安装路径不要有中文,否则后面虚拟机启动可能报错。

2.3 创建虚拟机 & 安装Ubuntu 20.04

这一步我拆成几个关键动作,你跟着做就行。

2.3.1 创建虚拟机前的资源配置

创建虚拟机时,有几个参数很关键,我直接给推荐值:

  • 内存:至少4GB,建议8GB。编译PX4时内存不够会直接OOM(内存溢出),我遇到过编译到一半卡死的情况。
  • 处理器:至少2核,建议4核。编译是CPU密集型任务,核越多越快。
  • 磁盘:至少40GB,建议60GB。别抠这点空间,后面装工具链、下载源码、编译中间文件,20GB很快就满了。
  • 网络:选NAT模式,最简单,宿主机能上网虚拟机就能上。

小技巧:磁盘选"动态分配",这样一开始只占实际使用的大小,不会立刻吃掉你60GB硬盘空间。

2.3.2 安装Ubuntu 20.04 LTS

下载好ISO镜像后,挂载到虚拟机的光驱里,启动安装。安装过程有几个地方容易出错:

  1. 分区:新手直接选"擦除整个磁盘并安装Ubuntu"就行,别手动分区,容易搞乱。
  2. 用户名和密码:记住你设的密码,后面sudo操作天天要用。我习惯设一个简单密码,比如123456,反正虚拟机里没什么敏感数据。
  3. 安装第三方软件:勾选"安装第三方软件",里面包含一些无线网卡驱动和多媒体解码器,省得后面折腾。

安装完成后重启,拔掉ISO镜像,你就得到一个干净的Ubuntu 20.04系统了。

2.4 系统基础配置

系统装好了,但还不能直接用。有几个基础配置必须做。

2.4.1 安装VMware Tools / VirtualBox增强功能

这个一定要装。不装的话,你会发现:

  • 屏幕分辨率调不了,永远800x600
  • 鼠标进出虚拟机要按快捷键,很烦
  • 剪贴板不能共享,复制代码得手动敲

安装方法很简单:虚拟机菜单里找到"安装VMware Tools"或"安装增强功能",然后在Ubuntu里执行:

# 对于VirtualBox
sudo apt update
sudo apt install -y virtualbox-guest-dkms virtualbox-guest-utils

# 对于VMware
sudo mount /dev/cdrom /mnt
cd /mnt
sudo ./vmware-install.pl -d

装完重启,分辨率就正常了。

2.4.2 安装SSH服务(可选但推荐)

我习惯用SSH连进虚拟机操作,这样可以在宿主机上开多个终端窗口,比在虚拟机里切来切去方便。安装命令:

sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh

然后用ip a查看虚拟机的IP地址,在宿主机上用SSH客户端连进去就行。

2.4.3 安装基础开发工具

有些工具是编译PX4必须的,提前装好:

sudo apt install -y git vim curl wget build-essential cmake

这里build-essential包含了GCC、G++、make等基础编译工具,后面编译PX4时缺了它寸步难行。

2.5 换源与更新

这是最关键的一步。Ubuntu默认的软件源在国外,下载速度慢得让人抓狂。我记得第一次装完系统后执行sudo apt update,等了快20分钟还没跑完……后来换了国内源,30秒搞定。

2.5.1 备份原源文件

动手之前先备份,这是好习惯:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

2.5.2 选择并替换源

国内常用的源有阿里云、清华、中科大等。我个人推荐阿里云源,稳定且速度快。用以下命令替换:

sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

如果你在校园网,清华源可能更快:

sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

注意:Ubuntu 20.04的源文件中,archive.ubuntu.com和security.ubuntu.com都要替换,只换一个的话,安全更新还是走国外源。

2.5.3 执行更新

换完源后,执行更新:

sudo apt update
sudo apt upgrade -y

apt update是更新软件包列表,apt upgrade是升级所有已安装的软件包。第一次升级可能有点慢,因为要下载很多更新包,但以后就快了。

2.5.4 验证源是否生效

更新完成后,看一眼输出信息:

sudo apt update 2>&1 | grep "mirrors"

如果看到mirrors.aliyun.com或mirrors.tuna.tsinghua.edu.cn,说明换源成功。

2.6 本章知识体系

下面这张图把整个环境准备流程串起来了,你可以对照着检查自己做到哪一步:

Ubuntu系统准备流程 1. 虚拟机软件安装 2. 创建虚拟机(4核/8G/60G) 3. 安装Ubuntu 20.04 LTS 4. 系统基础配置 安装增强功能 安装SSH服务 安装基础开发工具 5. 换源与系统更新

2.7 常见问题与避坑

最后分享几个我实际遇到过的问题,你遇到了别慌。

问题1:虚拟机启动后黑屏

原因通常是显卡驱动或虚拟化没开启。去BIOS里把Intel VT-x或AMD-V打开,然后在虚拟机设置里把"启用3D加速"关掉试试。

问题2:apt update报错"无法解析域名"

大概率是DNS问题。在虚拟机网络设置里把DNS改成8.8.8.8或114.114.114.114,然后重启网络服务:sudo systemctl restart systemd-resolved。

问题3:编译时提示"内存不足"

我曾经在只有4GB内存的虚拟机上编译PX4,结果编译到一半系统直接卡死。解决方案:给虚拟机分配至少8GB内存,或者用make -j2限制并行编译任务数。