2. Linux开发环境搭建:安装Ubuntu、配置SSH、安装基础开发工具

说实话,做飞控开发这么多年,我见过太多人在环境搭建这一步就卡住了。有人装完系统发现网卡驱动没装,有人配SSH配了半天连不上,还有人装完工具链发现版本不对——编译直接报错。嗯,这些坑我都踩过。

这一章,咱们就把Linux开发环境从头到尾捋一遍。你跟着我的步骤走,基本不会出问题。

2.1 为什么选Ubuntu?

你可能要问:Windows也能装PX4工具链啊,为什么非得用Linux?

我个人的经验是:省心。PX4和ArduPilot的官方支持都是基于Ubuntu的,你拿Windows折腾半天,最后编译出来的固件可能莫名其妙地跑不起来。我在项目里见过有人用WSL编译,结果串口权限搞不定,飞控死活连不上地面站——这种问题排查起来特别头疼。

Ubuntu版本我推荐20.04 LTS22.04 LTS。20.04更稳定,很多老项目还在用;22.04工具链更新,对新硬件支持更好。我个人习惯用22.04,毕竟新特性多,而且PX4官方文档已经全面转向22.04了。

重要提醒:别用Ubuntu 24.04!目前很多飞控工具链还没适配,我试过编译时各种库冲突,折腾了两天才退回去。

2.2 安装Ubuntu——两种方式

装Ubuntu无非两种路子:双系统或者虚拟机。我建议你根据自己情况选。

2.2.1 双系统安装(推荐)

如果你打算长期搞飞控开发,双系统是正解。虚拟机跑编译太慢了,尤其是编译PX4固件,动辄十几分钟,虚拟机里能给你拖到半小时。

步骤很简单:

  1. 下载Ubuntu 22.04 LTS镜像(官网直接下)
  2. 用Rufus或balenaEtcher制作启动U盘
  3. 给硬盘分一个区,至少留50GB(我建议100GB,后面装工具链、下载源码、编译缓存,空间很快就吃掉了)
  4. 重启从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这些核心编译工具。cmakeninja-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还不够。我推荐装个gitktig,看提交历史特别方便:

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源码、装工具链、编译第一个固件了。到时候你会发现,环境搭得好,后面全是顺风顺水。