为 reTerminal 构建 Buildroot
简介
Buildroot 是一个易于使用的工具,它通过交叉编译简化并自动化了为嵌入式系统构建完整 Linux 系统的过程。
为了实现这一点,Buildroot 能够为目标设备生成交叉编译工具链、根文件系统、Linux 内核镜像和引导加载程序。Buildroot 可以独立用于这些选项的任意组合(例如,您可以使用现有的交叉编译工具链,仅使用 Buildroot 构建根文件系统)。
它具有简单的结构,易于理解和扩展。它仅依赖于众所周知的 Makefile 语言。Buildroot 是一个开源项目,许多开发者每天都在为其贡献代码。
通过以下指南,您将能够使用 Buildroot 构建自己的 reTerminal 系统镜像。那么让我们开始吧!
编译 Buildroot 源代码
在本地机器上手动编译
现在我们将继续使用 Buildroot 手动为 reTerminal 编译系统镜像。
注意: 本指南是在安装了 Ubuntu 20.04 的主机 PC 上测试后编写的。然而,它也适用于其他 Linux 系统。
- 步骤 1. 在主机 PC 上准备开发环境,安装以下软件包(git、gcc 和 make)
sudo apt update
sudo apt install git
sudo apt install build-essential
注意: 如果您已经安装了上述软件包,可以跳过此步骤。
- 步骤 2. 克隆以下 GitHub 仓库
git clone --depth=1 https://github.com/Seeed-Studio/seeed-linux-buildroot.git -b master
- 步骤 3. 进入 seeed-linux-buildroot 目录
cd seeed-linux-buildroot
使用 reTerminal 的默认配置进行编译
输入以下命令以使用 reTerminal 的默认配置开始编译
make reTerminal_64_defconfig
make
使用自定义配置为 reTerminal 编译
输入以下命令以安装必要的软件包,用于使用自定义配置进行编译
sudo apt install libncurses-dev
- 步骤 5. 输入以下命令以打开 Buildroot 配置窗口
make menuconfig
您可以使用此配置窗口浏览可用选项,并根据需要自定义镜像。此外,如果您从此窗口中选择 保存 并 退出 而不进行任何更改,将加载默认的 reTerminal 配置。
查找已编译的镜像
编译成功后,导航到 seeed-linux-buildroot/output/images
,您将找到已编译的镜像文件 sdcard.img
下载已编译的镜像
如果您想下载已使用 Buildroot 编译好的 reTerminal 系统镜像,可以按照以下步骤操作。
-
步骤 1. 打开 此链接 进入 seeed-linux-buildroot GitHub 仓库的 Actions 页面
-
步骤 2. 点击最新的 Seeed reTerminal buildroot 工作流
- 步骤 3. 在 Artifacts 下,点击 buildroot deploy 开始下载镜像
注意: 下载镜像后,解压镜像以获取 sdcard.img 文件。
将镜像烧录到 reTerminal
现在我们将继续将镜像烧录到 reTerminal 上 CM4 的 eMMC 中。
请按照此 Wiki中的步骤操作,并注意以下步骤:
注意: 当你打开 Raspberry Pi Imager 时,点击 CHOOSE OS,选择 Use custom,然后选择下载的 sdcard.img 文件。
reTerminal 的首次启动
在我们将系统镜像烧录到 reTerminal 后,打开 reTerminal 的电源。此时你会看到内核日志在 reTerminal 的 LCD 上弹出,最后会打开一个使用 Qt 制作的演示应用程序。
默认系统镜像的启动时间大约为 30 秒。
分析 Buildroot 镜像
如前所述,Buildroot 是一个非常强大的工具,它可以依赖第三方库和工具,快速构建我们需要的内容。如果你想了解 Buildroot 的编译时间、依赖关系、编译所消耗的资源大小等,通过代码检查是非常不方便的。然而,Buildroot 提供了可视化分析工具来分析上述内容,我们只需要几个简单的命令即可使用它们。
首先安装以下软件包:
sudo apt install python3-matplotlib python3-numpy
生成依赖关系图
Buildroot 的任务之一是理解包之间的依赖关系,并确保它们按正确的顺序构建。这些依赖关系有时可能很复杂,对于一个给定的系统,通常很难理解为什么某个包或另一个包会被 Buildroot 引入并成功构建。为了帮助理解依赖关系并更好地了解嵌入式 Linux 系统中不同组件的作用,Buildroot 能够生成依赖关系图(PDF 格式)。
- 步骤 1. 安装以下软件包
sudo apt install graphviz
- 步骤 2. 生成依赖关系图
make graph-depends
执行上述命令后,依赖关系图将生成在 seeed-linux-buildroot > output > graphs
目录下,文件包括:
- graph-depends.pdf
- graph-depends.dot
注意: 点击上方图片以查看放大版本。
生成编译所消耗资源大小的分析
Buildroot 可以生成编译所消耗资源大小的分析。
输入以下命令:
make graph-size
执行上述命令后,可视化分析文件将生成在 seeed-linux-buildroot > output > graphs
目录下,文件包括:
- graph-size.pdf
- file-size-stats.csv
- package-size-stats.csv
注意: 点击上方图片以查看放大版本。
测试 Buildroot 镜像
要在 reTerminal 上测试上述 Buildroot 镜像,您可以访问 reTerminal 硬件和接口使用指南,并参考其中提到的步骤。
资源
- [网页] Buildroot 文档
- [GitHub] seeed-linux-buildroot
技术支持与产品讨论
感谢您选择我们的产品!我们致力于为您提供多种支持,确保您使用我们的产品时拥有尽可能顺畅的体验。我们提供多种沟通渠道,以满足不同的偏好和需求。