2. Linux开发环境搭建:安装Ubuntu、配置SSH、安装基础开发工具
说实话,做飞控开发这么多年,我见过太多人在环境搭建这一步就卡住了。有人装完系统发现网卡驱动没装,有人配SSH配了半天连不上,还有人装完工具链发现版本不对——编译直接报错。嗯,这些坑我都踩过。
这一章,咱们就把Linux开发环境从头到尾捋一遍。你跟着我的步骤走,基本不会出问题。
2.1 为什么选Ubuntu?
你可能要问:Windows也能装PX4工具链啊,为什么非得用Linux?
我个人的经验是:省心。PX4和ArduPilot的官方支持都是基于Ubuntu的,你拿Windows折腾半天,最后编译出来的固件可能莫名其妙地跑不起来。我在项目里见过有人用WSL编译,结果串口权限搞不定,飞控死活连不上地面站——这种问题排查起来特别头疼。
Ubuntu版本我推荐20.04 LTS或22.04 LTS。20.04更稳定,很多老项目还在用;22.04工具链更新,对新硬件支持更好。我个人习惯用22.04,毕竟新特性多,而且PX4官方文档已经全面转向22.04了。
重要提醒:别用Ubuntu 24.04!目前很多飞控工具链还没适配,我试过编译时各种库冲突,折腾了两天才退回去。
2.2 安装Ubuntu——两种方式
装Ubuntu无非两种路子:双系统或者虚拟机。我建议你根据自己情况选。
2.2.1 双系统安装(推荐)
如果你打算长期搞飞控开发,双系统是正解。虚拟机跑编译太慢了,尤其是编译PX4固件,动辄十几分钟,虚拟机里能给你拖到半小时。
步骤很简单:
- 下载Ubuntu 22.04 LTS镜像(官网直接下)
- 用Rufus或balenaEtcher制作启动U盘
- 给硬盘分一个区,至少留50GB(我建议100GB,后面装工具链、下载源码、编译缓存,空间很快就吃掉了)
- 重启从U盘启动,按提示安装
我的小技巧:分区时把/home单独分出来。这样以后重装系统,你的配置文件、下载的源码都还在,不用重新下载。我曾经因为系统崩了重装,结果/home没单独分,所有飞控源码全没了——那叫一个痛。
2.2.2 虚拟机安装(适合尝鲜)
如果你只是先体验一下,或者电脑配置够高(16GB内存以上),用VMware或VirtualBox也行。我给个配置参考:
| 配置项 | 建议值 |
|---|---|
| 内存 | 至少8GB(推荐16GB) |
| 处理器核心 | 至少4核 |
| 磁盘空间 | 80GB(动态分配) |
| 网络模式 | 桥接模式(方便SSH) |
不过说实话,虚拟机编译飞控固件确实慢。我试过在VirtualBox里编译PX4,一次完整编译要25分钟——同样的机器双系统只要8分钟。你自己掂量。
2.3 配置SSH——远程开发必备
做飞控开发,你不可能一直蹲在Ubuntu电脑前。很多时候你是在Windows笔记本上写代码,然后远程连到Linux服务器或者开发机上编译。这时候SSH就是命根子。
2.3.1 安装SSH服务
Ubuntu装完默认没开SSH服务,你得手动装:
sudo apt update
sudo apt install openssh-server -y
sudo systemctl enable ssh
sudo systemctl start ssh
装完检查一下:
sudo systemctl status ssh
看到active (running)就对了。
注意:如果你用的是虚拟机,记得在虚拟机设置里把SSH端口(默认22)做端口转发,或者直接用桥接模式。我刚开始用NAT模式,折腾了半天才发现是端口没映射出去。
2.3.2 配置密钥登录
密码登录太麻烦了,每次都要输密码。我建议你配密钥登录,一劳永逸。
在Windows(或你的客户端)上生成密钥:
ssh-keygen -t rsa -b 4096
然后把公钥传到Ubuntu上:
ssh-copy-id 你的用户名@Ubuntu的IP地址
之后登录就不用输密码了。嗯,这个操作我每天至少用十几次,省下的时间够我喝杯咖啡了。
2.3.3 修改SSH配置(安全加固)
如果你要把Ubuntu作为开发服务器长期开着,建议改一下SSH配置:
sudo nano /etc/ssh/sshd_config
找到这几行,改成这样:
Port 2222 # 改掉默认22端口,减少被扫描的概率
PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 禁止密码登录,只用密钥
改完重启SSH服务:
sudo systemctl restart ssh
我曾经有个开发板暴露在公网上,没改端口,结果一天被扫描了三千多次——全是机器人脚本在试密码。改了端口之后清净多了。
2.4 安装基础开发工具
环境搭好了,接下来装工具。这些是飞控开发必备的,一个都不能少。
2.4.1 基础编译工具
sudo apt update
sudo apt install -y \
build-essential \
cmake \
git \
python3 \
python3-pip \
ninja-build \
curl \
wget \
vim \
gedit
这里面build-essential包含了gcc、g++、make这些核心编译工具。cmake和ninja-build是PX4编译用的构建系统。git不用说了,源码管理全靠它。
2.4.2 Python环境
飞控开发里Python用得很多,比如PX4的编译脚本、地面站插件、数据分析工具。我建议你装个虚拟环境管理工具:
sudo apt install -y python3-venv python3-dev
pip3 install --user virtualenv
然后创建一个飞控专用的虚拟环境:
mkdir ~/fc_dev
cd ~/fc_dev
python3 -m venv fc_env
source fc_env/bin/activate
以后所有飞控相关的Python包都装在这个环境里,不会和系统Python打架。这个习惯是我被坑出来的——有一次装了个新版本的numpy,结果系统里另一个工具直接崩了,排查了半天才发现是依赖冲突。
2.4.3 串口工具
飞控和电脑通信靠串口,所以串口工具必须装:
sudo apt install -y \
screen \
minicom \
cutecom \
picocom
我个人习惯用screen,轻量又好用。连接飞控串口:
sudo screen /dev/ttyUSB0 115200
退出按Ctrl+A然后按K,再按Y确认。
避坑指南:如果你插上飞控发现/dev/ttyUSB0不存在,先检查驱动。CH340芯片的飞控需要装驱动:sudo apt install ch340-utils。CP2102的通常免驱。我曾经有个学生折腾了一下午,结果发现是USB线坏了——换根线就好了。
2.4.4 版本管理工具
Git是必须的,但光有Git还不够。我推荐装个gitk和tig,看提交历史特别方便:
sudo apt install -y gitk tig
另外,配置一下Git的用户信息:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global core.editor "vim"
这些配置虽然简单,但很多人会忘。我第一次提交代码到PX4官方仓库时,就因为没配用户名,被CI系统直接拒绝了——尴尬。
2.5 验证环境
装完这么多东西,怎么知道环境是不是好的?我一般跑几个命令验证一下:
gcc --version
cmake --version
git --version
python3 --version
ssh -V
每个命令都应该正常输出版本号。如果哪个报错,说明没装好,回去检查。
最后,测试一下SSH连接:
ssh 你的用户名@localhost
能连上就说明SSH服务正常。嗯,到这里你的Linux开发环境就基本搭好了。
总结一下:这一章我们干了三件事——装Ubuntu、配SSH、装开发工具。看起来简单,但每一步都有坑。我建议你装完后花10分钟把每个工具都跑一遍,确保能用。下一章我们就要开始拉PX4源码、装工具链、编译第一个固件了。到时候你会发现,环境搭得好,后面全是顺风顺水。