飞腾派这块板子,我在它刚放出工程样板消息的时候就盯上了。不是因为参数有多炸裂,而是它用的飞腾腾锐 E2000 平台,本身就是冲着嵌入式场景去的,官方又一直在强调系统兼容性。我拿到手之后的第一件事,就是把手头能想到的主流系统挨个装一遍。这篇文章就是我在 Ubuntu、OpenKylin、RT-Thread 这三套系统上的实际安装记录和体验对比,包括镜像获取、烧录步骤、启动过程、遇到的问题,以及最后的选型建议,全部按我的实际操作过一遍。希望能给刚入手飞腾派的同好节省一点挨坑的时间。
这篇东西适合谁看?适合刚拿到飞腾派、还不知道装什么系统的玩家;也适合已经在用、但想试试轻量桌面和 RTOS 的开发人员。如果你以前只玩过树莓派或者普通 ARM 板子,也可以把这篇当成一份飞腾派的多系统上手指南。如果你只想拿它当日常小主机,Ubuntu 和 OpenKylin 的体验对比正好是你需要的内容。如果你是做嵌入式控制的,第五章的 RT-Thread 实战部分值得重点看,里面有一个 u8g2 驱动 OLED 屏幕的完整过程。
1. 飞腾派是一块什么样的板子
1.1 硬件底子:E2000 平台能干什么
我手上的飞腾派是 4GB 内存版本。它的核心是飞腾腾锐 E2000Q,四核 Cortex-A53 架构,主频 2.0GHz。这套组合放在开发板里不算账面惊艳,但属于非常稳的区间,关键是它对主流系统都有完整适配,不用像某些偏门板卡一样到处找驱动、补内核补丁。对大多数开发场景来说,性能完全是够用的。
接口方面,飞腾派板载了千兆以太网、HDMI 输出、USB 3.0、40Pin GPIO、音频接口和调试串口。存储上同时支持板载 eMMC 和 TF 卡,我这次全部测试都走 TF 卡启动,原因后面会细说。板子尺寸和树莓派 4 接近,但接口布局完全不同,散热片建议到手就装。A53 四核虽然不像桌面 CPU 那样严重发热,但长时间编译任务还是会有明显热量积累,尤其夏天室温高的时候。
1.2 为什么我把三套不同“物种”的系统塞进同一块板子
一开始我自己也觉得奇怪,Linux 桌面发行版和 RTOS 完全是两个维度的东西,怎么能放在一起横向对比?但飞腾派的定位恰好就是这种“通吃”路线:它既能跑完整桌面系统当迷你主机,也能作为嵌入式控制器跑实时系统。这种属性让飞腾派成了非常适合做多系统对比的平台。
我选 Ubuntu、OpenKylin、RT-Thread 的原因很直接:Ubuntu 是国外发行版里生态最完整的代表,OpenKylin 是面向中文环境的开源 Linux 发行版,RT-Thread 则是文档和组件都很完善的开源实时操作系统。三套系统分别对应“通用桌面”“本地化桌面”“实时嵌入式”三个典型方向。完整跑完一遍之后,你基本就能判断飞腾派适合拿来做什么,不适合做什么,避免被网上零零散散的评价带偏。
2. 开工前的材料准备与系统规划
2.1 需要的硬件和软件清单
先列一下我这次用的东西,避免你到时候缺这个少那个:
- 飞腾派开发板,4GB 内存版本,原装电源
- 32GB TF 卡两张,速度规格至少 A1 以上,我用的是 V30 规格
- USB 键鼠套装、HDMI 线、显示器
- USB 转 TTL 串口模块和杜邦线,RT-Thread 调试必须要用
- 读卡器
- 一台装了 Windows 或 Linux 的电脑
软件这边,我准备了 balenaEtcher 烧录工具、Xshell 或者任意 SSH 客户端、MobaXterm 作为串口终端工具。对于串口调试,MobaXterm 自带串口会话管理,比单独再装一个 SecureCRT 方便不少。
这里特别注意一点:TF 卡一定要多准备两张。反复烧录对 TF 卡的寿命和稳定性消耗很大,我用坏过一张杂牌卡,坏之前毫无征兆,直接导致系统跑到一半卡死,后来全部换成正规品牌卡,问题明显少了很多。
2.2 镜像获取和烧录工具选择
镜像去哪下?飞腾官方开发者社区和 OpenKylin 官网都能找到对应文件。下载时一定要看清楚版本注明的是“飞腾派”或者“E2000”适配版,不要图省事直接下通用 ARM 镜像。通用镜像在启动阶段往往缺少设备树和驱动,很容易卡在一个黑屏界面上,只能重新烧录。
烧录工具我推荐 balenaEtcher,逻辑很简单:选镜像、选 TF 卡、点 Flash,烧完还会自动校验一遍,基本不会出错。你在 Windows 上也可以用 Rufus,但烧镜像文件时必须选择直接写入而不是 ISO 模式,否则会出现无法启动的情况。Linux 下用 dd 命令也行,但新手不推荐,因为稍不注意就会把块设备的盘符写错,宿主机整块硬盘直接被覆盖的教训我在社区里见过不止一次。
2.3 分区与多系统引导的思路
飞腾派支持从 TF 卡启动,也支持从板载 eMMC 启动。我这次所有系统都放在 TF 卡上,切换系统最直接的方式就是换卡。有人问能不能把三个系统塞进一张卡里,用引导菜单选择?理论上可以,但不同系统的分区格式差异很大,RT-Thread 往往也不是标准的分区引导结构,折腾引导的收益很低。我实测下来最稳的方案就是“一卡一系统”,换来换去也就十秒钟的事。
如果你想同时维护两个系统,我建议这样规划:TF 卡放一个系统,eMMC 放另一个,通过板上的启动拨码开关切换。这个方案不需要修改任何系统文件,逻辑清晰,也不会出现引导程序互相覆盖的问题。这次我先讲 Ubuntu 和 OpenKylin 各自单独刷卡的流程,第五节最后再回到这套组合建议。
3. Ubuntu 系统安装实测
3.1 Ubuntu 镜像烧录与首次启动
Ubuntu 镜像下载回来后是个压缩包,解压后得到一个 .img 文件。打开 balenaEtcher,选中镜像、选中 TF 卡、点击 Flash,等进度条跑完,Windows 可能会弹窗提示“需要使用格式化”,这时候千万别点,格式化就把启动分区清掉了。直接拔出卡片,插到飞腾派上。
首次启动速度很快,从按下电源键到看到登录界面大概十几秒。默认账号密码在官方文档里有说明,我第一次没看文档,试了好几个组合才进系统,白白浪费了几分钟。进去之后第一件事就是打开终端执行 uname -a,看到 aarch64 字样才算放心,说明内核和用户态架构正确识别。
3.2 系统设置、软件源与中文输入法
Ubuntu 镜像默认的软件源在海外,下载速度非常不稳定,所以进系统后的第一件事就是换源。我一般把源换成华为云或者清华的镜像源,注意对应 Ubuntu 版本代号,否则 apt 会报错。这里重点提醒一句:飞腾派是 aarch64 架构,源列表里不要混入 amd64 组件,否则一部分软件能装,一部分装不上,排查起来非常头疼。
换完源之后,先跑一遍完整的 apt update 和 apt upgrade,让系统处于最新状态。然后处理中文输入法。官方镜像默认很可能没有预装中文输入法,我用的是 fcitx5 加中文拼音引擎。安装完成后不需要急着配置,注销重新登录,在输入法框架里添加拼音即可,按 Ctrl + Space 切换中英文。这一步其实和 PC 上装 Ubuntu 的流程一模一样,没有特殊坑。
3.3 桌面流畅度和任务实测
Ubuntu 桌面默认走的是轻量级桌面环境,实际跑起来非常流畅。我同时打开浏览器、文件管理器和一个代码编辑器,内存占用大概在 1.2GB 左右,4GB 版本没有任何压力。CPU 调度也比较积极,轻负载时频率会自动降下来,发热量和风扇需求都不大。
随手做了一项实际测试:用 apt 安装 Docker,然后跑一个 Nginx 容器。aarch64 架构的 Docker 镜像数量没有 x86 那么多,但常用开发镜像基本都有。跑起来之后测试网络,板载千兆网口在没有交换机限速的情况下,实测下载速度能跑满家庭宽带带宽。SSH 连接也很稳定,我后续基本都通过 Xshell 远程登录操作,比一直插着显示器和键鼠省事很多。如果你想把这个板子当作分布式集群里的低功耗节点用,Ubuntu 版本是最合适的基础系统。
4. OpenKylin 系统安装实测
4.1 OpenKylin 的安装过程
OpenKylin 的适配镜像同样可以在官网下载到,烧录流程和 Ubuntu 完全一致。它也是一个 .img 文件,用 balenaEtcher 写入 TF 卡。首次启动后会进入初始化向导,可以选择语言、创建用户、连接网络,整个过程比 Ubuntu 的首次配置更接近“智能手机开箱”的体验,一步一步来就行。
这一版默认桌面基于 UKUI 3.x,视觉风格和传统 Windows 很像,开始菜单、任务栏、系统托盘、控制中心全都有。第一次进入桌面,你会产生一个非常强烈的感觉:这不像开发板系统,这就是一个桌面发行版。对刚从 Windows 环境切过来的人,几乎没有学习成本。
4.2 本地化体验和软件中心
OpenKylin 做得好的是中文场景的打磨。系统默认就是中文界面,字体渲染清晰,输入法开箱即用,不需要额外配置。我装完系统之后,直接用它登录网页版文档、看视频、处理日常事务,整体体验和普通办公电脑差距不大。
软件中心是 OpenKylin 的特色,里面集成了不少日常软件,按分类浏览很直观。不过数量确实没法跟 Ubuntu 的 apt 官方仓库比,很多常用开发工具需要自己切到终端用 apt 安装,或者去软件官网找 aarch64 版本的包。我在安装一个开发工具时遇到过没有预编译包的情况,最后只能下载源码手动编译,编译依赖也花了一点时间。
4.3 和 Ubuntu 对比,OpenKylin 到底输在哪
坦白讲,OpenKylin 的桌面体验和 Ubuntu 差距没有想象中巨大,但有几个短板很现实。第一是软件源的包版本更新频率不如 Ubuntu,部分工具链版本偏旧,对追新用户不友好。第二是默认桌面虽然视觉效果更好,但内存占用明显更高,实测开机内存占用比 Ubuntu 的轻量桌面高 200MB 左右,如果只有 2GB 内存版本,这一点可能比较明显。第三是部分开发软件对 aarch64 的官方支持还不完善,经常需要自己处理依赖。
但反过来说,如果不做深度嵌入式开发,只是想用飞腾派当一台中文小电脑,OpenKylin 的体验是三套系统里最省心的。我把它插在客厅显示器上,家里人也能无脑使用,不需要教任何 Linux 命令。对一块开发板来说,能把“开箱即用”做到这个程度,已经很不错了。
5. RT-Thread 系统安装与开发实测
5.1 为什么要在开发板上跑 RTOS
看到这里你可能会问:飞腾派都已经能跑完整 Linux 桌面了,为什么还要折腾 RT-Thread?答案是 Linux 不是实时系统,它的任务调度、中断响应存在不确定性。当你准备做电机控制、传感器采集、通信网关这类对时延敏感的场景时,RTOS 才是正确选择,因为任务切换和中断响应时间是可预测的,微秒级别的差异在很多工业场景中直接影响产品成败。
RT-Thread 是一个发展很快的开源实时操作系统,组件生态非常全。飞腾官方生态库和 RT-Thread 仓库里都有对应的 BSP,下载源码后编译,就能把 RT-Thread 跑在飞腾派的 A53 核心上。这一套对于工程师来说尤其有价值:前期在 Ubuntu 上交叉编译、调试业务逻辑,后期把同样的硬件切换到 RT-Thread 跑正式程序,一套硬件两套方案,灵活性非常高。
5.2 搭建编译环境与生成固件
编译 RT-Thread 需要 ARM64 交叉编译工具链。我是在电脑上的 Ubuntu 虚拟机里操作的,直接通过 apt 安装 gcc-aarch64-linux-gnu。然后在 RT-Thread 源码的 bsp 目录下找到飞腾派对应的工程目录,这个目录里已经有完整的 board 配置和链接脚本。
编一个嵌入式项目没有纯 PC 项目那种复杂依赖,操作流程大致是:先执行 scons --menuconfig 配置组件和驱动,再执行 scons -j4 开始编译。如果菜单配置正确,最终会生成一个 bin 格式的固件,体积通常只有几百 KB。对比 Linux 镜像动辄几 GB 的大小,你会直观感受到这两个“系统”的路线差异有多大。
5.3 烧录、串口启动和 FinSH 操作
RT-Thread 固件的烧录方式和 Linux 镜像完全不同,它不依赖 TF 卡分区,而是通过飞腾派上的调试串口和专用烧录工具写入。我用 USB 转 TTL 模块连接板子的串口调试接口,用杜邦线把 TX、RX、GND 接好,打开 MobaXterm 创建串口会话,波特率设置为 115200,和 BSP 文档保持一致。
上电后,串口终端会立刻刷出 RT-Thread 的启动日志。从时钟初始化到内存初始化,再到设备驱动注册,一层层打印出来,和单片机开发的体验非常接近。启动完成后进入 FinSH 控制台,这是 RT-Thread 的交互式 shell,直接输入 list_device 就能查看所有设备节点,输入 list_thread 能看到当前线程状态。
我在这个环节跑了一个简单的心跳灯线程,用定时器控制 GPIO 翻转,观察串口日志和板载 LED 的节奏是否一致。相比 Linux 下创建线程要写一堆代码,RT-Thread 里只需要定义一个线程入口函数,再调用 rt_thread_create 和 rt_thread_startup 就能跑起来,整个过程直白且透明。
5.4 用 u8g2 驱动 OLED 屏的实战
分享一个具体案例:通过 RT-Thread 的 u8g2 软件包驱动 0.96 寸 OLED 屏。u8g2 是一个单色图形库,支持 SSD1306、SH1106 等大量屏幕控制器,在 RT-Thread 软件包中心里可以直接搜索添加,非常方便。
软件包添加完成之后,需要在 menuconfig 里开启 I2C 设备驱动,然后从飞腾派 40Pin GPIO 引出 SCL 和 SDA 两根线,接到 OLED 屏对应的接口。代码初始化的关键步骤是:把 u8g2 库和 I2C 总线绑定,调用 u8g2_Setup_ssd1306_i2c_128x64_noname_f 完成屏幕配置,接着在主循环里依次调用 u8g2_ClearBuffer、u8g2_DrawStr、u8g2_SendBuffer 刷新画面。整个流程跑通之后,屏幕上就能稳定显示自定义文本和简单图形。
这块还有一个细节值得说:u8g2 的软件包通常自带示例代码,但不同开发板的 I2C 引脚编号不一样,套用示例前必须确认引脚复用配置,否则屏幕大概率只亮背光而不显示内容。引脚对不上时,别急着怀疑屏幕和库,先用逻辑分析仪看看 I2C 总线上有没有波形,再回头排查软件配置。
6. 三套系统横向对比与选型建议
6.1 对比表格:可以直接抄作业
下面这张表是我在同一块飞腾派上实测整理的对比结果,可以当作选型参考:
| 维度 | Ubuntu | OpenKylin | RT-Thread |
|---|---|---|---|
| 系统类型 | Linux 桌面发行版 | Linux 桌面发行版 | 实时操作系统(RTOS) |
| 启动方式 | TF 卡 / eMMC | TF 卡 / eMMC | 串口烧录 / 专用烧录工具 |
| 桌面环境 | 轻量桌面 | UKUI | 无图形界面,串口控制台 |
| 开机内存占用 | 约 700MB | 约 950MB | 几十 KB 到几百 KB |
| 软件生态 | 非常丰富,apt 仓库完善 | 常用软件不少,总量偏少 | 面向嵌入式,组件极多 |
| 中文输入法 | 需要自行配置 | 默认内置 | 不适用 |
| 实时性 | 不具备 | 不具备 | 微秒级中断响应 |
| 适用场景 | 开发调试、迷你主机、容器 | 桌面办公、家庭休闲使用 | 工业控制、数据采集、设备接入 |
内存占用和数据基于 4GB 版本实测,不同版本和不同更新状态下会有一点浮动,但整体的数量级不会有变化。RT-Thread 的“内存占用”和 Linux 的内存占用不是一个概念,它没有完整的进程虚拟内存体系,所以直接对比数值意义不大,放在表格里只是为了让你直观理解两者不是一个物种。
6.2 不同场景怎么选
如果你准备把飞腾派当开发机用,跑编译、跑 Docker、调代码,优先选 Ubuntu,软件匹配度和社区答疑资源都最多。如果你要把它放在客厅或者家里,当一台中文小电脑用,选 OpenKylin,开箱即用的体验最好。如果你要做实际硬件项目,控制电机、采集传感器、做通信协议对接,直接上 RT-Thread。
另外,三套系统不冲突。我目前的最终方案是:eMMC 刷 Ubuntu 常驻,用来做日常开发和交叉编译;TF 卡里保存 RT-Thread 固件,需要做硬件调试时换上卡即可。OpenKylin 则作为备用系统,偶尔想要一个更省心的桌面环境时再刷进去。整个过程下来,飞腾派在我这边的角色从“一台 Linux 小主机”变成了“一个多面手开发平台”,这也是这块板子最吸引我的地方。
7. 实操避坑记录
7.1 烧录总失败?先查 SD 卡和读卡器
我前两次烧录 Ubuntu 反复失败,Etcher 校验总是到一半报错,一开始怀疑镜像损坏,重新下载还是不行。后来换了一张卡,一次成功。问题就出在杂牌 TF 卡上,要么是虚标容量,要么是写入速度不稳定。此后我只用正规品牌 A1 以上规格的卡,烧录前先往卡里拷贝一个大文件测试速度,明显偏慢就直接换卡。读卡器也要留意,USB 2.0 的读卡器速度慢且容易中途失败,建议至少用 USB 3.0 读卡器。
7.2 开机黑屏和供电不足
飞腾派的供电要求比想象中严格。我用普通手机充电器试过一次,接上键鼠和 HDMI 后经常开机黑屏甚至反复重启。换上原装 5V/3A 电源之后,问题彻底消失。如果你插了多个 USB 外设,建议把大功率设备放到带独立供电的 HUB 上,否则电源保护机制可能直接让板子掉电。遇到黑屏时,优先确认供电,不要去刷系统折腾半天,最后发现是供电问题。
7.3 网络和 SSH 连接问题
SSH 连不上,大多数情况下不是板子的问题,而是系统默认没有安装或启动 openssh-server。Ubuntu 镜像同样可能默认关闭 SSH 服务,需要在桌面终端里执行安装命令并启动服务。还可能遇到的情况是 sshd 虽然在跑,但防火墙拦截了连接,检查一下防火墙状态即可。
板子如果通过网线直连电脑,还需要手动配置静态 IP,否则两边不在同一个网段,互相根本发现不了对方。我的笨办法是先接 HDMI 显示桌面,查看板子实际拿到的 IP 地址,再用 Xshell 去连接,虽然多了一步,但实测最稳。
7.4 多系统切换的坑
有人希望图省事,把 Ubuntu 和 OpenKylin 同时塞进一张 TF 卡,用引导菜单切换。我在飞腾派上试过,成功率不稳定,尤其是内核版本和分区格式不一致时,很容易出现一个系统能启动,另一个系统找不到根分区的情况。折腾一下午之后,我彻底放弃了单卡双系统,回归“一卡一系统”的路线。如果你不想频繁换卡,就在 eMMC 里常驻一个系统,TF 卡放另一个,用拨码开关切换,这个方案稳定程度高很多。
最后分享一个小技巧:每次把系统跑稳定之后,用镜像工具把整张 TF 卡备份成文件存到电脑。之后哪怕系统被折腾坏了,也只需要重新烧录备份文件,几分钟就能恢复。这个习惯让我省掉了大量重装系统的重复劳动,强烈建议保留。