0. 工具概述
Buildroot 是一个简单、高效且易于使用的工具,旨在通过交叉编译生成嵌入式 Linux 系统。它支持生成交叉编译工具链、根文件系统、内核镜像以及引导加载器。通过类似于内核配置的菜单界面(menuconfig、gconfig、xconfig),用户可以轻松进行配置,并快速构建基本的系统,通常只需15-30分钟。Buildroot 还提供对多种软件的支持,包括 X.org 堆栈、Gtk3、Qt 5、GStreamer、Webkit、Kodi 等,涵盖了大量网络和系统相关的工具,大大简化了嵌入式系统的构建过程。
许多系统厂商如特斯拉、GoPro、Barco 和 Rockwell Collins在产品研发中,常常依赖各大处理器供应商,如Imagination Technologies、Marvel、Microchip(前身为Atmel)、Amlogic 和 Rockchip提供的技术支持。此外,SoM(系统级模块)和电路板供应商如MYIR、PHY和Toradex也在市场上提供多种解决方案。同时,开发爱好者和许多公司也常使用开发板,如Raspberry Pi和BeagleBone Black,进行产品原型设计和应用开发。
1. 预备知识
嵌入式 Linux 系统架构如图所示,展示了开发者主机与嵌入式 Linux 开发板之间的关系。在这个架构中,开发者主机通常运行桌面操作系统(如 Linux 或 Windows),并通过交叉编译工具链生成适用于嵌入式开发板的应用程序。这些应用程序被编译成特定架构的二进制文件,能够在嵌入式 Linux 开发板上运行。开发者主机和嵌入式 Linux 开发板通常通过网络或串口等方式进行通信,从而实现程序的传输、调试和测试。交叉编译的方式使得开发者可以在性能较高的主机上开发和构建软件,而不必依赖于性能较弱的嵌入式设备进行编译,从而提高开发效率。
Buildroot 通过自动化的方式实现了 Bootloader、Kernel、Rootfs 和应用程序(APP)的交叉编译,并将这些组件统一打包成所需的镜像格式。这个过程不仅简化了整个嵌入式系统的构建流程,还能确保生成的镜像文件具备良好的兼容性和优化。在完成交叉编译后,生成的镜像可以直接烧录到嵌入式开发板中,系统便能够在硬件平台上启动并执行相应的任务。通过这种方式,开发者能够高效地构建和定制适用于特定硬件的嵌入式系统,同时确保各个组件的集成和部署过程简洁且一致。
2. 工具使用
执行make menuconfig
进入配置页面,下面的内容列出了 Buildroot 配置中的各个主要选项,包括目标属性、构建属性、工具链、系统配置、内核、目标包、文件系统镜像、引导程序、主机程序以及传统配置选项。每个选项对应不同的构建配置区域,帮助开发者根据需要定制和优化嵌入式系统的构建过程。这些配置项覆盖了从目标系统的硬件平台设置到软件包、文件系统以及引导程序的各个方面。
Target options ---> #目标属性
Build options ---> # 构建属性
Toolchain ---> # 工具链
System configuration ---> # 系统配置项
Kernel ---> # 内核
Target packages ---> # 目标包
Filesystem images ---> # 文件系统镜像
Bootloaders ---> # 引导程序
Host utilities ---> # 主机程序
Legacy config options ---> # 传统配置选项
2.1 Target option(目标属性)
下面的内容列出了 Buildroot 中关于目标架构的配置选项,包括目标处理器的架构(如 ARM,小端模式)、目标二进制格式(ELF)、处理器核心类型(如 Cortex-A7)、应用程序二进制接口(如 EABIhf)、浮点运算策略(如 NEON/VFPv4)以及 ARM 指令集(如 ARM)。这些选项帮助开发者根据特定的硬件平台和需求,精确配置目标系统的架构、指令集及浮点运算支持。
Target options --->
Target Architecture (ARM (little endian)) ---> //目标处理器的架构和大小端模式 [ARM (little endian)]
Target Binary Format (ELF) ---> //目标二进制格式 [ELF]
Target Architecture Variant (cortex-A7) ---> //目标处理器核心类型 [cortex-A7]
Target ABI (EABIhf) ---> //目标应用程序二进制接口(Application Binary Interface) [EABIhf] ①
Floating point strategy (NEON/VFPv4) ---> //浮点运算策略 [NEON/VFPv4] ②
ARM instruction set (ARM) --->
2.2 Build option(编译选项)
下面的内容列出了 Buildroot 中的构建选项配置,包括用于下载、解压和版本控制的命令(如 wget
、git
、svn
等),以及文件保存路径、下载目录、主机工具目录等设置。用户可以指定用于下载软件包的镜像站点,选择编译时使用的 CPU 核心数,并设置是否启用编译器缓存、调试符号以及裁剪目标二进制文件中的调试信息。还提供了 GCC 优化选项、崩溃日志收集支持、库类型、包覆盖文件位置等配置。高级选项中包括安全加固功能,如堆栈保护、RELRO 保护和缓冲区溢出检测等,用于增强系统的安全性。
Build options --->
Commands ---> //指定下载、解压命令参数选项
(wget --passive-ftp -nd -t 3) Wget command //用于常规FTP/HTTP下载压缩包 [被动传输模式;不创建目录;超时重试次数为3]
(svn --non-interactive) Subversion (svn) command //通过SSH下载压缩包 [禁用所有交互式提示]
(bzr) Bazaar (bzr) command //版本控制工具Bazaa
(git) Git command //版本控制工具Git
(cvs) CVS command //版本控制工具CVS
(cp) Local files retrieval command //本地文件拷贝命令
(scp) Secure copy (scp) command //基于ssh的安全的远程文件拷贝命令
(hg) Mercurial (hg) command //版本控制工具hg
(gzip -d -c) zcat command //zip包解压缩查看 [解压zip文件 解压到指定路径,源文件不消失]
(bzcat) bzcat command //bz2包解压缩查看
(xzcat) xzcat command //xz包解压缩查看
(lzip -d -c) lzcat command //lz包解压缩查看
() Tar options //bz2包解压缩查看
(/home/hceng/imx6ul_buildroot/configs/imx6ulevk_defconfig) Location to save buildroot config //指定配置文件保存路径
($(TOPDIR)/dl) Download dir //指定文件下载保存路径 [./dl/]
($(BASE_DIR)/host) Host dir //指定主机编译所需工具安装目录 [./output/host]
Mirrors and Download locations ---> //镜像和下载位置
() Primary download site
(http://sources.buildroot.net) Backup download site
(https://cdn.kernel.org/pub) Kernel.org mirror
(http://ftpmirror.gnu.org) GNU Software mirror
(http://rocks.moonscript.org) LuaRocks mirror
(http://cpan.metacpan.org) CPAN mirror (Perl packages)
(0) Number of jobs to run simultaneously (0 for auto) //指定编译时运行的CPU核心数 [0自动]
[ ] Enable compiler cache //使能编译器缓存
[ ] build packages with debugging symbols //启用带调试编译软件包
[*] strip target binaries //binaries和libraries在打包到target目录的时候会被strip命令裁减掉调试信息
() executables that should not be stripped //剥离时跳过可执行文件
() directories that should be skipped when stripping //剥离时跳过的目录
gcc optimization level (optimize for size) ---> //GCC优化等级 [优化大小]
[ ] Enable google-breakpad support //启动崩溃日志收集
libraries (shared only) ---> //库类型 [只共享库]
($(CONFIG_DIR)/local.mk) location of a package override file //包覆盖文件的位置
() global patch directories //全局补丁目录
Advanced --->
[*] paranoid check of library/header paths //检查库/头文件路径
[ ] Force the building of host dependencies //强制构建主机依赖
[ ] Make the build reproducible (experimental) //构建可重复(实验)
*** Security Hardening Options *** //安全加固选项
Stack Smashing Protection (None) ---> //堆栈粉碎保护 [无]
RELRO Protection (None) ---> //RELRO只读重定位(Relocation Read Only)保护 [无]
Buffer-overflow Detection (FORTIFY_SOURCE) (None) ---> //缓冲区溢出检测(强制源) [无]
2.3 Toolchain(工具链)
下面的内容概述了 Buildroot 中工具链(Toolchain)的配置选项。用户可以选择工具链类型(如外部工具链)并指定工具链的来源(如自定义工具链或从 URL 下载的工具链)。配置包括工具链的二进制路径、前缀(如 arm-linux-gnueabihf
)、GCC 版本、内核头文件版本和 C 库类型(如 glibc/eglibc
)。此外,还可以设置工具链支持的特性,如堆栈保护(SSP)、远程过程调用(RPC)、C++、Fortran 支持等。用户可以选择复制额外的工具链库和 GDB 服务器到目标系统,并配置主机端 GDB 选项。通用选项中包括启用 MMU
支持、WCHAR
支持、gconv
库复制等。最后,还可以设置目标优化和链接器选项,以及在 Eclipse Buildroot 插件中注册工具链。这些配置有助于根据项目需求灵活定制和集成工具链。
Toolchain --->
Toolchain type (External toolchain) ---> //工具链类型 [外部工具链]
*** Toolchain External Options *** //外部工具链选项
Toolchain (Custom toolchain) ---> //工具链 [自定义工具链]
Toolchain origin (Toolchain to be downloaded and installed) ---> //工具链来源 [工具链将被下载安装]
(https://releases.linaro.org/……) Toolchain URL //工具链下载链接 ①
(bin) Toolchain relative binary path //工具链二进制文件相对路径 [bin目录]
($(ARCH)-linux-gnueabihf) Toolchain prefix //工具链前缀 [arm-linux-gnueabihf]
External toolchain gcc version (6.x) ---> //外部工具链GCC版本 [6.x]
External toolchain kernel headers series (4.6.x) ---> //外部工具链内核头文件系列 [4.6.x]
External toolchain C library (glibc/eglibc) ---> //外部工具链C库 [glibc/eglibc] ②
[*] Toolchain has SSP support? //工具链是否支持SSP? ③
[*] Toolchain has RPC support? //工具链是否支持RPC? ④
[*] Toolchain has C++ support? //工具链是否支持C++?
[*] Toolchain has Fortran support? //工具链是否支持Fortran? (一种编程语言)
() Extra toolchain libraries to be copied to target //复制额外工具链库到目标
[ ] Copy gdb server to the Target //复制GDB服务到目标
*** Host GDB Options *** //主机GDB选项
[ ] Build cross gdb for the host //为主机交叉编译GDB
*** Toolchain Generic Options *** //工具链通用选项
[ ] Copy gconv libraries //复制gconv库 (gconv库用于在不同的字符集之间进行转换)
[ ] Enable WCHAR support // python等语言需要开启此项
[*] Enable MMU support //使能MMU支持
() Target Optimizations //目标优化 (需设置前面的GCC优化等级)
() Target linker options //目标链接器选项 (构建目标时传递给链接器的额外选项)
[ ] Register toolchain within Eclipse Buildroot plug-in //在Eclipse Buildroot插件中注册工具链
2.4 System configuration
下面的内容列出了 Buildroot 中关于系统配置的选项,包括根文件系统框架(如典型目标框架)和系统主机名、开机提示信息等基本设置。用户可以选择密码编码方式(如 SHA-256)、初始化系统方案(如 systemV)以及设备管理方案(如 devtmpfs + eudev)。配置项还包括是否支持设备表中的扩展属性、是否使用符号链接将 /bin
、/sbin
和 /lib
链接到 /usr
,是否启用 root 用户密码登录,以及选择默认的 shell 类型(如 bash)。此外,用户可以配置网络接口(如 eth0)、设置系统默认路径、保留语言环境、启用时区信息、以及在创建文件系统映像之前和之后运行自定义脚本。该配置有助于精确控制系统启动和运行过程中的各个方面。
System configuration ---> 系统配置
Root FS skeleton (default target skeleton) ---> //根文件系统框架 [典型目标框架]
(ebf6ull) System hostname //系统主机名字(自取任意) [ebf6ull]
(Welcome to ixm6ull Buildroot!) System banner //系统开机提示 [Welcome to ixm6ull Buildroot!]
Passwords encoding (sha-256) ---> //密码编码 [sha-256]
Init system (systemV) ---> //初始化系统方案 [systemV] ①
/dev management (Dynamic using devtmpfs + eudev) ---> //dev管理方案 [Dynamic using devtmpfs + eudev] ②
(system/device_table.txt) Path to the permission tables //权限表路径
[ ] support extended attributes in device tables //支持设备表中的扩展属性
[ ] Use symlinks to /usr for /bin, /sbin and /lib //是否将/bin,/sbin,/lib链接到/usr
[*] Enable root login with password //使能root登陆密码
() Root password //设置root密码
/bin/sh (bash) ---> //选择shell类型 [bash] ③
[*] Run a getty (login prompt) after boot ---> //启动后运行getty(登录提示)--->
(ttymxc0) TTY port //设置TTY硬件端口
Baudrate (keep kernel default) ---> //比特率 [与内核保持一致]
(vt100) TERM environment variable //TERM环境变量 (终端类型xterm、vt100)
() other options to pass to getty //传递给getty的其他选项
[*] remount root filesystem read-write during boot //在引导期间安装根文件系统支持读和写
(eth0) Network interface to configure through DHCP //设置DHCP配置的网络接口 [eth0]
(/bin:/sbin:/usr/bin:/usr/sbin) Set the system's default PATH //设置系统的默认路径
[*] Purge unwanted locales //清除不需要的区域设置
(C en_US) Locales to keep //要保留的语言环境
() Generate locale data //生成区域设置数据
[ ] Enable Native Language Support (NLS) //启用本地语言支持(NLS)
-*- Install timezone info //安装时区信息
(default) timezone list //时区清单 [典型]
(Etc/UTC) default local time //用户表的路径
() Path to the users tables
(board/hceng/nxp-imx6ull/rootfs-overlay) Root filesystem overlay directories //根文件系统覆盖目录
() Custom scripts to run before creating filesystem images //在创建文件系统映像之前运行的自定义脚本
() Custom scripts to run inside the fakeroot environment //自定义脚本在fakeroot(模拟root权限)环境中运行
(board/……) Custom scripts to run after creating filesystem images //创建文件系统映像后运行的自定义脚本 ④
() Extra arguments passed to custom scripts //传递给自定义脚本的额外参数
2.5 Kernel(内核配置)
下面的内容描述了 Buildroot 中关于 Linux 内核配置的选项。用户可以选择是否启用内核编译,并设置内核版本(如自定义 Git 仓库的版本),内核配置(使用项目内的 defconfig 文件)以及其他配置片段。内核二进制格式可以选择 zImage
,并指定内核的压缩格式(如 gzip
)。此外,用户可以选择是否构建设备树二进制文件(DTB),以及是否支持设备树覆盖(overlay)。内核镜像将安装到目标系统的 /boot
目录。还可以选择是否需要主机上的 OpenSSL 和 libelf 库。Linux 内核扩展部分包括实时补丁、驱动程序和文件系统模块等。内核工具部分提供了多种选项,如 CPU 电源管理、GPIO 控制、性能分析工具等。这些选项有助于定制和优化内核功能,以满足特定的嵌入式系统需求。
[*] Linux Kernel //使能编译内核
*** Linux kernel in thumb mode may be broken with binutils >= 2.29 *** //binutils>=2.29可能会破坏thumb模式下的内核
Kernel version (Custom Git repository) ---> //内核版本 [自定义Git仓库]
(https://git.dev.tencent.com/……) URL of custom repository //自定义仓库网址 ①
(origin/master) Custom repository version //自定义仓库版本
() Custom kernel patches //自定义内核补丁
Kernel configuration (Using an in-tree defconfig file) ---> //内核配置 [使用项目内defconfig文件]
(imx_v7_ebf) Defconfig name //配置文件名字 (不要_defconfig)
() Additional configuration fragment files //其他配置片段文件
() Custom boot logo file path //自定义启动logo文件路径
Kernel binary format (zImage) ---> //内核二进制文件格式 [zImage] ②
Kernel compression format (gzip compression) ---> //内核压缩格式 [gzip压缩]
[*] Build a Device Tree Blob (DTB) //构建设备树二进制文件(DTB文件)
(imx6ull-14x14-evk imx6ull-14x14-ebf) In-tree Device Tree Source file names //项目里设备树源文件名 (不要.dts)
() Out-of-tree Device Tree Source file paths //项目外设备树源文件路径
[ ] Build Device Tree with overlay support //使能设备树文件覆盖支持
[*] Install kernel image to /boot in target //安装内核镜像到/boot目录
[*] Needs host OpenSSL //主机需要OpenSSL
[ ] Needs host libelf //主机需要libelf (用于读取,修改或创建ELF文件)
Linux Kernel Extensions ---> //Linux内核扩展
[ ] Adeos/Xenomai Real-time patch //Adeos/Xenomai实时时钟补丁
[ ] RTAI Real-time patch //RTAI实时时钟补丁
[ ] ev3dev Linux drivers //ev3dev Linux驱动
[ ] FB TFT drivers //FB TFT驱动
[ ] Aufs Filesystem Module patch //Aufs文件系统模块补丁
Linux Kernel Tools ---> //Linux内核工具
[ ] cpupower //用于检查、调整CPU省电相关功能
[ ] gpio //用于控制、监控GPIO,仅在4.8版本提供 ③
[ ] iio //用于控制、监控iio设备,仅在4.7版本提供
[ ] pci //用于测试特定PCI端点, 仅在4.20版本提供
[ ] perf //用于Linux性能分析
[ ] selftests //用于内核自我测试
[ ] tmon
2.6 Target package
下面的内容介绍了 Buildroot 中关于目标包(Target packages)的配置选项。用户可以启用编译 BusyBox,并配置其使用的配置文件,还可以选择是否启用 SELinux 支持、将每个应用程序编译为单独的二进制文件、以及是否安装看门狗守护程序启动脚本。此外,Buildroot 提供了多个类别的包,包括音频和视频应用、压缩解压工具、调试和基准测试工具、开发工具、文件系统和闪存工具、字体和主题、游戏、图形库、硬件处理、编程语言支持、网络应用、安全工具、系统工具等。这些选项允许用户根据需求定制和选择合适的软件包,满足不同嵌入式系统的功能需求。
Target packages --->
[*] BusyBox //使能编译BusyBox
(package/busybox/busybox.config) BusyBox configuration file to use? //设置BusyBox配置文件路径
() Additional BusyBox configuration fragment files //其他BusyBox配置片段文件
-*- Show packages that are also provided by busybox //列出部分busybox也提供的包
[ ] Enable SELinux support //SELinux支持(安全增强型Security-Enhanced Linux)
[ ] Individual binaries //每个应用程序作为单独二进制文件(为SELinux提供支持)
[ ] Install the watchdog daemon startup script //在启动脚本安装看门狗守护程序
Audio and video applications ---> //音频和视频应用
Compressors and decompressors ---> //压缩和解压
Debugging, profiling and benchmark ---> //调试、分析和基准测试
Development tools ---> //开发工具
Filesystem and flash utilities ---> //文件系统和闪存实用程序
Fonts, cursors, icons, sounds and themes ---> //字体,游标,图标,声音和主题
Games ---> //游戏
Graphic libraries and applications (graphic/text) ---> //图形库和应用程序(图形/文本)
Hardware handling ---> //硬件处理
Interpreter languages and scripting ---> //编程语言和脚本
Libraries ---> //库
Mail ---> //邮箱
Miscellaneous ---> //杂项
Networking applications ---> //网络应用
Package managers ---> //安装包管理
Real-Time ---> //实时时钟
Security ---> //安全
Shell and utilities ---> //Shell和程序
System tools ---> //系统工具
Text editors and viewers ---> //文版编辑和浏览
2.6.1 Audio and video applications
在 Buildroot 中,音频和视频应用程序选项包括多个用于处理音视频的工具和库。启用的选项包括 alsa-utils(用于声卡测试和音频编辑)和 ffmpeg(用于录制、转换及流化音视频)。此外,还可以选择支持多个音视频格式的解码器、编码器和播放器,如 flac、faad2、mp3 编码器、mpd(音乐播放器服务器)、mjpegtools、vlc(流行的多媒体播放器)等。其他功能包括支持流媒体、语音合成、音频连接、视频处理工具、以及开发和调试工具,如 gstreamer 和 jack2。这些选项允许用户根据需求定制音视频处理功能,支持多种格式的播放、录制、转码及流媒体传输。
Audio and video applications --->
[*] alsa-utils ---> //ALSA声卡测试和音频编辑
[ ] atest //ALSA Asoc驱动测试工具
[ ] aumix //声卡混音器
[ ] bellagio //基于OpenMAX的多媒体访问
[ ] bluez-alsa //蓝牙音频ALSA后端
[ ] dvblast //MPEG-2/TS解复用和流媒体
[ ] dvdauthor //创作DVD视频光盘文件和目录结构
[ ] dvdrw-tools //创作蓝光光盘和DVD光盘媒体
[ ] espeak //用于英语和其他语言的语音合成器软件
[ ] faad2 //开源的MPEG-4和MPEG-2 AAC解码器
[*] ffmpeg ---> //录制、转换以及流化音视频的完整解决方案
[ ] flac //开源无损音频编解码器
[ ] flite //小型、快速的TTS系统(TextToSpeech),即文字转语音
[ ] gmrender-resurrect //基于gstreamer的UPnP(DLNA)媒体渲染器
[ ] gstreamer 0.10 //开源多媒体框架0.10版本
[ ] gstreamer 1.x //开源多媒体框架1.x版本,与前面的0.10不兼容
[ ] jack2 //JACK音频连接套件(包含服务器和示例客户端)
*** kodi needs python w/ .py modules, //Kodi开源媒体播放器软件应用程序的需要条件
a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 4.8, ***
*** kodi needs an OpenGL EGL backend with OpenGL support ***
[ ] lame //高质量的MPEG Audio Layer III(MP3)编码器
[ ] madplay //libmad的命令行前端,一个高质量的MPEG音频解码器
[ ] mimic //快速,轻量级的文本到语音引擎
*** miraclecast needs systemd and //miraclecast无线屏幕投影的需要条件
a glibc toolchain w/ threads and wchar ***
[ ] mjpegtools //录制视频和回放,简单的剪切和粘贴编辑以及音频和视频的MPEG压缩
[ ] modplugtools //支持播放MOD、S3M、XM等格式音乐文件
[ ] motion //监控摄像机视频信号的程序,可以检测物体运动
[*] mpd ---> //用于播放音乐的服务器端应用程序
[ ] mpd-mpc //MPD的简约命令行界面
[ ] mpg123 //MPEG音频播放器
[ ] mpv //MPlayer的一个分支,有些新功能
[ ] multicat //高效地操作多播流,特别是MPEG-2传输流
[ ] musepack //音频高品质压缩
[ ] ncmpc //功能齐全的MPD客户端
[ ] opus-tools //Opus编解码器命令行工具
[ ] pulseaudio //声音服务代理,可队声音进行操作再播放
[ ] sox //可录制、播放、格式转换、修改音频文件
[ ] squeezelite //Logitech媒体服务器客户端
[ ] tstools //处理MPEG数据的跨平台命令行工具
[ ] twolame //优化的MPEG Audio Layer 2(MP2)编码器
[ ] udpxy //将UDP流量转发到请求HTTP客户端的中继守护程序
[ ] upmpdcli //MPD音乐播放器前端
[ ] v4l2grab //用于从V4L2设备获取JPEG的程序
[ ] v4l2loopback //创建虚拟视频设备
[ ] vlc //可播放大多数多媒体文件以及DVD、音频CD、VCD和各种流媒体协议
[ ] vorbis-tools //用于Ogg格式文件的独立播放器、编码器和解码器,也可作为流媒体播放器
[ ] wavpack //提供无损,高质量的有损和独特的混合压缩模式
[ ] yavta //一个V4L2测试应用程序
[ ] ympd //MPD网页客户端
2.6.2 Compressors and decompressors
在 Buildroot 中,压缩和解压工具的选项包括多种常见的无损压缩和解压格式支持。启用的选项包括 bzip2(常用的压缩工具)和 xz-utils(用于处理XZ压缩的命令行工具)。其他可选工具包括 gzip、lz4、lzop、p7zip、unzip、unrar 等,它们支持不同格式的压缩和解压,如 zip、rar、xz 等。还提供了一些并行压缩工具,如 pigz(gzip的替代品)和 pixz(xz的并行版本)。这些工具为用户提供了多种选择,方便处理不同的压缩格式。
Compressors and decompressors --->
[ ] brotli //通用无损压缩库
-*- bzip2 //免费的压缩工具
[ ] gzip //标准GNU压缩器
[ ] lz4 //快速的无损压缩
[ ] lzip //类似gzip或bzip2
[ ] lzop //与gzip相似
[ ] p7zip //Unix的7-zip命令行版本
[ ] pigz //是gzip的全功能替代品
[ ] pixz //是xz的并行索引版本
[ ] unrar //rar文件解压
[ ] unzip //zip文件解压
[*] xz-utils //用于处理XZ压缩的命令行工具,包括xz、unxz、xzcat、xzgrep等
[ ] zip //压缩和解压zip文件
[ ] zstd //Zstandard或zstd的简短版本
2.6.3 Debugging, profiling and benchmark
在 Buildroot 中,提供了多种性能测试和调试工具,涵盖了从内存、CPU、I/O、文件系统到网络的各类基准测试和故障诊断。包括 blktrace(块设备I/O跟踪)、fio(I/O压力测试)、lmbench(系统性能检测)、stress 和 stress-ng(压力测试工具)等。还有 dstat、iostat、netstat 等综合监控工具,帮助用户分析系统负载和性能。此外,工具如 gdb(调试工具)、strace(系统调用跟踪)、ltrace(库函数调用跟踪)以及 valgrind(内存错误检测)提供调试和诊断支持。网络分析和诊断工具如 netperf 和 netsniff-ng 也有提供。其他工具如 lsof、memstat、latencytop、nmon 等可用于监控系统状态、追踪内存和进程消耗。
] blktrace //对通用块层(block layer)的I/O跟踪机制,它能抓取详细的I/O请求,发送到用户空间
[ ] bonnie++ //执行一系列简单的硬盘驱动器和文件系统性能测试
[ ] cache-calibrator //用于分析计算机(缓存)内存系统并提取有用信息,以及作为负载生成器进行实时测试
*** clinfo needs an OpenCL provider *** //查询OpenCL参数和是否安装正常
[ ] dhrystone //测量处理器运算能力的最常见基准程序之一,常用于处理器的整型运算性能的测量
[ ] dieharder //随机数/均匀偏差发生器测试仪,适用于测试软件RNG和硬件RNG
[ ] dmalloc //一个调试分配内存库,替代系统的malloc、realloc、calloc、free等
[ ] dropwatch //交互式监视和记录内核丢弃的数据包
[ ] dstat //取代vmstat、iostat、netstat、ifstat等,监控系统运行状况、基准测试、排除故障
[ ] dt //用于验证外围设备、文件系统、驱动程序或操作系统支持的任何数据流的正常运行
[ ] duma //检测意外的内存访问(Detect Unintended Memory Access)
[ ] fio //一种I/O工具,用于基准测试和压力/硬件验证
[ ] gdb //强大的UNIX下的程序调试工具
[ ] google-breakpad //用于崩溃日志收集
[ ] iozone //一个文件系统基准测试工具,测试不同的操作系统中文件系统的读写性能
[ ] kexec //用一个运行的内核去运行一个新内核,就像运行一个应用程序一样
[ ] ktap //基于脚本的Linux动态跟踪工具,允许用户跟踪Linux内核动态
[ ] kvm-unit-tests //为KVM提供单元测试
[ ] latencytop //专注于解决音频跳跃、桌面卡顿、服务器过载等延迟
[ ] lmbench //一种性能检测工具,提供内存、网络、内核等多方面的测试
[ ] lsof //列出当前系统打开文件的工具(LiSt Open Files)
[ ] ltp-testsuite //测试Linux内核和相关特性的工具集合
[ ] ltrace //能够跟踪进程的库函数调用,显示哪个库函数被调用
[ ] lttng-babeltrace //LTTng(Linux Trace Toolkit Next Generation)跟踪读写库、转换
[ ] lttng-modules //用于LTTng 2.x内核跟踪基础结构的Linux内核模块
[ ] lttng-tools //用于LTTng 2.x跟踪基础结构的用户空间实用程序
[ ] memstat //列出正在消耗虚拟内存的所有进程、可执行程序、共享库
[ ] netperf //网络性能基准工具
[ ] netsniff-ng //高性能的Linux网络分析器和网络工具包
[ ] nmon //监控系统的 CPU、内存、网络、硬盘、文件系统、NFS、高耗进程、资源等信息
[ ] oprofile //性能监测工具,从代码层面分析程序的性能消耗情况,找出程序性能的问题点
[ ] pax-utils //用于ELF 32/64二进制文件的ELF相关工具,可以检查文件的安全相关属性
[ ] pv //基于终端的工具,用于监控通过管道的数据进度
[ ] ramspeed/smp //用于测量多处理器计算机的缓存和内存性能
[ ] ramspeed //用于测量缓存和内存性能
[ ] rt-tests //用于测试Linux系统实时行为的程序集
[ ] spidev_test //基于spidev驱动程序的SPI测试程序
[ ] strace //用于诊断、调试和教学的Linux用户空间跟踪器
[ ] stress //用于POSIX系统的工作负载生成器
[ ] stress-ng //以各种可选择的方式对计算机系统进行压力测试
[ ] sysdig //从正在运行的Linux实例捕获系统状态和活动、然后保存、过滤和分析
[ ] tcf-agent //一个守护进程,它提供可供本地和远程客户端使用的TCF服务
[ ] tinymembench //内存基准测试程序
[ ] trace-cmd //帮助开发人员了解Linux内核的运行时行为,以便进行故障调试或性能分析
[ ] trinity //Linux系统调用模糊测试
[ ] uclibc-ng-test //编译并安装uClibc-ng测试套件
[ ] valgrind //用于调试和分析Linux程序的工具
[ ] vmtouch //用于学习和控制unix和unix类系统的文件系统缓存的工具
[ ] whetstone //测试双精度浮点数操作的速度和效率
2.6.4 Development tools
在 Buildroot 中,提供了多种开发工具和版本控制工具,包括 binutils(二进制工具集)、git 和 subversion(代码版本控制)、make(构建工具)等。还提供了多种测试框架,如 cppunit、cxxtest 和 check,用于单元测试和自动化测试。其他工具包括 diffutils(文件比较)、patch(应用补丁)、findutils(目录搜索工具)、sed(文本编辑器)和 grep(正则表达式匹配器)等。工具如 gettext 和 gawk 支持多语言和数据处理,而 jq 和 jo 提供 JSON 数据处理功能。此外, pkgconf 用于配置编译器和链接器标志,flex 和 gperf 用于词法分析和哈希函数生成,tree 用于递归显示目录结构。
[ ] binutils //安装binutils(BinaryUtilities)二进制工具的集合,比如ld、as
[ ] bsdiff //创建补丁path或文件比较diff
[ ] check //单元测试框架
[ ] ctest //CTest是CMake集成的一个测试工具,可以自动配置、构建、测试、展现测试结果
[ ] cppunit //著名的JUnit框架的C++端口,用于单元测试
[ ] cunit //自动化测试框架
[ ] cvs //代码版本控制软件
[ ] cxxtest //C++的单元测试框架
[ ] diffutils //GNU diff,文件每行比较
[ ] dos2unix //将DOS格式(CRLF)的文本文件转换成UNIX格式(LF)
[ ] findutils //基本目录搜索工具,比如find、xargs、locate、updatedb等
[ ] flex //快速词法分析器生成器,用于生成在文本上执行模式匹配的程序的工具
[ ] gawk //一种特殊用途的编程语言,它是数据驱动的而不是程序的
[ ] gettext //提供一个框架来帮助其他GNU包生成多语言消息
[ ] git //代码版本控制软件
[ ] git-crypt //用于在git存储库中对文件进行透明加密和解密
[ ] gperf //一个“完美的哈希函数”生成器
[ ] grep //GNU正则表达式匹配器
[ ] jo //从shell输出JSON的命令行处理器
[ ] jq //类似用于JSON数据的sed,用来切片和过滤,映射和转换结构化数据
[ ] libtool //一个通用的库支持脚本,藏了在一致的可移植界面背后使用共享库的复杂性
[ ] make //用于控制程序源文件中程序的可执行文件和其他非源文件的生成
[ ] patch //获取补丁文件(包含差异列表)并将其应用于原始文件,生成修补版本
[ ] pkgconf //有助于为开发框架配置编译器和链接器标志的程序
[ ] sed //非交互式命令行文本编辑器
[ ] subversion //代码版本控制软件
[ ] tree //递归显示目录列表的命令
2.6.5 Filesystem and flash utilities
在 Buildroot 中,提供了多种文件系统工具,涵盖了不同的文件系统类型和操作。包括 e2fsprogs(Ext2/3/4 文件系统工具集),btrfs-progs(Btrfs 文件系统工具),cifs-utils(CIFS 文件系统工具),以及 xfsprogs(XFS 文件系统工具)。还有 cpio 和 cramfs(用于创建和提取 cpio 和 cramfs 存档的工具)。提供了针对各种加密和文件访问需求的工具,如 ecryptfs-utils(加密文件系统)、fscryptctl(文件系统加密管理)、exfat-utils 和 exFAT (FUSE)(支持 exFAT 文件系统)。此外,还有 nfs-utils(NFS 服务工具)、ntfs-3g(NTFS 文件系统支持)、squashfs(SquashFS 文件系统工具)等工具。针对不同存储介质,提供了 flashbench(SD卡属性识别)、mmc-utils(MMC 工具)、mtd、jffs2 和 ubi/ubifs 工具,以及针对特定硬件的 imx-usb-loader 和 sunxi-tools。
[ ] abootimg //直接通过文件映像或/dev块设备操作Android Boot Images的工具
[ ] aufs-util //aufs文件系统工具
[ ] autofs //自动挂载/卸载文件系统的守护进程
[ ] btrfs-progs //Btrfs文件系统工具
[ ] cifs-utils //CIFS文件系统工具
[ ] cpio //用于创建和提取的cpio存档的工具
[ ] cramfs //用于生成和检查cramfs文件系统的工具
[ ] curlftpfs (FUSE) //基于FUSE和libcurl访问FTP主机的文件系统
[ ] davfs2 //一个Linux文件系统驱动程序,允许挂载WebDAV资源,远程协作创作Web资源
[ ] dosfstools //用于创建和检查DOS FAT文件系统的工具
[*] e2fsprogs ---> //Ext2(及Ext3/4)文件系统工具集,包含了创建、修复、配置、调试等工具
[ ] debugfs //ext2/ext3/ext4文件系统调试工具(不仅限于下列几个工具)
[ ] e2image //保存关键的ext2/ext3ext4文件系统的元数据到文件中
[ ] e4defrag //用于ext4文件系统的在线碎片整理程序
[*] fsck //检查并修复特定Linux文件系统
[ ] fuse2fs //用于ext2/ext3/ext4文件系统的FUSE文件系统客户端
[ ] resize2fs //用于ext2/ext3/ext4文件系统容量调整
[ ] e2tools //用于读取、写入、操作ext2/ext3中的文件,使用ext2fs库访问文件系统
[ ] ecryptfs-utils //适用于Linux的POSIX兼容企业加密文件系统
[ ] exFAT (FUSE) //作为FUSE模块,GNU/Linux和其他类Unix系统的全功能exFAT文件系统
[ ] exfat-utils //exFAT文件系统工具
[ ] f2fs-tools //用于Flash-Friendly File System(F2FS)的工具
[ ] flashbench //用于识别SD卡和存储媒介属性的工具
[ ] fscryptctl //处理原始密钥并管理Linux文件系统加密策略的工具
[ ] fwup //可编写脚本的嵌入式Linux固件更新创建、运行工具
[ ] genext2fs //作为普通(非root)用户生成ext2文件系统
[ ] genpart //生成由命令行参数定义的16字节分区表条目,并将其转储到stdout
[ ] genromfs //生成ROMFS文件系统的工具
[ ] imx-usb-loader //通过USB在Freescale i.MX5/i.MX6和Vybrid SoC上下载和运行程序的工具
[ ] mmc-utils //MMC工具
[ ] mtd, jffs2 and ubi/ubifs tools //构建mtd、jffs2和ubi/ubifs工具
[ ] mtools //用于从Unix访问MS-DOS磁盘而不安装它们
[ ] nfs-utils //NFS服务工具
[ ] nilfs-utils //用于创建和管理NILFS2文件系统的工具
[ ] ntfs-3g //开源免费的读/写NTFS驱动程序,可以处理Windows的NTFS文件系统
[ ] sp-oops-extract //一个从MTD中提取OOPS/panic异常日志的工具
[ ] squashfs //生成SquashFS文件系统的工具
[ ] sshfs (FUSE) //基于SSH文件传输协议的FUSE文件系统客户端
[ ] sunxi-tools //用于全志Allwinner A10(又名sun4i)和A13(又名sun5i)设备的工具
[ ] udftools //用于创建UDF文件系统的工具
[ ] unionfs (FUSE) //一个用户空间unionfs的实现
[ ] xfsprogs //XFS文件系统工具和库
2.6.6 Fonts, cursors, icons, sounds and themes
在 Buildroot 中,提供了一些与界面和用户体验相关的资源,包括光标、字体、图标、声音和主题。光标方面,有 comix-cursors 和 obsidian-cursors,两种不同风格的鼠标光标。字体方面,提供了 Bitstream Vera、cantarell、DejaVu fonts、font-awesome、ghostscript-fonts、inconsolata 和 Liberation fonts,这些字体适用于不同的用途,包括代码、屏幕阅读和网页设计。图标方面,有 google-material-design-icons(Google 官方的 Material Design 图标集)和 hicolor icon theme(备用图标主题)。声音方面,提供了 sound-theme-borealis 和 sound-theme-freedesktop,两种不同的声音主题。最后,提供了一些可用的主题选项来改善用户界面的外观和体验。
*** Cursors *** //光标
[ ] comix-cursors //X11鼠标主题里一个略卡通的鼠标光标
[ ] obsidian-cursors //一个明亮、干净的鼠标光标集合
*** Fonts *** //字体
[ ] Bitstream Vera //Bitstream Vera字体系列
[ ] cantarell //一款当代人文主义无衬线字体,专为屏幕阅读而设计
[ ] DejaVu fonts //基于Vera字体的字体系列,提供更广泛的用途
[ ] font-awesome //是一套605个象形图标,可在网站上轻松扩展矢量图形
[ ] ghostscript-fonts //随Ghostscript(PDF软件)一起分发的字体,目前包括35种的gostScript字体
[ ] inconsolata //一种等宽字体,专为代码、清单等而设计
[ ] Liberation (Free fonts) //旨在替代Microsoft三种最常用字体:Times New Roman、Arial和Courier New
*** Icons *** //图标
[ ] google-material-design-icons //Google根据材料设计语言(Material Design)设计的官方图标集
[ ] hicolor icon theme //备用图标主题,用于显示图标主题中不可用的图标
*** Sounds *** //声音
[ ] sound-theme-borealis //北极星(borealis)的声音主题
[ ] sound-theme-freedesktop //默认桌面(freedesktop)的声音主题
*** Themes *** //主题