2. 添加软件包

在前面Buildroot根文件系统的构建章节仅仅构建出最基础的文件系统,没有额外添加的软件包,本章节将介绍如何添加一些常用软件包。

在Buildroot根目录执行以下命令,打开界面:

1
2
3
4
5
6
7
8
9
#加载自己的配置文件
make imx6ullfire_defconfig

#打开界面
make menuconfig


#保存退出后生成精简配置文件,默认会覆盖imx6ullfire_defconfig
make savedefconfig

在图像界面输入”/”,可以打开搜索框,输入软件包的配置项可以快速找到对应位置。

提示

以下软件包如有需要可自行添加,不需要可忽略。

2.1. 网络相关软件包

2.1.1. 远程连接与文件传输

  1. OpenSSH

提供安全的远程登录(SSH)、文件传输(SCP、SFTP)等功能,过加密通道进行通信,保证数据传输的安全性。

1
BR2_PACKAGE_OPENSSH=y
  1. rsync

用于在不同主机之间高效地同步文件和目录。支持增量传输,只传输文件中发生变化的部分,节省带宽和时间。

1
BR2_PACKAGE_RSYNC=y

2.1.2. 网络时间同步

  1. ntp

用于计算机系统的时间与网络中的其他时间服务器保持同步。

1
2
BR2_PACKAGE_NTP=y
BR2_PACKAGE_NTP_NTPDATE=y

2.1.3. 网络服务功能

  1. dnsmasq

是一个轻量级的网络服务软件,它通常用于提供域名系统(DNS)和动态主机配置协议(DHCP)等功能。

1
BR2_PACKAGE_DNSMASQ=y

2.1.4. 网络性能测试

  1. iperf3

用于测量网络带宽和性能。可以测试TCP和UDP带宽,支持多线程测试,能生成详细的网络性能报告。

1
BR2_PACKAGE_IPERF3=y
  1. netperf

是一个网络性能基准测试工具,可测量多种网络协议(如TCP、UDP等)的吞吐量、延迟等性能指标。

1
BR2_PACKAGE_NETPERF=y

2.1.5. 网络监控与诊断

  1. tcpdump

是一个强大的网络数据包分析工具,可捕获和分析网络中的数据包,帮助诊断网络问题、进行网络安全审计等。

1
BR2_PACKAGE_TCPDUMP=y
  1. ethtool

是一个用于Linux系统的命令行工具,主要用于查询和修改以太网设备的驱动程序及硬件设置。

1
BR2_PACKAGE_ETHTOOL=y

2.2. 外设接口相关软件包

2.2.1. GPIO控制相关

  1. libgpiod

是一个用于控制GPIO引脚的库,它提供了一种简单且统一的方式来访问和操作GPIO设备。

1
2
BR2_PACKAGE_LIBGPIOD=y
BR2_PACKAGE_LIBGPIOD_TOOLS=y

2.2.2. 输入检测相关

  1. evtest

是一个用于测试输入设备(如键盘、鼠标、触摸屏等)的工具。它可以读取输入设备的事件并将其显示在终端上,帮助开发人员调试和验证输入设备的功能是否正常。

1
BR2_PACKAGE_EVTEST=y

2.2.3. 串口通信相关

  1. minicom

是一个在类Unix系统上广泛使用的串口通信程序,它提供了一个简单易用的终端界面,用于与串口设备进行通信。

1
BR2_PACKAGE_MINICOM=y

2.2.4. I2C调试相关

  1. i2c-tools

是一组用于在Linux系统中与I2C总线设备进行交互的工具集。提供了一系列命令行工具,帮助开发者检测、配置和调试 I2C 设备。

1
2
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_I2C_TOOLS=y

2.2.5. CAN调试相关

  1. can-utils

是一组用于在Linux系统中与CAN总线进行交互的工具集。提供了一系列命令行工具,方便开发者对CAN总线进行配置、监控和调试。

1
BR2_PACKAGE_CAN_UTILS=y

2.2.6. 屏幕调试相关

  1. fbset

是一个用于Linux系统中设置帧缓冲设备参数的命令行工具。

1
BR2_PACKAGE_FBSET=y
  1. tslib

用于触摸屏校准和处理的库。

1
BR2_PACKAGE_TSLIB=y

2.2.7. 音频播放相关

  1. alsa-utils

是一组基于高级Linux声音架构的实用工具集合。提供了一系列命令行工具,方便用户对ALSA驱动的音频设备进行配置、测试和调试。

1
2
3
BR2_PACKAGE_ALSA_UTILS=y
BR2_PACKAGE_ALSA_UTILS_AMIXER=y
BR2_PACKAGE_ALSA_UTILS_APLAY=y
  1. sox

SoX是一款强大的跨平台命令行音频处理工具,被广泛称为音频处理界的 “瑞士军刀”。它支持多种音频格式,能进行音频文件的格式转换、音频效果添加、音频编辑等操作。

1
2
BR2_PACKAGE_SOX=y
BR2_PACKAGE_LIBSOXR=y

2.2.8. 摄像头相关

  1. v4l-utils

是一组用于Linux系统中与视频框架进行交互的工具集。提供了一系列命令行工具,方便开发者和用户对视频设备进行配置、测试和调试。

1
2
BR2_PACKAGE_LIBV4L
BR2_PACKAGE_LIBV4L_UTILS
  1. gstreamer

是一个功能强大的开源多媒体框架,它允许开发者轻松地创建各种多媒体应用程序,如音频和视频播放器、流媒体服务器、视频编辑器等。

