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镜像后,挂载到虚拟机的光驱里,启动安装。安装过程有几个地方容易出错:
- 分区:新手直接选"擦除整个磁盘并安装Ubuntu"就行,别手动分区,容易搞乱。
- 用户名和密码:记住你设的密码,后面sudo操作天天要用。我习惯设一个简单密码,比如
123456,反正虚拟机里没什么敏感数据。 - 安装第三方软件:勾选"安装第三方软件",里面包含一些无线网卡驱动和多媒体解码器,省得后面折腾。
安装完成后重启,拔掉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 本章知识体系
下面这张图把整个环境准备流程串起来了,你可以对照着检查自己做到哪一步:
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限制并行编译任务数。