1
2
3
4
5
6
7
BR2_PACKAGE_GSTREAMER1=y
BR2_PACKAGE_GST1_PLUGINS_BASE=y
BR2_PACKAGE_GST1_PLUGINS_GOOD=y
BR2_PACKAGE_GST1_PLUGINS_BAD=y
BR2_PACKAGE_GST1_PLUGINS_UGLY=y
BR2_PACKAGE_GST1_LIBAV=y
BR2_PACKAGE_GST1_RTSP_SERVER=y

2.2.9. 蓝牙相关

  1. bluez

BlueZ是官方的Linux蓝牙协议栈,从 Linux2.4.6 开始便成为Linux内核的一部分。它由主机控制接口(HCI)层、蓝牙协议核心、逻辑链路控制和适配协议、SCO音频层、其他蓝牙服务、用户空间后台进程以及配置工具等组成。

1
2
BR2_PACKAGE_BLUEZ5_UTILS=y
BR2_PACKAGE_BLUEZ_TOOLS=y

2.2.10. wifi相关

  1. iw

是一个用于管理Linux系统中无线设备的命令行工具,它是新一代的无线配置工具,用于替代旧的iwconfig工具。

1
BR2_PACKAGE_IW=y
  1. wireless-tools

是一套用于管理和配置Linux系统中无线设备的工具集,它提供了一系列命令行工具和库,方便用户对无线网卡进行操作。

1
BR2_PACKAGE_WIRELESS_TOOLS=y
  1. wpa_supplicant

是一个用于在Linux系统中实现Wi-Fi连接和安全认证的工具。负责与Wi-Fi接入点进行认证和连接协商。

1
2
3
4
5
6
7
8
9
BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING=y
BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y

2.2.11. 4G相关

  1. ipppd

负责在综合业务数字网(ISDN)环境下建立和管理点对点协议(PPP)连接。它能与远程设备协商连接参数,如IP地址、认证方式等,实现设备之间的通信链路建立。

1
BR2_PACKAGE_PPPD=y

2.3. 系统分区相关软件包

2.3.1. 扩容相关

扩容需要使用resize2fs和parted工具,parted修改分区表,resize2fs修改分区空间。

1
2
3
BR2_PACKAGE_E2FSPROGS=y
BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_PARTED=y

2.4. 常用工具

  1. opencv

是一个广泛使用的开源计算机视觉库,它提供了丰富的计算机视觉算法和工具,涵盖了图像和视频处理、特征提取、目标检测、机器学习等多个领域。

1
BR2_PACKAGE_OPENCV3=y
  1. ffmpeg

可用来记录、转换数字音频、视频,并能将这些音视频转化为流。

1
BR2_PACKAGE_FFMPEG=y
  1. python

一种高级、通用、解释型的编程语言,以其简洁易读的语法和丰富的库生态系统而闻名。

1
BR2_PACKAGE_PYTHON3=y

以上这些工具还有很多配置选项,可根据自身需求额外添加选择。

2.5. 交叉编译软件包

某些软件包可能在buildroot配置项中没有或者默认版本过低,可以自行获取软件包源码,交叉编译得到相应库和可执行文件。

2.5.1. 交叉编译工具链

在“Buildroot根文件系统的构建”章节我们指定使用了gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf交叉编译工具链, 将交叉编译工具链解压到了Buildroot源码根目录,那么交叉编译其他软件包时也要使用该交叉编译工具链。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#进入交叉编译工具链目录
cd buildroot-2021.02.3/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/

#查看编译工具链版本
./arm-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=./arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/guest/imx6/buildroot-2021.02.3/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../libexec/gcc/arm-linux-gnueabihf/8.3.0/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: /tmp/dgboter/bbs/rhev-vm8--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/src/gcc/configure --target=arm-linux-gnueabihf --prefix= --with-sysroot=/arm-linux-gnueabihf/libc --with-build-sysroot=/tmp/dgboter/bbs/rhev-vm8--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/install//arm-linux-gnueabihf/libc --with-bugurl=https://bugs.linaro.org/ --enable-gnu-indirect-function --enable-shared --disable-libssp --disable-libmudflap --enable-checking=release --enable-languages=c,c++,fortran --with-gmp=/tmp/dgboter/bbs/rhev-vm8--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/host-tools --with-mpfr=/tmp/dgboter/bbs/rhev-vm8--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/host-tools --with-mpc=/tmp/dgboter/bbs/rhev-vm8--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/host-tools --with-isl=/tmp/dgboter/bbs/rhev-vm8--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/host-tools --with-arch=armv7-a --with-fpu=neon --with-float=hard --with-arch=armv7-a --with-pkgversion='GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)'
Thread model: posix
gcc version 8.3.0 (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36))

从输出信息可见,该交叉编译工具链适用于arm平台,版本为8.3.0。

2.5.2. 交叉编译tslib软件包

2.5.2.1. 获取源码

以tslib软件包为例,访问以下链接获取最新源码包。

https://github.com/libts/tslib/releases

或者使用 tslib-1.23.tar.gz 版本。

2.5.2.2. 安装编译所必须的工具

1
sudo apt install libtool autogen autoconf automake build-essential libgl1-mesa-dev

2.5.2.3. 交叉编译

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#解压源码包
tar xvf tslib-1.23.tar.gz

#进入源码
cd tslib-1.23/

#创建输出目录
mkdir build

#导出交叉编译工具链环境变量,使用绝对路径,自行修改
export PATH=/home/guest/imx6/buildroot-2021.02.3/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin:$PATH

#配置交叉编译工具链和输出目录,使用绝对路径,自行修改
./configure --host=arm-linux-gnueabihf --prefix=/home/guest/tslib-1.23/build

#编译
make -j16

#安装到输出目录
make install

#查看编译产物
ls build/
bin  etc  include  lib  share

最后将build/目录下的文件对应拷贝到板卡根文件系统即可。