开心的遥控器 · 【《关于促进服务业领域困难行业恢复发展的若干 ...· 4 月前 · |
大力的充值卡 · 950万,再见勇士!你的固执毁了金州,承认吧 ...· 1 年前 · |
飞奔的生姜 · 廖娟(中国四川籍女演员)_百度百科· 1 年前 · |
细心的汤圆 · 天官赐福:留下馒头的谢怜为何会脸红?灰灰的漫 ...· 1 年前 · |
聪明伶俐的课本 · 镇海蛟川书院摇号不中怎么办_蛟川书院摇号概率 ...· 1 年前 · |
CSDN仅用于增加百度收录权重,排版未优化,日常不维护。请访问:www.hceng.cn 查看、评论。
本博文对应地址:
https://hceng.cn/2019/09/05/Buildroot%E7%AC%94%E8%AE%B0/#more
整理Buildroot笔记,包含配置选项注释、目录结构分析、常用命令、构建示例、 使用技巧。
Buildroot
是Linux平台上一个构建嵌入式Linux系统的框架。
整个Buildroot是由Makefile(*.mk)脚本和Kconfig(Config.in)配置文件构成的,因此可以像配置Linux内核一样执行
make menuconfig
进行配置,编译出一个完整的、可以直接烧写到机器上运行的Linux系统文件(包含bootloader、kernel、rootfs以及rootfs中的各种库和应用程序)。
回想构建开源软件包的流程,工作流大致如下:
可以看到构建每个软件包的工作流几乎是相同的,Buildroot主要就是把这些重复操作自动化,用户只需勾选上所需软件包,便自动完成以上所有操作。
其次,U-boot、Linux Kernel的编译工作流的差不多,只是配置的自定义参数更多,在Buildroot设置好了,也就一并生成。
以
Buildroot 2019.02.4
,
imx6ull
配置为例,对配置选项进行注释。
执行
make menuconfig
进入一级配置菜单:
Target options ---> Build options ---> Toolchain ---> System configuration ---> Kernel ---> Target packages ---> Filesystem images ---> Bootloaders ---> Host utilities ---> Legacy config options --->
后面将依次对每个子菜单进行注释。约定
()
内为直接翻译或补充说明,[]
内为示例选项含义。
2.1 Target options(目标选项)
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) ---> //ARM的指令集设置 [ARM]
①:ABI是X86计算机上的,EABI是嵌入式平台上; EABI/EABIhf分别适用于armel和armhf两个不同的架构,armel和armh在对待浮点运算采取了不同的策略(有fpu的arm才能选择EABIhf);
②:ARM浮点体系结构(VFP),VFPvX为历史各版本,比如浮点运算指定为VFP4(vector floating point4)指令或neon向量浮点指令;
2.2 Build options(编译选项)
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(工具链)
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 MMU support //使能MMU支持 () Target Optimizations //目标优化 (需设置前面的GCC优化等级) () Target linker options //目标链接器选项 (构建目标时传递给链接器的额外选项) [ ] Register toolchain within Eclipse Buildroot plug-in //在Eclipse Buildroot插件中注册工具链
①:受限每行字数,该处完整链接为:
https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabihf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz
;
②:可选的有uClibc/uClibc-ng
、glibc/eglibc
、musl (experimental)
,介绍如下:
glibc(GNU C Library)
:常用于桌面、服务器中的GNU/Linux类系统中的C语言标准库,支持多种系统平台,功能齐全,但也相对比较臃肿和庞大;eglibc(Embedded glibc)
:glibc的一种变体,目的在于将glibc用于嵌入式系统;uClibc/uClibc-ng
:uClibc-ng是uClibc的分支,它们都是为嵌入式设计的小型的C语言标准库,适合标准和无MMU的Linux系统上运行;musl
:一个轻量级的C标准库,目前在buildroot里是实验阶段;
对比参考:Comparison of C/POSIX standard library implementations for Linux③:堆栈粉碎保护(Stack Smashing Protection);
④:远程过程调用(Remote Procedure Call),主要用于NFS;2.4 System configuration(系统配置)
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 //传递给自定义脚本的额外参数
①:可选选项有
BusyBox
、systemV
、systemd
、None
:
BusyBox init
:
1.不支持运行等级,设置的运行等级将被忽略,要使用运行等级,请使用sysvinit;
2.语法格式:<id>:<runlevels>:<action>:<process>
<id>
:process执行所在的tty设备,内容为/dev目录中tty设备的文件名;
<runlevels>
:此字段完全被忽略;
<action>
:支持sysinit、respawn、askfirst、wait、once、restart、ctrlaltdel、shutdown;
<process>
:指定要执行的进程及其命令行;
3.BusyBox init程序将在启动时读取/etc/inittab
文件,以了解该做什么,默认inittab存储在./package/busybox/inittab
;
4.inittab除了安装几个重要的文件系统之外,还要启动/etc/init.d/rcS
中的shell脚本,并启动一个getty程序(提供一个登录提示);
systemV
:
1.使用传统sysvinit程序,之前大多数台式机Linux发行版都使用该方案,现在有些变为了Upstart或Systemd;
2.在/ect目录下会生成init.d、rc0.d、rc1.d、rc2.d、rc3.d、rc4.d、rc5.d、rc6.d、rc.loacl;
init.d里面包含的是真正的服务脚本;
rcN.d里面是链接向init.d里脚本的软链接,N表示运行级别,进入哪个运行级别,就会执行对应rcN.d文件夹的脚本;
当所有的当前运行级别的脚本都运行完了之后,会运行rc.local;
3.脚本的命名规则:以[S|K]+NN+其它
,以S开头的是启动脚本,以K开头的是停止脚本,init进程会按照S或者K后面的数字的顺序来启动或停止服务;
4.sysvinit还使用/etc/inittab
文件(与BusyBox的语法略有不同),默认inittab存储在./package/sysvinit/inittab
;
systemd
:
1.systemd是Linux的新一代init系统,以前的运行级别(runlevel)的概念被新的运行目标(target)所取代;
2.支持并行化任务;采用socket式与D-Bus总线式激活服务;按需启动守护进程(daemon);支持快照和系统恢复;
3.功能强大的同时,也带来了相当大数量的大型依赖:dbus,udev等;
Systemd 的简介和特点②:/dev设备文件的管理方式,可选选项有四个:
Static using device table
: 使用静态的设备表,/dev将根据system/device_table _dev.txt
的内容创建设备,进入系统添加或删除设备时,无法自动更新;Dynamic using devtmpfs only
:在系统启动过程中,会动态生成/dev文件,进入系统添加或删除设备时,无法自动更新;Dynamic using devtmpfs + mdev
:在前面devtmpfs的基础上加入mdev用户空间实用程序,进入系统添加或删除设备时,可以自动更新,自动创建规则在/etc/mdev.conf
;Dynamic using devtmpfs + eudev
:在前面devtmpfs的基础上加入eudev用户空间守护程序,eudev是udev的独立版本,是Systemd的一部分,提供更多的功能也更占用资源;③:在Linux下编写shell脚本文件时,经常会看到在第一行中标注
#!/bin/bash
,这句话的意思是告诉系统强制用bash,避免出现一些不兼容的问题。因此,除了bash外,还有很多shell工具,比如这里可选busybox自带的shell、小巧但功能很少的dash、高效紧凑的mksh、功能强大体积也稍大的zsh。此外,可以通过ls -l /bin/sh
查看当前使用的是何种shell工具。④:受限每行字数,该处完整路径为
board/freescale/common/imx/post-image.sh
。这里是如何产生sdcard.img,用于sd卡启动的原理部分。
针对我现在imx6ull的情况,board/freescale/common/imx
目录下有两个文件值得关注:genimage.cfg.template
和post-image.sh
。
先来看genimage.cfg.template
:{% codeblock lang:shell %}
Minimal SD card image for the Freescale boards Template
We mimic the .sdcard Freescale’s image format:
* the SD card must have 1 kB free space at the beginning,
* U-Boot is dumped as is,
* a FAT partition at offset 8 MB is containing zImage/uImage and DTB files
* a single root filesystem partition is required (ext2, ext3 or ext4)
image boot.vfat {
vfat {
files = {
%FILES%
}
}
size = 16M
}image sdcard.img {
hdimage {
}partition u-boot {
in-partition-table = “no”
image = “%UBOOTBIN%”
offset = 1024
}partition boot {
partition-type = 0xC
bootable = “true”
image = “boot.vfat”
offset = 8M
}partition rootfs {
partition-type = 0x83
image = “rootfs.ext2”
}
}
{% endcodeblock %}该配置文件显示会生成两个文件,一个
boot.vfat
,一个sdcard.img
;
boot.vfat
由"%FILES%"
所表示内容组成(后面会得知是kernel+dtb);
sdcard.img
有四个分区,第一个是空,第二个是偏移1024字节(1k)后,内容为"%UBOOTBIN%"
(u-boot),第三个为偏移8M后,存放前面生成的boot.vfat
(kernel+dtb),最后存放rootfs.ext2
。
此时分区情况如下:分区类型和数值的对应关系可通过该文章查询:List of partition identifiers for PCs or Listing of MBR/EBR Partition Types
此时将sd卡插入Windows电脑,可以发现只能识别存放boot.vfa
t(kernel+dtb)的分区,因为该分区为FAT32格式,Windows可以识别,而存放rootfs.ext2
的分区为ext2/3/4,Windows是无法识别的,与生活常识是吻合的。
另外,如果想在SD卡创建其它自定义分区,可以再加一个partition:partition user { partition-type = 0xC size = 10M
再来看看
post-image.sh
是如何解析genimage.cfg.template
:{% codeblock lang:shell %}
#!/usr/bin/env bashdtb_list extracts the list of DTB files from BR2_LINUX_KERNEL_INTREE_DTS_NAME
in ${BR_CONFIG}, then prints the corresponding list of file names for the
genimage configuration file
dtb_list()
{
local DTB_LIST="KaTeX parse error: Can't use function '\(' in math mode at position 47: …TREE_DTS_NAME="\̲(̲[\/a-z0-9 \-]*\…/\1/p’ ${BR2_CONFIG})"for dt in $DTB_LIST; do echo -n "\"`basename $dt`.dtb\", "
linux_image extracts the Linux image format from BR2_LINUX_KERNEL_UIMAGE in
${BR_CONFIG}, then prints the corresponding file name for the genimage
configuration file
linux_image()
{
if grep -Eq “^BR2_LINUX_KERNEL_UIMAGE=y$” KaTeX parse error: Can't use function '\"' in math mode at position 28: …; then echo "\̲"̲uImage\"" elif…" ${BR2_CONFIG}; then
echo ““Image””
else
echo ““zImage””
fi
}genimage_type()
{
if grep -Eq “^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$” {BR2_CONFIG}; then echo "genimage.cfg.template_imx8" elif grep -Eq "^BR2_TARGET_UBOOT_SPL=y BR2CONFIG;thenecho"genimage.cfg.templateimx8"elifgrep−Eq"BR2TARGETUBOOTSPL=y" ${BR2_CONFIG}; then
echo “genimage.cfg.template_spl”
else
echo “genimage.cfg.template”
fi
}uboot_image()
{
if grep -Eq “^BR2_TARGET_UBOOT_FORMAT_DTB_IMX=y$” BR2CONFIG;thenecho"u−boot−dtb.imx"elifgrep−Eq"BR2TARGETUBOOTFORMATIMX=y" ${BR2_CONFIG}; then
echo “u-boot.imx”
fi
}main()
{
local FILES="$(dtb_list) (mktemp−−suffixgenimage.cfg)"localGENIMAGETMP="{BUILD_DIR}/genimage.tmp"sed -e "s/%FILES%/${FILES}/" \ -e "s/%UBOOTBIN%/${UBOOTBIN}/" \ board/freescale/common/imx/$(genimage_type) > ${GENIMAGE_CFG} rm -rf "${GENIMAGE_TMP}" genimage \ --rootpath "${TARGET_DIR}" \ --tmppath "${GENIMAGE_TMP}" \ --inputpath "${BINARIES_DIR}" \ --outputpath "${BINARIES_DIR}" \ --config "${GENIMAGE_CFG}" rm -f ${GENIMAGE_CFG} exit $?
main $@
{% endcodeblock %}可以在
main
看到,FILES
为dtb和kernel,UBOOTBIN
为u-boot,再传入配置文件。
最后使用genimage
生成,genimage
在后面2.9Host utilities(主机工具)
部分需要勾选上,它的作用是给定根文件系统树,生成多个文件系统和闪存镜像的工具。
2.5 Kernel(内核配置)
[*] 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 //用于用户访问系统相关的热信息
①:受限每行字数,该处完整链接为
https://git.dev.tencent.com/weidongshan/imx6ull_kernel.git
;
②:分别介绍下这几个内核镜像格式,以及一些其它格式:
vmlinuz·
:静态编译出来的最原始的ELF文件,包括了内核镜像、调试信息、符号表等内容;其中 “vm” 代表 “Virtual Memory”;Image
:将所有的符号和重定位信息都删除,只剩下二进制数据的内核代码,此时还没经过压缩;zImage
:是vmlinux加上解压代码(用于自解压)经过gzip压缩后的文件,适用于小内核,常见于ARM;bzImage
:是vmlinux加上解压代码(用于自解压)经过gzip压缩后的文件,适用于大内核,常见于x86,“bz”表示 “big zImage”;uImage
:是U-Boot专用的镜像文件,使用mkimage工具在zImage之前加上一个长度为0x40的头信息(tag),在头信息内说明了该镜像文件的类型、加载位置、生成时间、大小等信息;
③:使用新的ABI,弃用sysfs;
2.6 Target packages(目标包配置)
目标包配置内容有点多,二级目录如下:
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
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
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
[ ] 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
[ ] 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
[ ] 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
*** 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 *** //主题
2.6.7 Games
[ ] chocolate-doom //一个复古游戏 [ ] flare-engine //Flare(Free Libre Action Roleplaying Engine)是一款简单的游戏引擎 [ ] gnuchess //一个西洋棋游戏 [ ] LBreakout2 //一款以Arkanoid形式出现的突破式街机游戏 [ ] LTris //LTris是使用SDL的俄罗斯方块克隆 *** minetest needs X11 and an OpenGL provider *** //一个开源体像素游戏,需要X11和OpenGL支持 [ ] OpenTyrian //是DOS射击游戏Tyrian的一个端口 [ ] prboom //一个Doom客户端,用于支持在较新的硬件上玩旧游戏 [ ] sl /终端/输入"sl"时,终端出现蒸汽火车穿过,一个玩笑命令 *** solarus needs OpenGL and a toolchain w/ C++, //larus需要OpenGL和一个带C++的工具链,gcc> = 4.8,NPTL,动态库 gcc >= 4.8, NPTL, dynamic library *** //一款动作角色扮演游戏(ARPG)引擎 [ ] stella //一款多平台Atari 2600 VCS仿真器
2.6.8 Graphic libraries and applications (graphic/text)
*** Graphic applications *** //***图形应用*** [ ] fswebcam //一个从V4L2获取图像的简洁的网络摄像头应用程序 [ ] ghostscript //文件通过它到打印机打印出来 [ ] glmark2 //glmark2,一个GPU压力测试软件 [ ] gnuplot //使用命令列界面,绘制数学函数图形、统计图表等等 [ ] jhead //用于操作一些数码相机使用的Exif jpeg标题中的设置和缩略图的程序 [ ] libva-utils //是VA-API(视频加速API)测试的集合 [ ] netsurf //一个紧凑的图形Web浏览器,旨在支持HTML5,CSS和JavaScript [ ] pngquant //有损PNG压缩器,包含pngquant命令和libimagequant库 [ ] rrdtool //用于时间序列数据的高性能数据记录和图形系统 [ ] tesseract-ocr ---- //一个支持多种语言的OCR(光学字符识别)引擎,它可以直接使用或提供API *** Graphic libraries *** //***图形库*** [ ] cegui06 //Crazy Eddie的GUI系统是一个免费的库,为图形API/引擎提供窗口和小部件 [ ] directfb //DirectFB是在Linux帧缓冲区(fbdev)抽象层之上实现的一组图形API [ ] efl //Enlightenment Foundation Libraries,一个开源UI工具包 [ ] fbdump (Framebuffer Capture Tool) //一个从Linux内核帧缓冲设备捕获快照并将其作为PPM文件写出的简单工具 [ ] fbgrab //一个帧缓冲截图程序,捕获Linux frambuffer并将其转换为png图片 [ ] fbset //用于显示或更改帧缓冲设备的设置 [ ] fb-test-app //Linux framebuffer的测试套件 [ ] fbterm //用于Linux的快速终端仿真器,带有帧缓冲设备或VESA视频卡 [ ] fbv //一个帧缓冲控制台图形文件查看器,能够显示GIF,JPEG,PNG和BMP文件 [ ] freerdp //是远程桌面协议(RDP)的免费实现 [ ] imagemagick //一个用于创建,编辑和组合位图图像的软件套件 [ ] linux-fusion communication layer for DirectFB multi //DirectFB通信层允许多个DirectFB应用程序同时运行 [ ] mesa3d ---- //OpenGL规范的开源实现 [ ] ocrad //一个基于特征提取方法的OCR(光学字符识别)程序 [ ] psplash //用于实现开机动画、开机进度条 [ ] SDL //一个库,允许程序对视频帧缓冲、音频输出、鼠标和键盘进行低级访问 [ ] sdl2 //DirectMedia的第2层,与SDL不兼容 *** Other GUIs *** //***其它GUI*** [*] Qt5 ---> //QT5框架 Qt5 version (Latest (5.11)) ---> //选择QT5版本 [ ] qt53d module //QT53d模块 -*- qt5base //qt5base模块,包含基本的Qt库:QtCore、QtNetwork、QtGui、QtWidgets等 () Custom configuration options //自定义QT5编译选项 () Config file //指定类似src/corelib/global/qconfig-*.h文件来启用/禁用的功能 [ ] Compile and install examples (with code) //编译并安装示例(含代码) [ ] concurrent module //启用Qt5Concurrent库 [ ] MySQL Plugin //构建MySQL插件 [ ] PostgreSQL Plugin //构建PostgreSQL插件 SQLite 3 support (No sqlite support) ---> //启用SQLite3支持(不支持sqlite) [ ] gui module //启用Qt5Gui库 [ ] DBus module //启用D-Bus模块 [ ] Enable ICU support //启用Qt5中的ICU支持,例如Qt5Webkit需要此功能 [ ] Enable Tslib support //启用Tslib插件 [ ] qt5canvas3d //Qt Canvas 3D模块提供一种从Qt Quick JavaScript进行类似于WebGL的3D绘图调用的方法 [ ] qt5charts //Qt图表模块提供了一组易于使用的图表组件 [ ] qt5connectivity //Qt Connectivity模块提供对Bluetooth/NFC外围设备的支持 [ ] qt5declarative //Qt Declarative模块提供了Qt QML和Qt Quick模块,用于使用QML语言开发UI [ ] qt5enginio //Enginio是一种后端即服务解决方案,用于简化连接的和数据驱动的应用程序的后端开发 [ ] qt5graphicaleffects //Qt Graphical Effects模块提供了一组QML类型,用于向用户界面添加视觉特效 [ ] qt5imageformats //Qt Image Formats模块提供了用于其他图像格式的插件:TIFF、MNG、TGA、WBMP [ ] qt5location //Qt Location API使用一些流行的定位服务提供的数据来创建可行的地图解决方案 [ ] qt5multimedia //Qt Multimedia模块,实现媒体播放以及使用摄像头和无线电设备 [ ] qt5quickcontrols //Qt Quick Controls模块提供了一组控件,可用于在Qt Quick中构建完整的界面 [ ] qt5quickcontrols2 //对应Qt Quick Controls 2模块 [ ] qt5script //Qt脚本支持使Qt应用程序可编写脚本,逐渐弃用,在新设计中由Qt QML模块替换 [ ] qt5scxml //Qt SCXML模块提供了从SCXML文件创建状态机的功能 [ ] qt5sensors //Qt Sensors API通过QML和C++接口提供对传感器硬件的访问 [ ] qt5serialbus //对应qt5serialbus模块 [ ] qt5serialport //Qt串行端口提供配置串行端口,I/O操作,获取和设置RS-232引脚排列的控制信号 [ ] qt5svg //Qt SVG提供了用于在小部件和其他绘画设备上渲染和显示SVG图纸的类 [ ] qt5tools //Qt Tools提供的工具可促进应用程序的开发和设计 [ ] qt5virtualkeyboard //Qt虚拟键盘是一个虚拟键盘框架,由C++后端和QML实现的UI前端组成 [ ] qt5wayland //对应qt5wayland模块 [ ] qt5webchannel //支持在服务器(QML/C++应用程序)和客户端(HTML/JavaScript或QML应用程序)之间进行对等通信 [ ] qt5webkit //提供WebView API,用于QML应用程序呈现动态Web内容,后继QtWebEngine需要OpenGL支持 [ ] qt5webengine //提供用于渲染HTML,XHTML和SVG文档的C++类和QML类型 [ ] qt5websockets //提供C++和QML接口,使Qt应用程序可以充当可处理WebSocket请求的服务器,也可充当的客户端 [ ] qt5xmlpatterns //Qt XML Patterns模块提供对XPath,XQuery,XSLT和XML Schema验证的支持 [ ] KF5 ---- //KF5是一组Qt框架插件,扩展了Qt *** QT libraries and helper libraries *** //***QT库和帮助程序库*** [ ] cutelyst //一个基于Qt的C++ Web框架,它使用Catalyst(Perl)框架的简单实现 [ ] grantlee //Django模板框架的Qt实现 [ ] qextserialport //一个Qt库来管理串行端口 [ ] qjson //QJson是基于Qt的库,可将JSON数据映射到QVariant对象,反之亦然 [ ] quazip //QuaZIP是Gilles Vollant的ZIP/UNZIP软件包的简单C++包装,可用于访问ZIP档案,它使用Qt工具箱 [ ] qwt //Qwt是Qt GUI应用程序框架的图形扩展,它提供了2D绘图小部件等 [ ] tekui //一个轻量、独立、可移植的GUI工具包, 用lua和C开发 [ ] weston //是Wayland服务器的参考实现 [ ] X.org X Window System ---- //支持X11R7的库、服务器、驱动程序和应用程序 [ ] midori //一个轻量级浏览器 [ ] vte //Virtual Terminal Emulator,一个虚拟终端模拟器小部件 [ ] xkeyboard-config //X的键盘配置数据库
2.6.9 Hardware handling
Firmware ---> //固件 [ ] am33x-cm3 //Cortex-M3二进制文件用于在am335x上挂起和恢复 [ ] armbian-firmware //特定用于Armbian的固件 [ ] b43-firmware //b43内核驱动程序支持的Broadcom Wifi设备的固件 [ ] linux-firmware //为LAN,WLAN卡等设备提供了各种二进制固件文件 [ ] rpi-bt-firmware //Raspberry Pi 3和Zero W Broadcom BCM43438蓝牙模块固件 [ ] rpi-firmware //Raspberry Pi引导程序和GPU固件的预编译二进制文件 [ ] rpi-wifi-firmware //Raspberry Pi 3和Zero W Broadcom BCM43430 wifi模块NVRAM数据 [ ] sunxi script.bin board file //专用于linux-sunxi内核的一个已编译的.fex文件来进行硬件描述 [ ] ts4900-fpga //TS-4900的FPGA实现了clocks、UART MUX、GPIO [ ] ux500-firmware //为Azurewave AW-NH580组合模块(wifi、bt、gps)提供了各种二进制文件 [ ] wilc1000-firmware //Atmel Wilc1000无线设备的固件 [ ] wilink-bt-firmware //TI的Wilink7和Wilink8(wl12xx/wl18xx)UART连接的蓝牙固件 [ ] zd1211-firmware //ZyDAS ZD1211/Atheros AR5007UG wifi设备的固件 [ ] a10disp //用于改变运行linux-sunxi内核的Allwinner ARM SOCs显示模式的程序 [ ] acpica //提供独立于操作系统外的高级配置和电源接口规范(ACPI)的参考实现 [ ] acpitool //一个小型、方便的命令行ACPI客户端,具有许多适用于Linux的功能 [ ] aer-inject //允许注入软件层面PCIE AER错误到正在运行的Linux内核 [ ] am335x-pru-package //TI AM335X PRU程序加载器 [ ] avrdude //avrdude是一个多平台的avr系列MCU的下载器 [ ] bcache tools //Bcache是Linux内核块层缓存,将快速的SSD充当慢速的HDD缓存 [ ] brltty //一个守护程序,为盲人提供对Linux控制台的访问 [ ] cbootimage //编译BCT(启动配置表)映像,将其放入Tegra的设备的启动闪存中 [ ] cc-tool //为Linux OS的Texas Instruments CC调试器提供支持 [ ] cdrkit //用于读取CD和DVD,清空CD-RW介质,创建ISO-9660文件系统映像等 [ ] cryptsetup //此工具有助于操纵dm-crypt和luks分区以进行磁盘加密 [ ] cwiid //用C语言编写的用于与Nintendo Wiimote接口的Linux工具 [ ] dhadi-linux //用于将Asterisk与电话硬件接口的开源设备驱动程序框架 [ ] dahdi-tools //用于管理和监视DAHDI设备的程序包 -*- dbus //D-Bus消息总线系统 [ ] dbus-c++ //为D-Bus提供C ++ API [ ] dbus-glib //D-Bus的GLib绑定 [ ] dbus-triggerd //在收到给定的dbus信号后触发shell命令的工具 [*] devmem2 //读/写内存的任何位置数据 [ ] dfu-util //用于将固件下载和上传到通过USB连接的设备 [ ] dmraid //利用Linux内核的Device Mapper机制的磁盘阵列(RAID) [ ] dt-utils //设备树转储和barebox操作的工具 [ ] dtv-scan-tables //数字电视扫描表 [ ] dump1090 //Dump1090是用于RTLSDR设备的简单模式S解码器 [ ] dvb-apps //安装少量的DVB测试和实用程序,包括szap和dvbscan [ ] dvbsnoop //分析、查看、调试传输流(TS)、程序基本流(PES)、程序流(PS) [ ] edid-decode //以人类可读的格式解码EDID数据 -*- eudev //eudev是systemd-udev的一个分支 [*] enable rules generator //启用持久性规则生成 [*] enable hwdb installation //启用将硬件数据库安装到/etc/udev/hwdb.d [ ] evemu //evemu记录并重放设备描述和事件 [ ] evtest //input输入子系统测试工具 [ ] fan-ctrl //一个守护程序,控制CPU风扇的速度 [ ] fconfig //从Linux获取/设置RedBoot配置参数 [ ] fis //从Linux操纵RedBoot分区表 [ ] flashrom //用于识别/读取/写入/验证和擦除闪存芯片的程序 [ ] fmtools //用于功率控制、调谐、音量控制、电台扫描的的fm [ ] Freescale i.MX libraries ---- //为Freescale i.MX平台提供GPU或VPU提供硬件加速和一些硬件工具 [ ] fxload //一个USB自动下载工具 [ ] gadgetfs-test //usb gadgetfs测试程序 [ ] gpm //为虚拟控制台提供鼠标进行复制和粘贴操作 [ ] gpsd ---- //监视串口或USB,获取GPS或AIS模块数据,并可通过TCP端口查询 [ ] gptfdisk //GPT fdisk(由gdisk和sgdisk程序组成)是一种文本模式分区工具 [ ] gvfs //一个用户空间虚拟文件系统,可通过SFTP、SMB等访问远程数据 [ ] hdparm //获取/设置Linux IDE驱动器的硬盘参数 [ ] hwdata //获取各种硬件标识和配置数据 [ ] hwloc //获取系统中层次化的关键计算元素,比如:处理器内核,线程 [ ] i2c-tools //用于Linux的各种I2C工具集,比如总线探测、寄存器访问 [ ] input-event-daemon //对输入事件(例如按键,鼠标按钮和开关)执行用户定义的命令 [ ] iostat //I/O性能监视实用程序 [ ] ipmitool //为启用IPMI的设备提供了简单的命令行界面 [ ] irda-utils //用于控制IrDA栈用户空间程序 [ ] kbd //键表文件和键盘实用程序 [ ] lcdproc //LCD显示驱动程序守护程序和客户端 [ ] libuio //用于处理UIO(用户空间I/O)设备发现和绑定任务 [ ] libump //ARM通用内存提供程序用户空间库,Mali驱动程序所必需的 [ ] linuxconsoletools //将老式串行设备连接到Linux内核输入层的inputattach程序 [ ] linux-backports //许多来自最新内核的Linux驱动程序,反向移植到较旧的内核 [ ] lirc-tools //接收和发送最常见的IR遥控器的IR信号 [ ] lm-sensors //Linux的硬件运行状况监视软件包(温度、电压、风扇速度等) [ ] lshw //Hardware Lister,用于提供有关机器硬件配置的详细信息的工具 [ ] lsscsi //列出SCSI设备(或主机)及其属性 [ ] lsuio //列出可用的用户空间I/O(UIO)设备 [ ] luksmeta //用于将元数据存储在LUKSv1标头中 [ ] lvm2 & device mapper //LVM2(Logical Volume Manager2)是Linux逻辑卷管理器的重写 [*] mali-t76x //为ARM Mali Midgard T76X GPU安装二进制用户空间组件 [ ] mdadm //用于管理Linux软件RAID阵列的程序 [ ] memtester //用于测试内存子系统是否有故障 [ ] memtool //用于修改存储器映射的寄存器(/dev/mem)或字符设备(/dev/fb0) [ ] minicom //一个有菜单界面的串口通信工具 [ ] nanocom //基于microcom的Linux和POSIX系统的轻量级串行终端 [ ] neard //Near Field Communication,NFC管理 [ ] nvme //与标准NVM Express(优化的PCI Express SSD接口)设备的交互程序 [ ] odroid-mali //为基于odroidc2的系统安装ARM Mali驱动程序 [ ] odroid-scripts //为基于odroidc2的系统安装脚本 [ ] ofono //用于移动电话(GSM/UMTS)开源程序,使用D-Bus API,3GPP标准 [ ] open2300 //从Lacrosse WS2300/WS2305/WS2310/WS2315气象站读写数据 [ ] openipmi //允许对设备进行远程监视和远程管理 [ ] openocd //Open On-Chip Debugger,开源片上调试器 *** owl-linux is only supported //用于H&D无线SPB104 SD-card WiFi SIP的Linux内核驱动程序 on ARM9 architecture *** [ ] parted //磁盘分区和分区大小调整工具 [ ] pciutils //处理PCI总线的各种程序,提供诸如setpci和lspci之类的东西 [ ] pdbg //PowerPC FSI调试器,通过FSI对IBM Power8/9 CPU进行低级调试 [ ] picocom //一个极简的串口调试工具 [ ] pifmrds //使用Raspberry Pi的PWM的FM-RDS发送器 [ ] pigpio //用于控制Raspberry Pi通用输入输出(GPIO)的库 [ ] powertop //诊断功耗和电源管理问题的工具 [ ] pps-tools //每秒脉冲(Pulse per second )工具,提供timepps.h和其它PPS程序 [ ] pru-software-support //从TI的PRU软件支持包中提取的PRU固件示例 [ ] read-edid //一对用于从监视器读取EDID的工具 [ ] rng-tools //使用硬件随机数生成器(random number generators)的守护程序 [ ] rpi-userland //包含Raspberry Pi使用VideoCore驱动程序所需的库 [ ] rs485conf //使用的命令行选项显示和修改TTY设备的RS485配置参数 [ ] rtc-tools //用于操纵实时时钟设备 [ ] rtl8188eu //RTL8188EU USB Wi-Fi适配器的独立驱动程序 [ ] rtl8723bs //无线网卡rtl8723bs驱动程序 [ ] rtl8723bu //无线网卡rtl8723bu驱动程序 [ ] rtl8821au //无线网卡rtl8821au驱动程序 [ ] rtl8189fs //无线网卡rtl8189fs驱动程序 [ ] sane-backends //Scanner Access Now Easy,轻松访问扫描仪 [ ] sdparm //访问SCSI设备参数的程序 [ ] setserial //串口配置 [ ] sg3-utils //使用SCSI命令集的设备的程序 [ ] sigrok-cli //Sigrok-cli是sigrok软件套件的命令行前端 [ ] sispmctl //在Linux下使用GEMBIRD SiS-PM和mSiS(sispm)USB控制的电源插座设备 [ ] smartmontools //使用S.M.A.R.T.控制和监视存储系统 [ ] smstools3 //一个SMS网关软件,可以通过GSM调制解调器和手机发送和接收短消息 [ ] spi-tools //包含一些简单的命令行工具,以帮助使用Linux spidev设备 [ ] sredird //一个串行端口重定向器,可以通过网络共享一个串行端口 [ ] statserial //显示标准9针或25针串行端口上的信号表,并指示握手线的状态 [ ] stm32flash //通过UART或I2C为STM32 ARM微控制器提供的开源flash程序 [ ] sunxi-cedarx //CedarX是Allwinner的多媒体协处理技术,用于硬件加速视频和图像解码 [ ] sunxi-mali //为基于sunxi的系统(ARM Allwinner SoC的系统)安装ARM Mali驱动程序 [ ] sysstat //Linux的性能监视工具集合(sar、sadf、mpstat、iostat、pidstat、sa) [ ] targetcli-fb //一个命令行界面,用于配置3.x Linux内核版本中的LIO通用SCSI目标 [ ] ti-gfx //使用SGX加速的TI开发板的图形库,支持AM335x、AM43xx等 [ ] ti-sgx-km //带有SGX GPU的TI CPU的内核模块 *** ti-sgx-um needs the ti-sgx-km driver *** //带有SGX5xx GPU的TI CPU的图形库,支持AM335x,AM437x等 [ ] ti-uim //TI wl12xx连接芯片的用户模式初始化管理器共享传输驱动程序 [ ] ti-utils //基于wl12xx驱动程序的TI无线解决方案的校准器和其它程序 [ ] triggerhappy //一个热键守护程序 [ ] u-boot tools //U-Boot引导程序的配套工具 [ ] ubus //IPC/RPC总线,允许进程之间进行通信,由ubusd、libubus、ubus组成 [ ] uccp420wlan //基于SoftMAC的Imagination Explorer RPU uccp420的WiFi驱动程序 [ ] udisks //提供了一个守护程序、D-Bus API及命令行工具,以管理磁盘/存储设备 [ ] uhubctl //在USB集线器上控制每个端口的USB电源 [ ] upower //用于枚举功率设备,侦听设备事件以及查询历史记录和统计信息 [ ] usb_modeswitch //一种模式切换工具,用于控制具有“多种模式”的USB设备 [ ] usb_modeswitch_data //包含udev规则和事件,以允许usb_modeswitch自动运行 [ ] usbmount //在插入USB大容量存储设备后会自动挂载,拔掉后自动卸载 [ ] usbutils //USB枚举程序 [ ] w_scan //用于对DVB和ATSC传输执行频率扫描 [ ] wf111 //Silicon Labs WF111 WiFi驱动程序和实用程序 [ ] wipe //用于从磁介质安全擦除文件的命令 [ ] xorriso //可创建、加载、处理和写入具有Rock Ridge扩展名的ISO 9660系统映像 [ ] xr819-xradio //SDIO WiFi芯片XR819的无线驱动程序
2.6.10 Interpreter languages and scripting
[ ] 4th //Forth编译器,可将Forth语言转成其他语言的字节码和独立可运行程序 [ ] enscript //将ASCII文件转换为PostScript,HTML或RTF,生成文件或打印 [ ] erlang //Erlang是一种编程语言,主要用于开发并发和分布式系统 [ ] execline //execline是一种(非交互式)脚本语言,类似sh,但语法有很大不同 [ ] ficl //Ficl是一种编程语言解释器,将命令/宏/开发原型语言嵌入到其他系统中 [ ] gauche //Gauche是R7RS计划的实现,作为方便的脚本解释器被开发 [ ] guile //Guile是Scheme编程语言的解释器和编译器,该语言类似Lisp [ ] haserl //Haserl是一个小的cgi包装器,使程序脚本可以嵌入到html文档中 [ ] jamvm //JamVM是新的Java虚拟机,符合JVM规范版本2 [ ] jimtcl //Jim Tcl是Tcl脚本语言的一种小型实现 [ ] lua //Lua是一种功能强大,快速,轻巧,可嵌入的脚本语言 [ ] luajit //LuaJIT实现了Lua 5.1定义的全部语言功能 [ ] micropython //Micro Python是Python 3编程语言的精简和快速实现 [ ] moarvm //专门为Rakudo Perl 6和NQP编译器工具链构建的虚拟机 [ ] mono //C#和与Microsoft.NET二进制兼容的CLR的开源、跨平台实现 [ ] nodejs //基于V8的事件驱动的I/O服务器端JavaScript环境 [ ] perl //Practical Extraction and Report Language,实用报表提取语言 [*] php //PHP是一种广泛使用的通用脚本语言,特别适合于Web开发 [*] CGI interface //Common Gateway Interface,通用网关接口 [*] CLI interface //Command Line Interface,命令行接口 [*] FPM interface //FastCGI Process Manager,FastCGI流程管理器 Extensions ---> //php扩展 [ ] Calendar //日历和活动支持 [ ] Fileinfo //文件信息支持 [ ] OPcache //启用Zend OPcache加速器 [*] Readline //行读取支持 [*] Session //会话支持 *** Compression extensions *** //***压缩扩展* [*] bzip2 //bzip2格式读/写支持 [ ] phar //PHP存档支持 [ ] zip //zip格式读/写支持 [*] zlib //zlib支持 *** Cryptography extensions *** //**密码扩展** [ ] hash //Hash加密算法 [ ] mcrypt //mcrypt加密扩展库支持 [*] openssl //Open Secure Sockets Layer开源安全套接层协议 *** Database extensions *** //**数据库扩展** [ ] DBA //Database Abstraction数据库抽象层 [ ] Mysqli //MySQL改进的扩展支持 [ ] SQLite3 //SQLite3支持 [ ] PDO //PHP数据对象支持 *** Human language and character //**人类语言和字符编码支持** encoding support *** [ ] Gettext //文本获取支持 [ ] iconv //iconv字符集转换支持 [ ] intl //国际化支持 [ ] mbstring //多字节字符串支持 *** Image processing *** //**图像处理** [ ] EXIF //记录数码照片的属性信息和拍摄数据 [ ] GD //GD库,用于图像处理,制作验证码、缩略图、水印图等 *** Mathematical extensions *** //**数学扩展** [ ] BC math //BCMath任意精度数学支持 [ ] GMP //GNU多精度支持 *** Other basic extensions *** //**其它基本扩展** [*] JSON //JavaScript对象序列化支持 [ ] Tokenizer //令牌生成器功能支持 *** Other services *** //**其它服务** [ ] cURL //URL流的cURL [ ] FTP //FTP支持 [ ] SNMP //SNMP支持 [ ] sockets //Sockets支持 *** Process Control *** //**过程控制** [ ] PCNTL //Process control,过程控制支持 [*] Posix //POSIX.1(IEEE 1003.1)功能支持 [ ] shmop //共享内存支持 [ ] sysvmsg //System V消息队列支持 [ ] sysvsem //System V信号灯支持 [ ] sysvshm //System V共享内存支持 *** Variable and Type related *** //**变量和类型相关** [ ] Ctype //字符类型检查支持 [ ] Filter //输入过滤支持 *** Web services *** //**网页服务** [ ] SOAP //SOAP支持 [ ] XML-RPC //XML-RPC支持 *** XML manipulation *** //**XML操作** [ ] DOM //文档对象模型支持 [ ] libxml //libxml2支持 [ ] SimpleXML //SimpleXML支持 [ ] WDDX //WDDX支持 [ ] XML Parser //XML解析支持 [ ] XMLReader //XML读支持 [ ] XMLWriter //XML写支持 [ ] XSL //XSL转换支持 External php extensions ---> //外部php扩展 [ ] php-amqp //与任何符合AMQP的服务器通信 [ ] php-geoip //基于PHP GeoIP的IP地址映射到地理位置 [ ] php-gnupg //PHP扩展的gpgme库,开源的非对称信息加密系统 [ ] php-imagick //PHP扩展的ImageMagick库,用于读、写和处理主流图片文件 [ ] php-memcached //用于通过libmemcached库与memcached接口 [ ] php-ssh2 //libssh2库的PHP绑定 [ ] php-yaml //PHP YAML-1.1解析和生成 [ ] php-zmq //PHP的ZeroMQ消息传递绑定 -*- python //python相关 python module format to install (.pyc compiled sources only) ---> //python模块安装格式(.pyc仅编译源) core python modules ---> //核心python模块 *** The following modules are unusual or require extra libraries *** //**以下模块特殊或需要额外的库** [ ] bzip2 module //适用于Python的bzip2模块 [ ] bsddb module //适用于Python的bsddb模块 [ ] codecscjk module //适用于Python的中文/日文/韩文编解码器模块 [ ] curses module //Python的curses模块 [ ] ossaudiodev module //适用于Python的ossaudiodev模块 [ ] readline //Python的readline模块(在Python Shell中进行命令行编辑时需要) [ ] ssl //适用于Python的_ssl模块(urllib等中的https必需) [*] unicodedata module //Unicode字符数据库(由stringprep模块使用) Python unicode database format //Python unicode数据库格式(通用字符集2字节UCS2) (Universal Character Set 2-byte (UCS2)) ---> [ ] sqlite module //SQLite数据库支持 [ ] xml module //Python的pyexpat和xml库 [ ] zlib module //Python中的zlib支持 [ ] hashlib module //Python中的hashlib支持 External python modules ---> //外部python扩展 [ ] python-alsaaudio //包含ALSA声卡的API [ ] python-argh //Argh是argparse的智能包装器,argparse是一个命令行参数解析模块 [ ] python-arrow //更适用Python的日期和时间 [ ] python-asn1crypto //用于解析和序列化ASN.1结构 [ ] python-attrs //摆脱实现对象协议的繁琐工作,感受编写类的乐趣 [ ] python-autobahn //WebSocket客户端Hhh服务器库,WAMP实时框架 [ ] python-automat //用于Python有限状态机(特别是确定性有限状态机)表达 [ ] python-babel //一系列国际化Python应用程序的工具 [ ] python-backports-abc //对“collections.abc”模块的最新添加的反向移植 [ ] python-backports-shutil- //get_terminal_size函数的反向移植 get-terminal-size [ ] python-bcrypt //跨平台文件加密工具 [ ] python-beautifulsoup4 //用于从HTML和XML文件中提取数据 [ ] python-bitstring //二进制数据的简单构造,分析和修改 [ ] python-bottle //快速,简单且轻量级的WSGI微型Web框架 [ ] python-can //为Python提供控制器区域网络支持 [ ] python-cbor //RFC 7049-简洁的二进制对象表示 [ ] python-certifi //用于提供Mozilla的CA Bundle的Python软件包 [ ] python-cffi //Python调用C代码的外函数接口 [ ] python-characteristic //没有样板的Python属性 [ ] python-chardet //适用于Python 2和3的通用编码检测器 [ ] python-cheetah //一个开源模板引擎和代码生成工具 [ ] python-cheroot //Cheroot是源自CherryPy的纯Python的高性能HTTP服务器 [ ] python-cherrypy //简约的Web框架 [ ] python-click //提供功能强大的命令行实用程序 [ ] python-coherence //用于数字生活的DLNA/UPnP媒体服务器和框架 [ ] python-configobj //一个简单但功能强大的配置文件(ini格式)读/写软件 [ ] python-configshell-fb //提供了一个框架来构建基于CLI的应用程序 [ ] python-constantly //提供符号常量支持的库 [ ] python-couchdb //用于CouchDB的Python客户端库 [ ] python-crc16 //用于CRC16校验的库 [ ] python-crcmod //用于生成计算循环冗余校验(CRC)的对象 [ ] python-crossbar //一个开源的WAMP应用路由器 [ ] python-cryptography //一个旨在向Python开发人员公开密码基元和配方的软件包 [ ] python-cssselect //解析CSS3选择器并将其转换为XPath 1.0 [ ] python-cssutils //用于Python的CSS级联样式表库 [ ] python-daemon //生成规范的Unix守护进程 [ ] python-dataproperty //用于从数据提取属性的Python库 [ ] python-dateutil //标准Python日期时间模块的扩展 [ ] python-decorator //实现装饰器更好地使用Python [ ] python-dialog //UNIX对话框程序和大多数兼容程序的Python接口 [ ] python-dicttoxml //将Python字典或其它本机数据类型转换为有效的XML字符串 [ ] python-django //一个高级Python Web框架 [ ] python-docopt //轻松创建漂亮的命令行界面 [ ] python-docutils //用于将文档处理为有用的格式,比如HTML、XML、LaTeX [ ] python-dominate //用于使用DOM API创建和处理HTML文档 [ ] python-dpkt //快速、简单的数据包创建/解析,带有基本TCP/IP协议的定义 [ ] python-ecdsa //ECDSA加密签名库 [ ] python-engineio //Engine.IO服务器 [ ] python-enum //Python中强大的枚举类型 [ ] python-enum34 //Python 3.4枚举反向移植到2.x [ ] python-flask //Flask是基于Werkzeug,Jinja 2的Python微框架 [ ] python-flask-cors //Flask扩展添加了一个装饰器以支持CORS [ ] python-flask-babel //Flask-Babel是Flask的扩展 [ ] python-flask-jsonrpc //支持Flask网站的基本JSON-RPC实现 [ ] python-flask-login //Flask-Login提供Flask的用户会话管理 [ ] python-flup //提供适用于Python的WSGI模块集合 [ ] python-futures //从Python 3.2反向移植concurrent.futures包 [ ] python-gobject //GLib/GObject库的Python绑定 [ ] python-gunicorn //用于UNIX的Python WSGI HTTP服务器 [ ] python-h2 //基于HTTP/2状态机的协议实现 [ ] python-hpack //Python HPACK标头压缩 [ ] python-html5lib //基于WHATWG HTML规范的HTML解析器 [ ] python-httplib2 //一个全面的HTTP客户端库 [ ] python-humanize //将数据转化为对应方便人类阅读的库 [ ] python-hyperframe //适用于Python的HTTP/2框架层 [ ] python-hyperlink //Python功能齐全,准确的URL [ ] python-ibmiotf //适用于IBM Watson IoT Platform的Python客户端 [ ] python-id3 //通过界面读取和操作MP3文件的ID3信息标签 [ ] python-idna //指定的程序中国际化域名(IDNA)协议的库 [ ] python-incremental //用于对Python项目进行版本控制的库 [ ] python-iniparse //适用于Python的INI解析器,与标准库的ConfigParser API兼容 [ ] python-iowait //与平台无关的模块,用于I / O完成事件 [ ] python-ipaddr //Python中的IPv4/IPv6操作库 [ ] python-ipaddress //适用于旧版Python的Python 3.3的IP地址 [ ] python-ipy //用于处理IPv4和IPv6地址和网络的类和工具 [ ] python-ipython //用于多种编程语言的交互式计算的命令外壳 [ ] python-ipython-genutils //IPython残余实用程序 [ ] python-iso8601 //解析ISO 8601日期的简单模块 [ ] python-itsdangerous //可将数据传递到不受信任的环境并安全可靠地恢复数据 [ ] python-jaraco-classes //Python类构造的程序函数 [ ] python-jinja2 //用纯Python编写的模板引擎 [ ] python-jsonschema //适用于Python的JSON模式验证的实现 [ ] python-json-schema-validator //JSON模式验证器 [ ] python-keyring //提供了一种从Python访问系统密钥环服务的简便方法 [ ] python-libconfig //Libconfig是用于处理结构化配置文件的简单库 [ ] python-lmdb //读写LMDB数据库,Lightning Memory-Mapped Database [ ] python-logbook //Python的日志记录替代 [ ] python-lxml //支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高 [ ] python-m2r //Markdown到reStructuredText转换器 [ ] python-mad //MAD库是一个高质量的MPEG解码器 [ ] python-mako //mako模板,有比Jinja2更快的解析速度和更多的语法支持 [ ] python-markdown //Markdown的Python实现 [ ] python-markdown2 //Markdown的快速,完整的Python实现 [ ] python-markupsafe //为Python实现XML/HTML/XHTML Markup安全字符串 [ ] python-mbstrdecoder //多字节字符串解码器 [ ] python-meld3 //HTML/XML模板系统 [ ] python-mistune //最快的Markdown解析器,具有渲染器功能 [ ] python-more-itertools //除itertools之外,还有更多的可迭代操作例程 [ ] python-msgpack //用于读取和写入MessagePack数据 [ ] python-mutagen //处理音频元数据的Python模块 [ ] python-mwclient //MediaWiki API客户端 [ ] python-mwscrape //将呈现的文章从MediaWiki API下载到CouchDB [ ] python-netaddr //用于Python的网络地址处理库 [ ] python-netifaces //从Python可移植地访问网络接口 [ ] python-nfc //用于近场通信的Python模块 [ ] python-numpy //使用Python进行科学计算的基本软件包 [ ] python-oauthlib //OAuth请求签名逻辑的通用、符合规范的全面实现 [ ] python-paho-mqtt //为客户端类提供了对MQTT v3.1和v3.1.1的支持 [ ] python-pam //Pluggable Authentication Module,可插拔认证模块 [ ] python-paramiko //SSH2协议库 [ ] python-pathlib2 //面向对象的文件系统路径 [ ] python-pathpy //将路径对象实现为一实体,可调用路径对象上对文件操作 [ ] python-pathtools //文件系统通用程序 [ ] python-pathvalidate //用于验证/清除字符串,如filename/variable-name [ ] python-pexpect //允许脚本生成子应用程序并对其进行控制 [ ] python-pickleshare //带有并发支持的微型“搁置式”数据库 [ ] python-pillow //一个很流行的图像处理库 [ ] python-portend //TCP端口监视实用程序 [ ] python-posix-ipc //访问POSIX进程间信号,共享内存和消息队列 [ ] python-priority //HTTP/2优先级树的Python实现 [ ] python-prompt-toolkit //用于在Python中构建功能强大的交互式命令行的库 [ ] python-protobuf //Google协议缓冲区的Python实现 [ ] python-psutil //用于获取Python中正在运行的进程和系统利用率信息 [ ] python-psycopg2 //用来操作postgreSQL数据库的第三方库 [ ] python-ptyprocess //用在伪终端(pty)中启动子流程,并与流程及其pty进行交互 [ ] python-pudb //一个全屏、基于控制台的Python调试器 [ ] python-pyasn //能够非常快速的IP地址查找 [ ] python-pyasn-modules //基于ASN.1的协议模块的集合 [ ] python-pycli //用于在Python中制作简单、准确的命令行应用程序框架 [ ] python-pycparser //Python中的C解析器 [ ] python-pycrypto //PyCrypto是密码算法和协议的集合 [ ] python-pydal //数据库抽象层,使用指定的方式为数据库后端实时动态生成SQL [ ] python-pyelftools //用于解析和分析ELF文件和DWARF调试信息 [ ] python-pyftpdlib //极其快速且可扩展的Python FTP服务器库 [ ] python-pygame //简化使用Python编写游戏等多媒体软件的过程 [ ] python-pygments //Pygments是用Python编写的语法高亮包 [ ] python-pyicu //包装ICU C ++ API的Python扩展 [ ] python-pyinotify //在Linux上使用inotify监视文件系统事件 [ ] python-pylibftdi //包含python语言绑定libftdi [ ] python-pylru //least recently used(LRU)缓存的实现 [ ] python-pymysql //一个纯Python MySQL客户端库,它遵循DB-API 2.0 [ ] python-pynacl //Python绑定到网络和密码学(NaCl)库 [ ] python-pyopenssl //OpenSSL库相关的Python包装器模块 [ ] python-pyparsing //客户端代码使用提供的类库直接在Python代码中构造语法 [ ] python-pyparted //可以编写与磁盘分区表和文件系统交互的应用程序 [ ] python-pypcap //pypcap模块是C libpcap库的面向对象包装 [ ] python-pyqrcode //QR代码生成器,带有SVG,EPS,PNG和终端输出 [ ] python-pyqt5 //Qt 5的Python绑定 [ ] python-pyratemp //用于执行html模板的Python库 [ ] python-pyro //一个Python库,表示PYthon远程对象 [ ] python-pyroute2 //Python Netlink库-Linux网络/netns/无线/ipset配置 [ ] python-pysendfile //用于sendfile(2)系统调用的Python接口 [ ] python-pysmb //Python编写的实验性SMB/CIFS库 [ ] python-pysnmp //SNMP引擎实现 [ ] python-pysnmp-apps //用于SNMP管理的命令行工具集合 [ ] python-pysnmp-mibs //预编译和打包的IETF和IANA MIB,以简化与PySNMP库的使用 [ ] python-pysocks //Python SOCKS客户端模块 [ ] python-pytablereader //用于从文件/URL加载具有各种数据格式的结构化表数据 [ ] python-pytablewriter //用于以各种格式编写表:CSV、HTML、JSON、Excel等 [ ] python-pytrie //trie数据结构的纯Python实现 [ ] python-pytz //世界时区定义 [ ] python-pyudev //Python绑定到libudev(Linux的设备和硬件管理以及信息库) [ ] python-pyusb //从Python访问通用串行总线(USB) [ ] python-pyxb //为与XMLSchema定义的数据结构相对应的类生成Python代码 [ ] python-pyyaml //包含与libyaml API的绑定 [ ] python-pyzmq //用于zeromq的python语言绑定 [ ] python-raven //Raven是Sentry(https://getsentry.com)的客户端 [ ] python-remi //GUI库,将应用程序的界面转换为HTML,以在Web浏览器中呈现 [ ] python-requests //Apache2许可的HTTP库 [ ] python-requests-oauthlib //OAuthlib身份验证对请求的支持 [ ] python-requests-toolbelt //python-requests的高级用户工具 [ ] python-rpi-gpio //用于控制Raspberry Pi上的GPIO [ ] python-rtslib-fb //用于配置LIO通用SCSI目标的基于对象的Python库 [ ] python-scandir //一个更好、更快的目录迭代器 [ ] python-schedule //使用简单、人性化的语法按预定的时间间隔定期运行Python函数 [ ] python-sdnotify //systemd服务通知协议(sd_notify)的纯Python实现 [ ] python-secretstorage //Python与FreeDesktop.org Secret Service API的绑定 [ ] python-see //dir()的人性化替代 [ ] python-serial //用于访问串行端口的Python库 [ ] python-service-identity //pyOpenSSL的服务身份验证 [ ] python-setproctitle //用于自定义流程标题的Python模块 [ ] python-setuptools //下载、构建、安装、升级和卸载Python软件包 [ ] python-sh //Python子进程替换,可以像调用一个程序一样调用任何程序 [ ] python-shutilwhich //Python 3.3的shutil.which函数的复制和粘贴反向移植 [ ] python-simplegeneric //简单的通用函数(类似于Python自己的len()、pickle.dump()等) [ ] python-simplejson //简单、快速、可扩展的JSON编码器/解码器 [ ] python-simplesqlite //用于简化SQLite数据库操作:表创建,数据插入和获取数据等 [ ] python-singledispatch //把整体方案拆分成,多个小的模块 [ ] python-six //提供了一些程序函数,用于消除Python2/3版本之间的差异 [ ] python-smbus-cffi //允许SMBus通过Linux主机上的I2C/dev接口进行访问 [ ] python-socketio //Socket.IO服务器 [ ] python-sortedcontainers //Python排序容器类型:SortedList,SortedDict和SortedSet [ ] python-spidev //用于通过spidev内核驱动程序从用户空间与SPI设备进行接口 [ ] python-systemd //用于本地访问systemd设备的Python模块 [ ] python-tabledata //用于表示pytablewriter/pytablereader/SimpleSQLite的表格数据 [ ] python-tempora //与日期和时间有关的对象和例程 [ ] python-typepy //在运行时用于变量类型检查器/验证器/转换器的Python库 [ ] python-thrift //Apache Thrift RPC系统的Python绑定 [ ] python-tomako //将Mako用作Tornado的模板引擎的最简单方法 [ ] python-toml //一个解析toml编写的包 [ ] python-tornado //一个Python Web框架和异步网络库 [ ] python-traitlets //用于Python应用程序的配置系统 [ ] python-treq //用于在使用Twisted时发出HTTP请求 [ ] python-twisted //一个用Python编写的事件驱动的网络引擎 [ ] python-txaio //asyncio/Twisted/Trollius之间的兼容性API [ ] python-txtorcon //基于Twisted的Tor控制器客户端,具有状态跟踪和配置抽象 [ ] python-u-msgpack //轻量级MessagePack序列化器和反序列化器 [ ] python-ubjson //通用二进制JSON编码器/解码器 [ ] python-ujson //UltraJSON是用纯C语言编写的超快速JSON编码器/解码器 [ ] python-urllib3 //具有线程安全连接池、文件发布支持、健全性等功能的Python HTTP库 [ ] python-urwid //Urwid是Python的控制台用户界面库 [ ] python-versiontools //__version__中使用的普通元组的智能替换 [ ] python-watchdog //Python API和Shell程序,用于监视文件系统事件 [ ] python-wcwidth //可测量宽字符代码的终端列单元格的数量 [ ] python-web2py //全功能Web应用框架,用于开发快速、安全以及可移植Web应用 [ ] python-webpy //适用于Python的Web框架,功能强大而又简单 [ ] python-werkzeug //适用于Python的WSGI实用程序库 [ ] python-whoosh //一个快速的纯Python全文索引,搜索和拼写检查库 [ ] python-ws4py //实现了RFC 6455中定义的WebSocket协议 [ ] python-wsaccel //ws4py和AutobahnPython的加速器 [ ] python-xlib //Python X库旨在成为Python程序的全功能X客户端库 [ ] python-xlrd //供开发人员从Microsoft Excel(tm)电子表格文件中提取数据的库 [ ] python-xlsxwriter //用于创建Excel XLSX文件的Python模块 [ ] python-xlutils //用于同时需要xlrd和xlwt的Excel文件的实用程序 [ ] python-xlwt //创建与MS Excel 97/2000/XP/2003 XLS文件兼容的电子表格文件的库 [ ] python-xmltodict //xmltodict是另一个简易的库,它致力于将XML变得像JSON [ ] python-zope-interface //提供了面向对象编程语言中的接口(interface)实现 [ ] ruby //面向对象的脚本语言 [ ] tcl //Tool Command Language,一种简单的文本语言
2.6.11 Libraries(待完善)
Audio/Sound ---> //**音频&声卡** -*- alsa-lib ---> //Advanced Linux Sound Architecture(ALSA),提供音频和MIDI功能 [ ] aubio //一种用于从音频信号中提取属性信息的工具 [ ] audiofile //读写许多常见格式的音频文件 [ ] bcg729 //ITU G729 Annex A/B语音编解码器的编码器和解码器的开源实现 [ ] celt051 //CELT格式的超低延迟音频编解码器 [ ] fdk-aac //为数字音频实现MPEG高级音频编码(AAC)编码和解码方案的软件 [ ] libao //跨平台的音频库,允许程序在各种平台上使用简单的API输出音频 [ ] libasplib //Achim的信号处理库,用于数字信号处理 [ ] libbroadvoice //16和32语音编解码器的库 [ ] libcdaudio //提供在播放音频CD时控制CD-ROM操作的功能 [ ] libcddb //用于访问CDDB服务器(freedb.org)上的数据 [ ] libcdio //GNU CD输入和控制库 [ ] libcdio-paranoia //带有纠错功能的CD输入和控制库 [ ] libcodec2 //低比特率语音编解码器(700到3200bit/s之间) [ ] libcue //CUE工作表解析器库 [ ] libcuefile //Musepack的提示文件库 [ ] libebur128 //用于实现响度标准化的EBU R 128标准 [ ] libg7221 //ITU G.722.1和Annex C宽带语音编解码器的库 [ ] libgsm //GSM 06.10有损语音压缩的共享库 [ ] libid3tag //MAD项目中的ID3标签阅读库 [ ] libilbc //internet Low Bitrate Codec(iLBC)免费的语音编解码器 [ ] liblo //POSIX系统的开放声音控制协议的实现 [ ] libmad //高品质的MPEG音频解码器,适合没有浮点单元的系统 [ ] libmodplug //MOD音乐文件解码器 [ ] libmpd //用于访问Music Player守护程序的高级客户端库 [ ] libmpdclient //提供用于连接Music Player Daemon (MPD)的API [ ] libreplaygain //重播增益库 [ ] libsamplerate //计算音频的响度,并根据ReplayGain标准建议dB调整 [ ] libsidplay2 //能播放所有C64单声道和立体声文件格式 [ ] libsilk //一种音频压缩格式和音频编解码器 [ ] libsndfile //用于通过标准库接口读取和写入包含采样声音文件的C库 [ ] libsoundtouch //用于更改音频流或音频文件的速度,音调和播放速率的音频处理库 [ ] libsoxr //用于快速,高质量的一维采样率转换 [ ] libvorbis //Vorbis开源音频解码器Ogg Vorbis的库 [ ] mp4v2 //MP4v2库提供了读取,创建和修改mp4文件的功能 [ ] openal //提供在虚拟3D环境中播放音频的功能 [ ] opencore-amr //自适应多速率窄带和宽带(AMR-NB和AMR-WB)语音编解码器的实现库 [ ] opus //旨在通过Internet进行交互式语音和音频传输 [ ] opusfile //用于解码和基本处理所有Ogg Opus音频流 [ ] portaudio //一个免费的,跨平台的开源音频I/O库 [ ] sbc //音频编解码器,用于连接蓝牙高质量音频设备,例如耳机或扬声器 [ ] spandsp //许多用于电话的DSP功能的库 [ ] speex //Speex是一种开放源代码/免费软件,专为语音设计的音频压缩格式 [ ] speexdsp //Speex的DSP库 [ ] taglib //一个用于读取和编辑几种流行音频格式的元数据的库 [ ] tinyalsa //一个可与Linux内核中的ALSA接口交互的库 [ ] tremor (fixed point vorbis decoder) //Tremor是Ogg Vorbis解码器的定点实现。 [ ] vo-aacenc //包含Advanced Audio Coding(AAC)音频编解码器的编码器实现 [ ] webrtc-audio-processing //基于Google的WebRTC实现的AudioProcessing库 Compression and decompression ---> //**压缩和解压缩** [ ] libarchive //用于读取和写入各种流存档格式 [ ] libsquish //使用DXT标准(也称为S3TC)压缩图像 [ ] libzip //用于读取,创建和修改zip存档 -*- lzo //用ANSI C编写的可移植无损数据压缩库 [ ] minizip //用于解压zip文件 [ ] snappy //一个高速、兼容性强的压缩/解压缩库 [ ] szip //Szip是Extended-Rice无损压缩算法的实现 -*- zlib support //选择所需的Zlib库提供程序 zlib variant (zlib) ---> //zlib:标准(解压缩)库 | zlib-ng:zlib的改进版 Crypto ---> //**加密** [ ] beecrypt //一个通用的加密库 [ ] botan //C ++的加密库 [ ] CA Certificates //包括CA证书的PEM文件,以允许基于SSL的程序检查SSL连接的真实性 [ ] cryptodev //选择所需的cryptodev实现 [ ] gcr //用于加密UI和访问PKCS#11模块的库 [ ] gnutls //一个安全的通信库,用于实现SSL和TLS协议及其周围的技术 [ ] libassuan //实现Assuan协议,用于大多数较新的GnuPG组件之间的IPC [ ] libgcrypt //LibGCrypt是GNU的基本密码库 [ ] libgpg-error //一个小型库,包含大多数GnuPG相关软件共享的错误代码和描述 [ ] libgpgme //GnuPG Made Easy(GPGME)是一个库,旨在简化应用对GnuPG的访问 [ ] libkcapi //Linux内核Crypto API用户空间接口库 [ ] libksba //CMS和X.509库 [ ] libmcrypt //一个提供统一接口以访问多种加密算法的库 [ ] libmhash //为哈希算法提供统一的接口的免费库 [ ] libnss //Network Security Services(NSS),用于安全的客户端和服务器应用开发 [ ] libscrypt //一个实现安全密码哈希功能“scrypt”的库 [ ] libsecret //用于存储和检索密码和其他机密的库 [ ] libsha1 //一个提供SHA1实现的微型库 [ ] libsodium //一个现代且易于使用的加密库 [ ] libssh //在客户端和服务器端实现SSHv2和SSHv1协议 [ ] libssh2 //实现Internet草案定义的SSH2协议的客户端C库 [ ] libtomcrypt //一个相当全面的模块化便携式密码工具 [ ] libuecc //很小的椭圆曲线密码库 [ ] mbedtls //提供在(嵌入式)产品中包含加密和SSL/TLS功能 [ ] nettle //一个低级别的密码库 -*- openssl support //选择所需的SSL库提供程序 ssl library (openssl) --->//选择OpenSSL或LibreSSL openssl //实现安全套接字层(SSL v2/v3)和传输安全性(TLS v1)以及功能全面的通用加密库 [ ] openssl binary //将openssl二进制文件和关联的帮助程序脚本安装到目标文件系统 [ ] openssl additional engines //安装其他加密引擎库 [ ] rhash //用于计算各种哈希和,例如CRC32,MD4,MD5,SHA1,SHA256,SHA512等 [ ] tinydtls //用于数据报传输层安全性(DTLS)的库,涵盖客户端和服务器状态机 [ ] tpm2-tss //Trusted Computing Group's(TCG)和TPM2 Software Stack(TSS)的OSS实现 [ ] trousers //TCG Software Stack(TSS),用于符合TPM规范1.2版的受信任平台模块 [ ] ustream-ssl //ustream SSL包装器 [ ] wolfssl //一种轻量级,可移植,基于C语言的SSL/TLS库 Database ---> //**数据库** [ ] berkeleydb //伯克利数据库,一个非常常见的数据库应用程序库 [ ] cppdb //一个SQL连接库,旨在提供与平台和数据库无关的连接API,类似于JDBC,ODBC [ ] gdbm //一组使用可扩展哈希的数据库例程 [ ] hiredis //一个轻量级的访问redis数据库的c客户端 [ ] kompexsqlite //SQLite的开源C++包装器库 [ ] leveldb //Google编写的快速键值存储库,提供了从字符串键到字符串值的有序映射 [ ] libgit2 //是Git核心方法的可移植的纯C实现,用于将Git功能构建到应用程序中 [ ] mongodb //一个跨平台的面向文档的数据库(NoSQL) -*- mysql support //选择所需的mysql提供程序 mysql variant (oracle mysql) ---> //选择oracle mysql服务器或mariadb服务器 [ ] oracle mysql server //在目标服务器上安装MySQL服务器 [ ] postgresql //一个功能强大的开源对象关系数据库系统 [ ] redis //一个开源的高级键值存储,也被称为数据结构服务器 *** sqlcipher conflicts with sqlite *** //***sqlcipher与sqlite冲突*** -*- sqlite //SQLite是一个小型C库,实现了独立的,可嵌入的,零配置的SQL数据库引擎 [ ] Additional query optimizations (stat3) //向ANALYZE命令和查询计划程序添加其它逻辑 [ ] Enable convenient access to meta-data about tables and queries //启用其他API来访问有关表和查询的元数据 [ ] Enable version 3 of the full-text search engine //全文搜索引擎v3添加到构建中 [ ] Enable the JSON extensions for SQLite //SON扩展添加到构建中 [ ] Enable sqlite3_unlock_notify() interface //启用sqlite3_unlock_notify()接口及其附带的功能 [ ] Set the secure_delete pragma on by default //更改secure_delete编译指示的默认设置 [ ] Disable fsync //关闭fsync()强制数据库立即存储,牺牲掉电以提高性能 [ ] unixodbc //unixODBC Project的目标是开发和推广unixODBC,使其成为非Windows平台的ODBC标准 Filesystem ---> //**文件系统** [ ] gamin //文件变更监视器 -*- libconfig //用于处理结构化配置文件的简单库 -*- libconfuse //用C编写的配置文件解析器库 -*- libfuse //FUSE (Filesystem in UserSpacE) [ ] liblockfile //NFS安全锁定库 [ ] libnfs //NFS用户空间实现 [ ] libsysfs //一组基于sysfs的实用程序 [ ] lockdev //用于锁定设备的库 [ ] physfs //PhysicsFS,便携、灵活的文件I/O抽象 Graphics ---> //**图形** [ ] assimp //Open Asset Import Library(assimp)导入各种3D格式以统一,作为通用的3D模型转换器 [ ] at-spi2-atk //包含将ATK桥接搭配At-spi2 Dbus服务的库 [ ] at-spi2-core //是GNOME辅助功能项目的一部分 [ ] atk //提供了一套由其他工具集和应用程序实现的辅助功能接口 [ ] atkmm //ATK的C++绑定 [ ] bullet //碰撞检测和刚体动力学库 [ ] cairo //一个2D图形库与多输出设备的支持 [ ] cairomm //cairo的C++绑定 [ ] chipmunk //一个简单、轻便、快速、便携的2D刚体物理C语言编写的库 [ ] exiv2 //一个C++库和命令行程序来管理、读写图像(Exif,IPTC和XMP)的元数据 [ ] exempi //XMP(Extensible Metadata Platform)可扩展元数据平台的实现 [ ] fontconfig //配置和定制字体访问的库 [ ] freetype //一个自由、高品质和便携的字体引擎。 [*] gd ---> //一个图形库,允许代码快速绘制直线、圆弧、文字、剪裁图片,结果将保存为PNG文件 [ ] gdk-pixbuf //图像加载器和定标器 -*- giflib //一个库,用于读取和写入GIF图像 [ ] granite //个扩展GTK+提供了一些有用的小工具和类便于应用开发 [ ] graphite2 //提供复杂的书写系统的跨平台的渲染 [ ] gtkmm3 //GTK 3的C++绑定 [ ] harfbuzz //一个OpenType字体文本整形引擎 [ ] ijs //用于实现光栅的页面图像的传输的协议的库 [ ] imlib2 //提供程序加载,保存并以各种格式的图像 [ ] irrlicht //一个开源的高性能实时3D图形引擎 [ ] jasper //JPEG-2000解码器 -*- jpeg support //选择所需的JPEG库类型 jpeg variant (jpeg-turbo) ---> //JPEG变种(jpeg或jpeg-turbo) [ ] kms++ //一个C++11库内核模式设置。此外,还包括简单的测试工具KMS [ ] lcms2 //Little Color Management Software(CMS)一个色彩管理引擎,特别注重精度和性能 [ ] lensfun //纠正一些文物和用于存储镜头配置文件数据库的库 [ ] leptonica //图像处理和图像分析库 [ ] libart //高性能的2D图形库 [ ] libdmtx //读取和写入的现代ECC200各种数据矩阵条码 -*- libdrm ---> //Direct Rendering Manager(直接渲染管理) -*- radeon //安装AMD/ATI显卡驱动 [ ] amdgpu //安装AMD GPU驱动程序 -*- nouveau //安装NVIDIA显卡驱动程序 [ ] omap (experimental) //安装TI OMAP驱动程序的API(实验用) -*- etnaviv (experimental) //安装Etnaviv/Vivante驱动程序的API(实验用) [ ] exynos (experimental) //安装Samsung Exynos驱动程序的API(实验用) [ ] freedreno //安装Qualcomm Snapdragon驱动程序 [ ] tegra (experimental) //安装NVIDIA Tegra驱动程序的API(实验用) -*- vc4 //安装VC4(Raspberry Pi)驱动程序 [ ] Install test programs //安装libdrm测试程序 [ ] libepoxy //处理的OpenGL函数指针管理的库 [ ] libexif //允许解析EXIF文件,并从这些标签读取数据。 [ ] libfm //一个基于glib/gio的库,提供一些文件管理程序和gtk+/glib中缺少的相关小部件 [ ] libfm-extra //libfm扩展包包括一个库和通过菜单缓存获取所需的其他文件 [ ] libfreeglut //一个替代OpenGL的实用工具包(GLUT)库 [ ] libfreeimage //支持流行的图形图像格式(PNG、BMP、JPEG、TIFF)的开源库 [ ] libgeotiff //一个开源库读、写GeoTIFF的信息标签 [ ] libglew //OpenGL Extension Wrangler Library(GLEW)一个跨平台的C/C ++扩展加载库 [ ] libglfw //OpenGL的上下文创建窗口和接收输入事件的一个开源多平台库 [ ] libglu //Mesa OpenGL实用库 [ ] libgta //一种便携式库,实现了Generic Tagged Array(GTA)通用标记阵列的文件格式 [ ] libgtk3 //GTK+3的图形用户界面库 [ ] libmediaart //负责管理、提取和处理媒体缓存 [ ] libmng //参考库读取、显示、撰写和检查多图像网络图形 -*- libpng //处理(Portable Network Graphics)PNG可移植网络图形的库 [ ] libqrencode //用于在QR码符号数据进行编码一个C库 [ ] libraw //一个原始图像处理库 [ ] librsvg //Scalable Vector Graphics(SVG)可伸缩矢量图形的渲染库 [ ] libsoil //用于上传纹理到OpenGL的一个微小的C库 [ ] libsvg //文件或缓冲区的SVG内容解析器,没有做任何渲染,而是提供基于函数的接口 [ ] libsvg-cairo //提供呈现来自文件或缓冲区SVG内容的功能 [ ] libsvgtiny //SVG的微型实现 [ ] libva //Video Acceleration(VA)视频加速API [ ] libvips //2D图像处理库 [ ] menu-cache //小型库用于应用程序菜单集成 [ ] opencv-2.4 ---- //Open Source Computer Vision(OpenCV)一种用于实时计算机视觉编程的库 [*] opencv3 ---> //OpenCV开源计算机视觉 *** OpenCV modules *** //***OpenCV模块*** [ ] calib3d //opencv_calib3d(相机校准和3D重建)模块 [ ] features2d //opencv_features2d(2D特征框架)模块 [ ] flann //opencv_flann(聚类和多维空间搜索)模块 [ ] highgui //opencv_highgui(高级GUI和媒体I/O)模块 [ ] imgcodecs //opencv_imgcodecs(图像编解码器)模块 [ ] imgproc //opencv_imgproc(图像处理)模块 [ ] ml //opencv_ml(机器学习)模块 [ ] objdetect //opencv_objdetect(对象检测)模块 [ ] photo //opencv_photo(计算摄影)模块 [ ] shape //opencv_shape(形状描述和匹配)模块 [ ] stitching //opencv_stitching(图像拼接)模块 [ ] superres //opencv_superres(超大分辨率)模块 [ ] ts //opencv_ts(测试)模块 [ ] videoio //opencv_videoio(媒体I/O)模块 [ ] video //pencv_video(视频分析)模块 [ ] videostab //opencv_videostab(视频稳定)模块 *** Test sets *** //***测试设置*** [ ] build tests //构建测试 [ ] build performance tests//构建性能测试 *** 3rd party support *** //第三方支持 [ ] ffmpeg support //ffmpeg支持 gstreamer support (none) ---> //gstreamer-0.10或1.x支持 [ ] jpeg2000 support //jpeg2000支持 [ ] jpeg support //jpeg支持 [ ] png support //png支持 [ ] tiff support //tiff支持 [ ] v4l support //linux v4l支持 *** Install options *** //安装选项 [ ] install extra data //安装所使用的CV库和/或演示应用程序的各种数据 [ ] openjpeg //一个开源的JPEG2000编解码器 [ ] pango //用于高质量地渲染国际化的文字 [ ] pangomm //pango的C++绑定 [ ] pixman //Cairo像素管理 [ ] poppler //一个基于xpdf的-3.0代码库PDF渲染库 [ ] tiff ---- //处理Tag Image File Format(TIFF)标签图像文件格式图像 [ ] waffle //一个C库,用于在运行时选择OpenGL API和窗口系统 [ ] wayland //旨在作为X的更简单替代品,更易于开发和维护 [ ] webkitgtk //用于处理视频内容的GStreamer GL元素 [ ] webp //一种新的图像格式,在网络上提供无损和有损压缩的图像 [ ] woff2 //对于WOFF2字体文件格式参考实现,通常用于Web字体 [ ] zbar //QR和条码扫描仪 [ ] zxing-cpp //条形码图像处理的Java实现库,提供编译C++端口 Hardware handling ---> //**硬件处理** [ ] acsccid [ ] bcm2835 [ ] c-periphery [ ] ccid [ ] dtc (libfdt) [ ] gnu-efi [ ] hackrf [ ] hidapi [ ] lcdapi [ ] let-me-create [ ] libaio [ ] libatasmart [ ] libcec [ ] libfreefare [ ] libftdi [ ] libftdi1 [ ] libgphoto2 *** libgpiod needs kernel headers >= 4.8 *** [ ] libgudev [ ] libhid [ ] libiio [ ] libinput [ ] libiqrf [ ] libllcp [ ] libmbim [ ] libnfc [ ] libpciaccess [ ] libphidget [ ] libpri [ ] libqmi [ ] libraw1394 [ ] librtlsdr [ ] libserial [ ] libserialport [ ] libsigrok [ ] libsigrokdecode [ ] libsoc [ ] libss7 -*- libusb [ ] build libusb examples [ ] libusb-compat [ ] libusbgx [ ] libv4l [ ] libxkbcommon [ ] mraa [ ] mtdev [ ] ne10 [ ] neardal [ ] owfs [ ] pcsc-lite [ ] tslib [ ] urg [ ] wiringpi Javascript ---> //**Javascript** [ ] angularjs [ ] bootstrap [ ] duktape [ ] explorercanvas [ ] flot [ ] jQuery [ ] jsmin [ ] json-javascript JSON/XML ---> //**JSON/XML** [ ] benejson [ ] cJSON -*- expat [ ] ezxml [ ] jansson [ ] jose [ ] jsmn [ ] json-c [ ] json-for-modern-cpp -*- json-glib [ ] jsoncpp [ ] libbson [ ] libfastjson [ ] libjson [ ] roxml [ ] libucl -*- libxml2 [ ] libxml++ [ ] libxmlrpc [ ] libxslt [ ] libyaml [ ] Mini-XML [ ] pugixml [ ] rapidjson [ ] rapidxml [ ] raptor [ ] tinyxml [ ] tinyxml2 [ ] valijson [ ] xerces-c++ [ ] yajl [ ] yaml-cpp Logging ---> //**日志** [ ] eventlog [ ] glog [ ] liblog4c-localtime [ ] liblogging [ ] log4cplus [ ] log4cpp [ ] log4cxx [ ] opentracing-cpp [ ] zlog Multimedia ---> //**多媒体** [ ] bitstream [ ] kvazaar [ ] libaacs [ ] libamcodec [ ] libass [ ] libbdplus [ ] libbluray [ ] libdcadec [ ] libdvbcsa [ ] libdvbpsi [ ] libdvbsi [ ] libdvdcss [ ] libdvdnav [ ] libdvdread [ ] libebml [ ] libhdhomerun *** libimxvpuapi needs an i.MX platform with VPU support *** [ ] libmatroska [ ] libmms [ ] libmpeg2 [ ] libogg [ ] libopenh264 [ ] libopusenc [ ] libplayer [ ] libtheora [ ] libvpx [ ] libyuv [ ] live555 [ ] mediastreamer [ ] x264 [ ] x265 Networking ---> //**网络** [ ] agent++ [ ] alljoyn [ ] alljoyn-base [ ] alljoyn-tcl [ ] alljoyn-tcl-base [ ] azmq [ ] azure-iot-sdk-c [ ] batman-adv [ ] c-ares [ ] canfestival [ ] cgic [ ] cppzmq [ ] curlpp [ ] czmq [ ] daq [ ] davici [ ] filemq [ ] flickcurl [ ] freeradius-client [ ] geoip [ ] glib-networking [ ] grpc [ ] gssdp [ ] gupnp [ ] gupnp-av [ ] gupnp-dlna [ ] ibrcommon [ ] ibrdtn [ ] libcgi [ ] libcgicc [ ] libcoap [ ] libcpprestsdk -*- libcurl [ ] curl binary [ ] enable verbose strings SSL/TLS library to use (OpenSSL) ---> [ ] libdnet [ ] libeXosip2 [ ] libfcgi [ ] libgsasl [ ] libhttpparser [ ] libidn [ ] libidn2 [ ] libiscsi [ ] libkrb5 [ ] libldns [ ] libmaxminddb [ ] libmbus [ ] libmemcached [ ] libmicrohttpd [ ] libminiupnpc [ ] libmnl [ ] libmodbus [ ] libnatpmp [ ] libndp [ ] libnet [ ] libnetfilter_acct [ ] libnetfilter_conntrack [ ] libnetfilter_cthelper [ ] libnetfilter_cttimeout [ ] libnetfilter_log [ ] libnetfilter_queue [ ] libnfnetlink [ ] libnftnl [ ] libnice -*- libnl [ ] install tools [ ] liboauth [ ] liboping [ ] libosip2 [ ] libpagekite [ ] libpcap [ ] libpjsip [ ] librsync [ ] libshairplay [ ] libshout [ ] libsocketcan [ ] libsoup [ ] libsrtp [ ] libstrophe [ ] libtirpc [ ] libtorrent [ ] libtorrent-rasterbar [ ] libupnp [ ] libupnp18 [ ] libupnpp [ ] liburiparser [ ] libvncserver [ ] libwebsock [ ] libwebsockets [ ] lksctp-tools [ ] mongoose [ ] nanomsg [ ] libneon [ ] nghttp2 [ ] norm [ ] nss-myhostname [ ] nss-pam-ldapd [ ] omniorb [ ] openldap [ ] openmpi [ ] openpgm [ ] openzwave [ ] oRTP [ ] paho-mqtt-c [ ] qdecoder [ ] qpid-proton [ ] rabbitmq-c [ ] librtmp [ ] slirp [ ] snmp++ [ ] sofia-sip [ ] thrift [ ] usbredir [ ] snmp++ [ ] sofia-sip [ ] thrift [ ] usbredir [ ] wampcc [ ] websocketpp [ ] zeromq [ ] zmqpp [ ] zyre Other ---> //**其它** [ ] apr [ ] apr-util [ ] armadillo [ ] atf [ ] bctoolbox [ ] bdwgc [ ] boost [ ] capnproto [ ] clang [ ] cblas/clapack [ ] classpath [ ] cmocka [ ] cppcms [ ] cracklib [ ] dawgdic [ ] ding-libs [ ] eigen [ ] elfutils [ ] ell [ ] fftw [ ] flann [ ] flatbuffers [ ] flatcc [ ] gconf [ ] gflags [ ] glibmm [ ] glm [ ] gmp [ ] gsl [ ] gtest [ ] jemalloc [ ] lapack/blas [ ] libargtable2 [ ] libatomic_ops [ ] libb64 [ ] libbsd [ ] libcap [ ] libcap-ng [ ] libcgroup [ ] libclc [ ] libcofi [ ] libcorrect [ ] libcroco [ ] libcrossguid [ ] libcsv [ ] libdaemon [ ] libee [ ] libev [ ] libevdev [ ] libevent -*- libffi [ ] libgee -*- libglib2 [ ] libglob -*- libical [ ] libite [ ] liblinear [ ] libloki [ ] libnpth [ ] libnspr [ ] libpfm4 [ ] libplist -*- libpthread-stubs [ ] libpthsem [ ] libpwquality [ ] libseccomp [ ] libsigc++ [ ] libsigsegv [ ] libspatialindex [ ] libtasn1 [ ] libtommath [ ] libtpl [ ] libubox [ ] libuci [ ] libunwind [ ] liburcu [ ] libuv [ ] lightning [ ] linux-pam [ ] liquid-dsp -*- llvm [ ] AMDGPU backend [ ] lttng-libust [ ] mpc [ ] mpdecimal [ ] mpfr [ ] mpir [ ] msgpack [ ] mtdev2tuio [ ] openblas [ ] orc [ ] p11-kit [ ] poco [ ] protobuf [ ] protobuf-c [ ] qhull [ ] qlibc [ ] riemann-c-client [ ] shapelib [ ] skalibs [ ] sphinxbase [ ] riemann-c-client [ ] shapelib [ ] skalibs [ ] sphinxbase [ ] tinycbor [ ] xapian Security ---> //**安全** [ ] libselinux [ ] libsemanage [ ] libsepol [ ] safeclib Text and terminal handling ---> //**文字和终端处理** [ ] augeas [ ] enchant [ ] fmt [ ] icu [ ] libcli [ ] libedit [ ] libenca [ ] libestr [ ] libfribidi [ ] libunistring [ ] linenoise -*- ncurses [ ] enable wide char support [ ] ncurses programs () additional terminfo files to install [ ] newt -*- pcre [ ] 16-bit pcre [ ] 32-bit pcre -*- UTF-8/16/32 support in pcre -*- Unicode properties support in pcre [*] pcre2 [*] 16-bit pcre2 [ ] 32-bit pcre2 [ ] popt -*- readline [ ] slang [ ] tclap [ ] ustr
2.6.12 Mail
[ ] dovecot //开源的IMAP和POP3电子邮件服务器 [ ] exim //消息传输代理(MTA) [ ] fetchmail //将邮件从POP和IMAP移至本地计算机的客户端后台驻留程序 [ ] heirloom-mailx //可作终端邮件阅读器、邮件编写程序和SMTP客户端 [ ] libesmtp //用于通过SMTP发送电子邮件的库 [ ] msmtp //SMTP客户端 [ ] mutt //一个基于文本的复杂邮件用户代理Mail User Agent(MUA)
2.6.13 Miscellaneous
[ ] aespipe //AES加密和解密数据块 [ ] bc //一种任意精度的数字处理语言,其语法与C相似 [ ] clamav //用于检测木马、病毒、恶意软件和其他恶意威胁的防病毒引擎 [*] collectd ---> //收集的 match plugins ---> //匹配插件 [ ] empty counter //匹配当前为零的计数器值 [ ] hashed //使用主机名的哈希函数匹配值 [ ] regex //根据正则表达式按其标识符匹配值 [ ] timediff //匹配带有无效时间戳记的值 [ ] value //根据其数据源的值选择值 misc plugins ---> //杂项插件 [ ] aggregation //允许使用一或多个合并函数将多个值聚合为单个值 [*] logfile //将日志消息写入文件或STDOUT/STDERR [ ] logstash //写入格式为logstash JSON事件的日志消息 [ ] notify_email //向配置的收件人发送带有通知消息的电子邮件 [ ] notify_nagios //将通知发送到Nagios,作为被动检查结果 [*] syslog //登录到标准UNIX日志记录机制 [ ] threshold //根据配置的阈值检查值,如果值超出范围,则创建通知 read plugins ---> //阅读插件 [ ] apache //收集Apache的mod_status信息 [ ] apcups //从apcupsd收集UPS统计信息 [ ] battery //收集电池电量,消耗的电流和电压 [ ] bind //收集BIND DNS统计信息 [ ] ceph //来自Ceph分布式存储系统的统计信息 [ ] chrony //从实时NTP服务器收集NTP数据 [ ] cgroups //收集CGroups CPU使用率统计信息 [ ] conntrack //收集Linux连接跟踪表中的条目数 [ ] contextswitch //收集由操作系统完成的上下文切换的数量 [ ] cpu //收集CPU在各种状态下花费的时间 [ ] cpufreq //收集当前的CPU频率 [ ] cpusleep //测量深度睡眠模式下CPU花费的时间 [ ] curl //使用libcurl读取文件,然后根据配置解析它们 [ ] curl-json //使用cURL库查询JSON数据,使用YAJL根据用户配置进行解析 [ ] curl-xml //使用libcurl读取文件并将其解析为XML [ ] df //收集文件系统使用情况信息 [ ] disk //收集硬盘和分区的性能统计信息 [ ] dns //使用libpcap收集DNS流量的统计信息 [ ] drbd //收集单个drbd资源统计信息 [ ] entropy //收集系统上的可用熵 [ ] ethstat //收集单个drbd资源统计信息 [ ] exec //执行脚本并读回该程序打印到STDOUT的值 [ ] fhcount //文件处理统计 [ ] filecount //计算目录及其所有子目录中的文件数 [ ] fscache //收集有关网络文件系统和基于文件系统的缓存结构信息 [ ] gps //报告GPS接收器看到的卫星数量和精度 [ ] hugepages //报告Linux上已使用和空闲的大页面数 [ ] interface //收集有关网络接口流量的信息 [ ] ipc //IPC计数器:使用的信号量,共享内存中分配的段数等 [ ] iptables //从iptables数据包过滤器收集统计信息。 [ ] ipvs //从LVS项目的传输层负载均衡器IP虚拟服务器(IPVS)中提取统计信息 [ ] irq //收集中断数量 [ ] load //收集系统负载 [ ] md //收集软件RAID设备信息 [ ] memcachec //从memcache守护程序查询和解析数据 [ ] memcached //从memcached守护程序收集统计信息 [ ] memory //收集物理内存利用率 [ ] modbus //通过Modbus/TCP从Modbus"从机"读取寄存器值 [ ] mysql //连接到MySQL数据库并发出"显示状态"命令 [ ] netlink //获取接口、qdiscs、类和过滤器的统计数据 [ ] nfs //收集有关网络文件系统使用情况的信息 [ ] nginx //收集nginx守护程序处理的请求数以及按状态收集的当前连接数 [ ] ntpd //查询NTP服务器并提取参数 [ ] olsrd //从olsrd读取有关网状网络的信息 [ ] openldap //从OpenLDAP的cn=Monitor子树中读取监视信息 [ ] openvpn //读取OpenVPN的状态文件以收集统计信息 [ ] ping //使用ICMP"回显请求"确保网络延迟 [ ] postgresql //连接PostgreSQL数据库执行SQL语句,将返回的值转换为"值列表" [ ] processes //收集按状态分组的进程数 [ ] protocols //收集有关网络协议的信息 [ ] sensors //从流明传感器收集数据 [ ] serial //收集串行接口上的流量 [ ] SMART //收集SMART统计信息,特别是负载周期计数,温度和坏扇区 [ ] StatsD //StatsD网络协议,允许客户端报告"事件" [ ] snmp //从SNMP设备读取值 [ ] swap //收集当前写入磁盘的内存量 [ ] table //解析表状结构的纯文本文件 [ ] tail //尾巴日志文件,每一行都有一个或多个匹配项 [ ] tail csv //根据(尾部)CSV格式的文件,解析每一行并提交提取的值 [ ] tcpconns //计算与指定端口之间的TCP连接数 [ ] thermal //读取ACPI热区信息 [ ] uptime //跟踪系统正常运行时间 [ ] users //计算当前登录的用户数 [ ] vmem //收集有关虚拟内存子系统的信息 [ ] wireless //收集WLAN卡的信号质量,功率和噪声比 [ ] zookeeper //从Zookeeper的MNTR命令读取数据 target plugins ---> //目标插件 [ ] notification //创建和发送通知 [ ] replace //使用正则表达式替换标识符的各个部分 [ ] scale //用任意数字缩放(乘)值 [ ] set //设置(覆盖)标识符的整个部分 write plugins ---> //写插件 [ ] csv //将值以逗号分隔值格式写入纯文本文件 [ ] graphite //将收集的数据写入Carbon(Graphite's)存储API [ ] mqtt //向MQTT代理发送指标和/或从MQTT代理接收指标 [ ] network //从其他收集的实例发送/接收值 [ ] rrdtool //将值写入RRD文件 [ ] riemann //将数据发送到流处理和监视系统Riemann [ ] unixsock //打开UNIX域套接字并接受连接,可将命令发送到守护程序并接收信息 [ ] write_http //使用HTTP POST和PUTVAL将收集的值发送到Web服务器 [ ] write_log //将数据写入日志 [ ] write_prometheus //使用嵌入式HTTP服务器以与Prometheus的collectd_exporter兼容 [ ] write_sensu //通过Sensu客户端本地TCP套接字将数据发送到流处理和监视系统Sensu [ ] write_tsdb //发送数据OpenTSDB,可扩展的无主数据库,无共享状态时间序列数据库 [ ] domoticz //一个家庭自动化系统,监视和配置各种设备,如:灯、开关、传感器等 [ ] empty //在伪终端(PTY)会话下运行进程和应用程序 [ ] gnuradio //提供信号处理模块来实现软件无线电 [ ] Google font directory //Google字体提供的字体文件 [ ] gqrx //使用GNU Radio和Qt GUI工具箱实现的开源无线电(SDR)接收器 [ ] gsettings-desktop-schemas //包含GSettings模式的集合,用于由桌面的各个组件共享的设置 [ ] haveged //一个易用、不可预测的随机数生成器,基于 HAVEGE 算法 [ ] linux-syscall-support (lss) //提供系统调用的头文件 [ ] mcrypt //允许开发人员使用各种加密功能,而无需对其代码进行大幅度更改 [ ] mobile-broadband-provider-info //移动宽带提供商数据库 [ ] proj //可将地理经度和纬度坐标转换为笛卡尔坐标(反之亦然) [ ] QEMU //一种通用的开源计算机仿真器和虚拟器 [ ] qpdf //一个命令行程序,可对PDF文件进行结构化,内容保留的转换 [ ] shared-mime-info //包含常见类型的核心数据库以及用于扩展它的update-mime-database命令 [ ] taskd //任务管理同步守护程序 [ ] util-macros //包含M4被所有的使用宏的Xorg包
2.6.14 Networking applications (待完善)
[ ] aircrack-ng [ ] aoetools [ ] apache [ ] argus [ ] arp-scan [ ] arptables [ ] asterisk [ ] atftp [ ] autossh [ ] avahi [ ] axel [ ] babeld [ ] bandwidthd [ ] batctl [ ] bcusdk [ ] bind [ ] bird [ ] bluez-tools [ ] bluez-utils [*] bluez-utils 5.x [*] build OBEX support [*] build CLI client [*] install deprecated tool [*] build experimental obexd plugin [*] build health plugin [*] build midi profile [*] build nfc plugin [*] build health plugin [*] build midi profile [*] build nfc plugin [*] build sap plugin [*] build sixaxis plugin [ ] build tests [*] bmon [ ] boa [ ] boinc [ ] brcm-patchram-plus [ ] bridge-utils [ ] bwm-ng [ ] c-icap [*] can-utils [ ] cannelloni [ ] chrony [ ] civetweb [ ] connman *** connman-gtk needs libgtk3 and a glibc or uClibc toolchain w/ wchar, threads, resolver, d [ ] conntrack-tools [ ] corkscrew [ ] crda [ ] ctorrent [ ] cups [ ] dante [ ] darkhttpd [ ] dehydrated [ ] dhcp (ISC) [ ] dhcpcd [ ] dhcpdump [ ] dnsmasq [ ] drbd-utils [ ] dropbear [ ] ebtables *** ejabberd needs erlang, toolchain w/ C++ *** [ ] ethtool [ ] faifa [ ] fastd [ ] fcgiwrap [ ] flannel [ ] fping [ ] freeswitch *** gerbera needs a toolchain w/ C++, threads, gcc >= 7 *** [ ] gesftpserver [ ] glorytun *** gupnp-tools needs libgtk3 *** [ ] hans [ ] haproxy [ ] hiawatha [ ] hostapd [ ] httping [ ] i2pd [ ] ibrdtn-tools [ ] ibrdtnd [ ] ifenslave [ ] ifplugd [ ] iftop [ ] ifupdown [*] ifupdown scripts [ ] igd2-for-linux [ ] igh-ethercat [ ] igmpproxy [ ] inadyn [ ] iodine [ ] iperf [*] iperf3 [ ] iproute2 [ ] ipsec-tools [ ] ipset [ ] iptables [ ] iptraf-ng [ ] iputils [ ] irssi [*] iw [ ] iwd [ ] janus-gateway ---- [ ] keepalived [ ] kismet [ ] knock [ ] leafnode2 [ ] lft [ ] lftp [*] lighttpd [*] openssl support [*] zlib support [*] bzip2 support [*] pcre support [*] webdav support [ ] linknx [ ] links [ ] linphone [ ] linux-zigbee [ ] linuxptp [ ] lldpd [*] lrzsz [ ] lynx [ ] macchanger [ ] memcached [ ] mii-diag [ ] mini-snmpd [ ] minidlna [ ] minissdpd [*] mjpg-streamer [ ] modem-manager [ ] mongrel2 [ ] monkey [ ] mosh [ ] mosquitto [ ] mrouted [ ] mtr [ ] nbd [ ] ncftp [ ] ndisc6 tools [ ] netatalk [ ] netcat [ ] netcat-openbsd [ ] netplug [ ] netsnmp [ ] netstat-nat [ ] net-tools [ ] network-manager [ ] nfacct [ ] nftables [ ] nginx ---- [ ] ngircd [ ] ngrep [ ] nload [ ] nmap [ ] noip [ ] ntp [ ] nuttcp [ ] odhcp6c [ ] odhcploc [ ] olsr [ ] open-lldp [ ] open-plc-utils [ ] openntpd [*] openobex [ ] openresolv [*] openssh [ ] openswan [ ] openvpn [ ] p910nd [ ] phidgetwebservice [ ] phytool [ ] pimd [ ] pixiewps [ ] pound [ ] pppd [ ] pptp-linux [ ] privoxy [ ] proftpd *** prosody needs the lua interpreter, dynamic library *** [ ] proxychains-ng [ ] ptpd [ ] ptpd2 [ ] pure-ftpd [ ] putty [ ] quagga *** rabbitmq-server needs erlang *** [ ] radvd [ ] reaver [ ] rp-pppoe [ ] rpcbind [ ] rsh-redone [ ] rsync [ ] rtorrent [ ] rtptools [ ] rygel [ ] s6-dns [ ] s6-networking [ ] samba4 [ ] sconeserver ---- [ ] ser2net [ ] shadowsocks-libev [ ] shairport-sync [ ] shellinabox [ ] smcroute [ ] sngrep [ ] snort [ ] socat [ ] socketcand [ ] softether [ ] spawn-fcgi [ ] spice protocol [ ] squid [ ] sshpass [ ] sslh [ ] strongswan ---- [ ] stunnel [ ] tcpdump [ ] tcping [ ] tcpreplay [ ] tftpd [ ] thttpd [ ] tinc [ ] tinyhttpd [ ] tor [ ] traceroute [ ] transmission [ ] tunctl [ ] tvheadend [ ] udpcast [ ] uhttpd [ ] ulogd [ ] ushare [ ] ussp-push [ ] vde2 [ ] vdr [ ] vnstat [ ] vpnc [ ] vsftpd [ ] vtun [ ] wavemon [*] wget [ ] whois [ ] wireguard [ ] wireless-regdb [ ] wireless tools [ ] wireshark [*] wpa_supplicant [*] Enable nl80211 support [*] Enable AP mode [*] Enable Wi-Fi Display [*] Enable mesh networking [*] Enable autoscan [*] Enable EAP [*] Enable HS20 [*] Enable syslog support [*] Enable WPS [*] Install wpa_cli binary [*] Install wpa_client shared library [*] Install wpa_passphrase binary [*] Enable support for old DBus control interface [*] Enable support for new DBus control interface [*] Introspection support [ ] wpan-tools [ ] xinetd [ ] xl2tp [ ] xtables-addons [ ] znc
2.6.15 Package managers
*** ------------------------------------------------------- *** *** Please note: *** *** - Buildroot does *not* generate binary packages, *** //Buildroot不会生成二进制软件包 *** - Buildroot does *not* install any package database. *** //Buildroot不会安装任何软件包数据 *** * *** *** It is up to you to provide those by yourself if you *** //如果想使用任何软件包管理器,需要自己提供 *** want to use any of those package managers. *** *** * *** *** See the manual: *** *** http://buildroot.org/manual.html#faq-no-binary-packages *** *** ------------------------------------------------------- *** [ ] opkg //Opkg是基于ipkg的轻量级软件包管理系统,类似于apt/dpkg [ ] rpm //RPM软件包管理器
2.6.16 Real-Time
[ ] Xenomai Userspace //Linux实时时钟框架
2.6.17 Security
[ ] checkpolicy //SELinux(Security-Enhanced Linux)策略编译器 [ ] paxtest //PaX回归测试套件 [ ] policycoreutils //SELinux策略程序的集合(包含load_policy、newrole、run_init、secon、semodule、sestatus等) [ ] refpolicy //一个完整的SELinux策略,可以用作各种系统的系统策略,也可以用作创建其他策略的基础 [ ] restorecond //一个守护程序,它监视文件创建,然后为该文件设置默认的SELinux文件上下文 [*] selinux-python ---> //selinux的python模块 [ ] audit2allow //该模块安装两个程序:audit2allow和audit2why [ ] sepolgen //一个Python模块,可让生成初始的SELinux策略模块模板 [ ] semodule-utils //包含用于处理selinux模块的工具:semodule_deps、semodule_expand、semodule_link等 [ ] setools //SELinux策略分析软件包:apol、sediff-SELinux、sedta、seinfoflow-SELinux等
2.6.18 Shell and utilities
*** Shells *** //**命令解析器** -*- bash //标准的GNU Bourne shell [ ] dash //非常小的/bin/sh的POSIX兼容shell [ ] mksh //MirBSD Korn Shell,一个紧凑、快速、可靠、安全、又不断扩展的shell [ ] zsh //bash、ksh和tcsh的许多有用功能已合并到zsh中,又增加了许多原始功能 *** Utilities *** //**实用工具** [ ] at //在未来的某个时间点定期执行一次任务(一条/多条命令组合,或脚本) [*] bash completion //添加bash完成基础结构 [ ] ccrypt //用于加密和解密文件和流的程序 [ ] dialog //从shell脚本显示对话框 [ ] dtach //屏幕的分离的功能的工具,可以随意地连接到各会话上 [ ] easy-rsa //RSA证书生成、管理工具 [ ] file //通过扫描二进制数据中的已知模式来识别文件格式的程序 [ ] gnupg //GNU Privacy Guard(GnuPG或GPG),是包含数字签名和证书的加密工具 [ ] gnupg2 //gnupg的新版本 [ ] inotify-tools //用于监视文件系统事件并对其采取行动 [ ] lockfile programs //锁文件的程序 [ ] logrotate //一个简单的轮转日志的程序 [ ] logsurfer //用于实时监视系统日志并报告事件发生情况的程序 [ ] pdmenu //用于Unix的全屏菜单系统 [*] pinentry ---> //简单的PIN或短语输入对话框的集合 -*- pinentry-ncurses //pinentry-ncurses工具 [ ] pinentry-gtk2 //pinentry-gtk2工具 [ ] pinentry-qt5 //pinentry-qt5工具 [ ] ranger //支持VI快捷键的控制台文件管理器 [ ] screen //一个终端切换的软件,可用于终端会话恢复 [ ] sudo //旨在允许sysadmin向用户授予有限的root特权并记录root活动 [ ] time //GNU时间程序 [ ] tini //一个简单但有效的初始化二进制文件,可充当容器的PID 1 [ ] tmux //一个终端多路复用软件,使单个终端可以访问和控制多个终端 [ ] which //“which”命令程序 [ ] xmlstarlet //命令行XML工具包 [ ] xxhash //一种非常快速的哈希算法,运行速度受限RAM
2.6.19 System tools
[ ] acl //POSIX访问控制列表,用于为文件和目录定义更细粒度的自由访问权限 [ ] android-tools //包含fastboot和adb实用程序,可使用这些协议与目标设备进行交互 [ ] atop //用于Linux的ASCII全屏性能监视器 -*- attr //操纵文件系统扩展属性的命令 [ ] audit //用于存储和搜索Linux 2.6内核中的审计子系统生成的审计记录 [ ] cgroupfs-mount //cgroupfs的挂载和卸载脚本 [ ] circus //运行并观看多个进程和套接字 [ ] coreutils //所有基本的文件/文本/Shell工具 [ ] cpuload //在一定时间内获得直观的CPU负载视图 [ ] daemon //其他进程转换为守护程序 [ ] dc3dd //GNU dd程序的补丁程序 [ ] dcron //基于时间的作业调度程序,具有类似于anacron的功能 [ ] ddrescue //一种数据恢复工具 [ ] debianutils //特定于Debian的其他程序:add-shell installkernel ischroot等 [ ] docker-cli //一个平台,可作为轻量级容器构建,交付和运行应用程序 [ ] docker-compose //Docker的多容器编排 [ ] docker-containerd //控制runC的守护程序 [ ] docker-engine //docker引擎 [ ] docker-proxy //一个容器网络模型,提供一致的编程接口和应用程序所需的网络抽象 [ ] efibootmgr //Linux用户空间应用程序,用于修改Intel可扩展固件接口(EFI)引导管理器 [ ] efivar //设置EFI变量的工具和库 [ ] emlog //一个Linux内核模块,可轻松访问进程的最新(且仅最新)输出 [ ] ftop //可以监视所有打开的文件和文件系统的进度 [ ] getent //用来察看系统的数据库中的相关记录,判定用户是否存在等 [ ] htop //用于Linux的交互式文本模式进程查看器 [ ] iotop //IBM Power RAID设备的系统程序 [ ] iprutils //IBM Power RAID设备的系统实用程序 [ ] irqbalance //一个守护程序,可帮助平衡由所有系统cpus的中断产生的cpu负载 -*- keyutils //用于控制Linux内核中内置的密钥管理系统 -*- kmod //处理内核模块 [ ] kmod utilities //安装kmod模块程序:depmod、insmod、lsmod、modinfo、modprobe、rmmod [ ] kvmtool //用于托管KVM guest虚拟机的轻量级工具 [ ] libostree //OSTree是用于基于Linux的操作系统的升级系统 [ ] lxc //Linux Containers,一种基于容器的操作系统层级的虚拟化技术 [ ] mender //用于嵌入式Linux设备的开源无线(OTA)软件更新程序 [ ] monit //用于管理和监视UNIX系统上的进程,程序,文件,目录和文件系统 [ ] ncdu //具有ncurses接口的磁盘使用情况分析器 [ ] nut //Network UPS Tools(NUT),为电力设备提供支持,例如不间断电源等 [ ] pamtester //用于测试可插入身份验证模块(PAM)功能的微型程序 [ ] polkit //用于定义和处理授权的工具包 [ ] procps-ng //标准的信息程序和流程处理工具,如kill、ps、uptime、free、top等 [ ] procrank_linux //Android平台开发人员常用的工具,用于找出实际使用了多少内存 [ ] psmisc //与/proc相关程序,如pstree,fuser,killall [ ] pwgen //GPL的小型密码生成器,它创建的密码可以很容易地被人记住 [ ] quota //执行磁盘配额系统 [ ] quotatool //为命令行操作文件系统配额 [*] rauc //自动更新控制器,它支持通过网络(OTA)或从磁盘更新嵌入式Linux系统 [*] network support //此选项支持使用libcurl通过网络更新固件 [*] JSON output support //此选项启用对以JSON格式提供输出的支持 [ ] rsyslog //功能强大且灵活的syslog实现 [ ] runc //一个CLI工具,用于根据OCP规范生成和运行容器 [ ] s6 //用于daemontools和runit中的所有进程监视,和进程和守护程序的各种操作 [ ] s6-linux-init //一组用于在Linux内核上创建基于s6的初始化系统的简约工具 [ ] s6-linux-utils //一组特定于Linux的简约系统程序 [ ] s6-portable-utils //一组小型的通用Unix实用程序,通常执行常见的任务,例如cut和grep [ ] s6-rc //基于s6的系统的服务管理器 [ ] scrub //以迭代方式在文件或磁盘设备上写入模式,从而使清除的数据更不易恢复 [ ] scrypt //使用scrypt进行密钥派生的文件加密程序 [ ] smack //Smack(Simplified Mandatory Access Control Kernel)强制访问控制内核 [ ] start-stop-daemon //用于控制系统级进程的创建和终止 [ ] supervisor //一种允许其用户控制类UNIX操作系统上的多个进程的客户机/服务器系统 [*] swupdate //一种可靠的方式来更新嵌入式系统上的软件 [*] syslogd & klogd //系统日志守护程序syslogd和klogd [ ] syslog-ng //增强的日志守护程序,支持多种输入和输出方法 -*- sysvinit //所有进程的父级/sbin/init的System V样式实现 [ ] tar //tar打包和还原 [ ] tpm-tools //用于管理和诊断TPM(Trusted Platform Module)的工具 [ ] tpm2-abrmd //用于实现TCG的TPM2访问代理(TAB)和资源管理器(RM)的守护程序 [ ] tpm2-tools //用于管理和诊断TPM2(Trusted Platform Module 2)的工具 [ ] unscd //用于处理正在运行的程序的passwd,组和主机的查找,并为下次查询缓存结果 -*- util-linux ---> //各种有用/必要的linux库和实用程序 -*- libblkid //包含用于块设备识别和标记提取的例程 [*] libfdisk //包含操作分区表的例程 -*- libmount //包含用于块设备挂载和卸载的例程 [ ] libsmartcols //包含以表格形式进行屏幕输出的例程 -*- libuuid //含用于生成在本地系统之上可访问对象的唯一标识符的例程 [ ] basic set //安装基本的util-linux二进制文件 [ ] agetty //替代Linux Getty [ ] bfs //SCO bfs文件系统支持 [ ] cal //显示日历或日历的一部分 [ ] chfn/chsh //更改登录shell,真实用户名和信息 [ ] chmem //设置在线或离线的特定大小或范围的内存 [ ] cramfs utilities //压缩ROM文件系统的实用程序(fsck.cramfs,mkfs.cramfs) [ ] eject //弹出可移动媒体 [ ] fallocate //将空间预分配给文件 [ ] fdformat //低级格式化软盘 [ ] fsck //检查并修复linux文件系统 [ ] hwclock //查询或设置硬件时钟(RTC) [ ] ipcrm //删除某些IPC资源 [ ] ipcs //显示有关IPC设施的信息 [ ] kill //向进程发送信号 [ ] last //显示最近登录用户的列表 [ ] line //读一行 [ ] logger //在系统日志中输入消息 [ ] login //在系统上开始会话 [ ] losetup //设置和控制loop设备 [ ] lslogins //显示有关系统中已知用户的信息 [ ] lsmem //列出可用内存的范围及其在线状态 [ ] mesg //控制对终端的写访问 [ ] minix //inix文件系统支持 [ ] more //文件浏览过滤器,供crt查看 [ ] mount/umount //挂载/卸载文件系统 [ ] mountpoint //查看目录是否为挂载点 [ ] newgrp //登录新群组 [ ] nologin //拒绝登录 [ ] nsenter //输入另一个进程的名称空间 [ ] pg //逐页浏览文本文件 [ ] partition utilities //分区实用程序(addpart,delpart,partx) [ ] pivot_root //更改根文件系统 [ ] raw //构建Linux原始字符设备 [ ] rename //重命名文件 [ ] rfkill //用于启用和禁用无线设备的工具 [ ] runuser //运行具有替代用户名和组ID的命令 [ ] scheduling utilities //计划任务程序(chrt,ionice,taskset) [ ] setpriv //使用不同的Linux特权设置运行程序 [ ] setterm //设置终端属性 [ ] su //切换到其它用户 [ ] sulogin //单用户登录 [ ] switch_root //切换到另一个文件系统,将其作为根文件系统 [ ] tunelp //为lp设备设置各种参数 [ ] ul //下划线 [ ] unshare //运行某些与父级不共享的名称空间的程序 [ ] utmpdump //以原始格式转储UTMP和WTMP文件 [ ] uuidd //UUID生成守护程序 [ ] vipw //辑密码、组、影子密码或影子组文件 [ ] wall //向每个人的终端发送消息 [ ] wdctl //显示硬件看门狗状态 [ ] write //向其他用户发送消息 [ ] zramctl //设置和控制zram设备 [ ] xen //可构建Xen虚拟机管理程序和工具堆栈 [*] xvisor ---> //一个开放源代码的Type-1虚拟机管理程序 Xvisor configuration (Using an in-tree defconfig file) ---> (generic-v7) Defconfig name //要使用的Xvisor defconfig文件的名称 [ ] Create U-Boot image of Xvisor //创建可从Das U-Boot加载的Xvisor映像文件 [ ] Build test device-tree blobs //构建测试设备树blob
2.6.20 Text editors and viewers
[ ] ed //面向行的文本编辑器,通常在脚本中使用,而不是直接调用 [ ] joe //JOE是易于使用的,基于终端的全功能屏幕编辑器 [ ] less //出色的文本文件查看器 [ ] mc //GNU Midnight Commander是一个视觉文件管理器 [ ] nano //一个不错的基于ncurses的编辑器 [ ] uemacs //一个小的emacs [*] vim //VIM文本编辑器 [*] install runtime //安装VIM runtime(语法突出显示+宏),将大约11MB的数据添加到/usr/share/
2.7 Filesystem images(文件系统)
Filesystem images ---> [ ] axfs root filesystem //XFS格式根文件系统 [ ] btrfs root filesystem //btrfs格式根文件系统 [ ] cloop root filesystem for the target device //clop方式压缩根文件系统 [ ] cpio the root filesystem (for use as an initial RAM filesystem) //cpio方式压缩根文件系统(用作初始RAM文件系统) [ ] cramfs root filesystem //cramf格式根文件系统 [*] ext2/3/4 root filesystem //ext2/3/4格式根文件系统 ext2/3/4 variant (ext4) ---> //ext4格式根文件系统 () filesystem label //文件系统标签 (200M) exact size //根文件系统空间大小 (0) exact number of inodes (leave at 0 for auto calculation) //确切的inode数(从0开始自动计算) (5) reserved blocks percentage //保留块百分比 (保留的供root使用,默认5%) (-O ^64bit) additional mke2fs options //额外的mke2fs选项 [禁用64位文件系统] Compression method (no compression) ---> //压缩方式 [无压缩] [ ] f2fs root filesystem //f2fs格式根文件系统 [ ] initial RAM filesystem linked into linux kernel //初始RAM文件系统链接到Linux内核 [ ] jffs2 root filesystem //jffs2格式根文件系统 [ ] romfs root filesystem //romfs格式根文件系统 [ ] squashfs root filesystem //squashfs格式根文件系统 [*] tar the root filesystem //tar压缩格式根文件系统 Compression method (no compression) ---> //压缩方式 [无压缩] () other random options to pass to tar //传递给tar的其他选项 [ ] ubi image containing an ubifs root filesystem //ubifs格式根文件系统包含ubi镜像 [ ] ubifs root filesystem //ubifs格式根文件系统 [ ] yaffs2 root filesystem //yaffs2格式根文件系统
借此机会,把几个文件系统给记录一下。
1.什么是文件系统
文件系统,就是文件的储存方式。简单说,它就是一个门牌系统,为储存设备划分门牌号,每个文件分配一个门牌,然后就能按照门牌找到文件。
没有文件系统的硬盘,就是一块荒地。如果有人住在那里,你只能说那里有人住,精确位置你说不出来。只有划分了路牌,你才能说出,这个人住在"人民路15号",这样才能精确定位。文件系统就是路牌的划分方法。
储存设备都需要指定文件系统,计算机才能读写。所谓"格式化",就是为硬盘安装文件系统。不同的操作系统有不同的文件系统,Linux使用ext4,OSX使用HFS+,Windows使用NTFS,Solaris和Unix使用ZFS。如果计算机不认识某个文件系统,就会显示这块盘无法读写。2.Windows的文件系统
Windows里的文件系统主要有三种:FAT32、NTFS、exFAT。
FAT32是最老的文件系统,所有操作系统都支持,兼容性最好。但是,它是为32位计算机设计的,单个文件不能超过2的(32-1)次方个字节,也就是不能超过4GB,分区不能超过8TB。也就是为什么一些U盘无法一次性拷贝4G以上的大文件;
NTFS是Windows的默认文件系统,用来替换FAT32,Windows的系统盘只能使用这个文件系统;
exFAT可以看作是FAT32的64位升级版,ex就是extended的缩写,表示"扩展的FAT32",功能不如NTFS,但是解决了文件和分区的大小问题,最大分区可以到8PB;3.分区表
硬盘分区,是指一块硬盘上面,同时存在多个文件系统。
每个文件系统管理的区域,就称为一个分区(partition),比如一块100GB的硬盘,可以一半是NTFS分区,另一半是exFAT分区。
硬盘必须先分区,才能指定每个区的文件系统。分区大小、起始位置、结束位置、文件系统等信息,都储存在分区表里面。
分区表也分成两种所谓硬盘分区,就是指一块硬盘上面,同时存在多个文件系统。每个文件系统管理的区域,就称为一个分区(partition)。比如,一块 100 GB 的硬盘,可以一半是 NTFS 分区,另一半是 exFAT 分区。
硬盘必须先分区,才能指定每个区的文件系统。分区大小、起始位置、结束位置、文件系统等信息,都储存在分区表里面。
分区表也分成两种格式:MBR 和 GPT。前者是传统格式,兼容性好;后者更现代,功能更强大。一般来说,都推荐使用 GPT格式:MBR和GPT。前者是传统格式,兼容性好;后者更现代,功能更强大。一般来说,都推荐使用GPT。4.buildroot中提到的几种文件系统
- xfs:XFS最早针对IRIX操作系统开发,是一个高性能的日志型文件系统,能够在断电以及操作系统崩溃的情况下保证文件系统数据的一致性。它是一个64位的文件系统,后来进行开源并且移植到了Linux操作系统中。XFS引入分配组、B+树、extent等方法来改进海量高并发小文件场景下性能。
- btrfs:通常念成Butter FS,Better FS或B-treeFS,由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统。继ext3/4文件系统之后,比较强大的Linux文件系统,具有快照,内建磁盘阵列(RAID)支持,支持子卷等功能,允许在线调整文件系统大小。
- cramfs:一个压缩式的文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时侯,马上计算出该数据在cramfs中的位置,将其实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。
- romfs:一种简单的只读文件系统,主要是用来当做初始文件系统来使用的,在嵌入式linux或是uclinux中通常使用这中文件系统来作为引导系统的文件系统,甚至uclinux有时就直接把ROMFS作为其根文件系统,而不是将其作为系统启动中的过渡文件系统。
- squashfs:一个只读的文件系统,它可以将整个文件系统压缩在一起,存放在某个设备,某个分区或者普通的文件中。如果将其压缩到一个设备中,那么可以将其直接mount起来使用,而如果它仅仅是个文件的话,您可以将其当为一个loopback设备使用。
- f2fs:Flash-Friendly File System是一种闪存文件系统,主要由三星集团研发,适合Linux内核使用。此文件系统起初是为了NAND闪存的存储设备设计(诸如固态硬盘、eMMC和SD卡),这些设备广泛存在于自移动设备至服务器领域。
- jffs2:磁盘文件系统(ext2, FAT)设计运行在磁盘上,在运行在闪存上时,需要闪存转换层(Flash Translation Layer), 它的功能就是将底层的闪存模拟成一个具有512字节扇区大小的标准块设备(block device),从而模仿磁盘。这势必带来写操作性能的下降,更好的解决问题的方法就是实现一个特别针对闪存的文件系统,而JFFS2就是一个这样的文件系统。
- yaffs2:Yet Another Flash File System,是一种类似于JFFS/JFFS2的专门为Flash设计的嵌入式文件系统。与JFFS相比,它减少了一些功能, 因此速度更快、占用内存更少。
- ubifs:无序区块映像文件系统(Unsorted Block Image File System),一种用于固态硬盘存储设备的文件系统,它与LogFS相互竞争,是JFFS2的后继文件系统之一。UBIFS在设计与性能上均较YAFFS2、JFFS2更适合大容量的NAND flash。
5.其它提到名词解释
- cloop:cloop是一个Linux内核模块,支持压缩回环文件系统。有了它,您可以安装压缩文件系统,如块设备,并在访问时无缝解压缩其数据。
- cpio:cpio是一个非常古老的归档工具。已逐渐被tar替代,但是有些功能是tar不存在的。
参考资料:
exFAT 文件系统指南
如何选择文件系统:EXT4、Btrfs 和 XFS
深入理解ext4等Linux文件系统
JFFS2 文件系统及新特性介绍 - IBM
UBI文件系统详细介绍2.8 Bootloaders(引导程序)
Bootloaders ---> [ ] afboot-stm32 //STM32平台的一个非常小的引导加载程序 [ ] Barebox //Barebox引导程序,以前叫做U-Boot v2 [ ] grub2 //GRUB是一个多重引导加载程序 [ ] mxs-bootlets //适用于飞思卡尔iMX23/iMX28 SoC的Stage1引导加载程序 [ ] s500-bootloader //适用于Actions Semiconductor S500 SoC的第一级引导加载程序 [ ] ts4800-mbrboot //TS4800板的第一级引导加载程序 [*] U-Boot //U-boot Build system (Legacy) ---> //构建系统 [遗留] (mx6ull_14x14_evk) U-Boot board name //U-Boot单板名称 U-Boot Version (Custom Git repository) ---> //U-Boot版本 [自定义Git仓库] (https://git.dev.tencent.com/……) URL of custom repository //自定义仓库网址 ① (origin/master) Custom repository version //自定义仓库版本 () Custom U-Boot patches //自定义U-Boot补丁 [*] U-Boot needs dtc //U-Boot设备树可用 [ ] U-Boot needs pylibfdt //U-Boot Python libfdt库可用 [ ] U-Boot needs OpenSSL //U-Boot OpenSSL可用 [ ] U-Boot needs lzop //U-Boot lzop解压缩可用 U-Boot binary format ---> //U-Boot二进制文件格式 [ ] u-boot.ais //TI定义的格式,OMAP-L1系列处理器 [ ] u-boot.bin //常规二进制格式bin [ ] u-boot-dtb.bin //bin格式,包含设备树dtb [ ] u-boot-dtb.img //img格式,包含设备树dtb [ ] u-boot-dtb.imx //imx格式,包含设备树dtb [ ] u-boot.img //img格式,在bin格式上加入包含地址信息的头部 [*] u-boot.imx //imx格式,在bin格式上加入包含DRAM配置信息等的头部 [ ] u-boot-nand.bin //bin格式,适合nand [ ] u-boot.kwb (Marvell) //适用Marvell系列芯片 [ ] u-boot.elf //可执行和链接格式(executable and link format) [ ] u-boot.sb (Freescale i.MX28) //适用飞思卡尔i.MX28 [ ] u-boot.sd (Freescale i.MX28) //适用飞思卡尔i.MX28 [ ] u-boot.nand (Freescale i.MX28) //适用飞思卡尔i.MX28 [ ] Custom (specify below) //自定义[选定后在下面指定] [ ] Install U-Boot SPL binary image //安装SPL到U-Boot [ ] Environment image ---- //镜像环境 [ ] Generate a U-Boot boot script //生成U-Boot启动脚本
①:受限每行字数,该处完整链接为:
https://git.dev.tencent.com/weidongshan/imx6ull_uboot.git
;
2.9 Host utilities(主机工具)
Host utilities ---> [ ] host aespipe //AES加密或解密管道 [ ] host android-tools //包含fastboot和adb实用程序 [ ] host btrfs-progs //btrfs文件系统实用程序 [ ] host cargo //Rust编程语言的包管理器 [ ] host cbootimage //将BCT(引导配置表)镜像写入基于Tegra的设备的Flash中 [ ] host checkpolicy //SELinux编译器 [ ] host checksec //检查可执行文件的属性 [ ] host cmake //构建,测试和打包软件 [ ] host cramfs //生成和检查cramfs文件系统 [ ] host cryptsetup //操作dm-crypt和luks分区以进行磁盘加密 [ ] host dfu-util //下载固件并将其上传到通过USB连接的设备 [ ] host dos2unix //在CRLF和LF之间转换文本文件行结尾 -*- host dosfstools //创建和检查DOS FAT文件系统 -*- host dtc //设备树文件编译、反编译、查看 -*- host e2fsprogs //EXT2/3/4文件系统实现工具 [ ] host e2tools //读写、操作ext2/ext3文件系统中的文件 [ ] host f2fs-tools //用于Flash-Friendly File System的工具(F2FS) [ ] host faketime //伪造的系统时间到程序 [ ] host fwup //可编写脚本的嵌入式Linux固件更新创建者和运行者 [ ] host genext2fs //生成ext2文件系统作为普通(非root)用户 [*] host genimage //给定根文件系统树,生成多个文件系统和闪存映像的工具 [ ] host genpart //生成由命令行参数定义的16字节分区表条目 [ ] host gnupg //GNU Privacy Guard(GnuPG或GPG)加密软件 [ ] host gptfdisk //由gdisk和sgdisk程序组成的文本模式分区工具,用于全局唯一标识符(GUID)分区表(GPT)磁盘 [ ] host imx-mkimage //imx镜像制作工具 [ ] host imx-usb-loader //Freescale i.MX5x/6x/7x/8x和Vybrid SoC USB上下载和执行代码的工具 [ ] host jq //创建/编辑/合并/检查JSON文件 [ ] host jsmin //删除JavaScript文件中注释和不必要的空格 [ ] host lpc3250loader //LPC3250平台上加载/刻录程序 [ ] host lttng-babeltrace //跟踪读写库以及跟踪转换器的应用程序 [ ] host mfgtools //使用Freescale UTP协议通过USB将固件编程到i.MX板 [ ] host mkpasswd //随机密码生成工具 [ ] host mtd, jffs2 and ubi/ubifs tools //构建mtd、jffs2和ubi/ubifs工具 [*] host mtools //用于从Unix访问MS-DOS磁盘而不安装它们 [ ] host mxsldr //通过串行下载协议在Freescale i.MX23和i.MX28 SoC上下载和执行代码的工具 [ ] host omap-u-boot-utils //用于TI OMAP平台生成特定的U-Boot签名镜像文件等的工具 [ ] host openocd //OpenOCD-开源片上调试器 [ ] host opkg-utils //用于opkg包管理器的帮助程序脚本 [ ] host parted //GNU分区调整大小程序 [ ] host pkgconf //为开发框架配置编译器和链接器标志的程序 [ ] host pru-software-support //为某些TI处理器上的PRU单元提供了有用的标头和库,例如:AM3358 [ ] host pwgen //密码生成器 [ ] host python-cython //用于编写Python语言的C扩展的Cython编译器 [ ] host python-lxml //用于处理XML和HTML [ ] host python-six //Six是Python2和3兼容库,目的是编写兼容两个Python版本的Python代码 [ ] host python-xlrd //用于从Microsoft Excel电子表格文件中提取数据的库 [ ] host qemu //一个通用的开源机器模拟器和虚拟器 [ ] host raspberrypi-usbboot //用于Raspberry Pi通过USB启动 [ ] host rauc //用于生成由目标rauc服务处理的固件包 [ ] host rcw //供复位配置字(RCW)编译器,用于构建NXP QoriQ/LS PBL/RCW二进制文件 [ ] host rustc //Rust语言的编译器 [ ] host sam-ba //用于Atmel SAM3、SAM7和SAM9 Soc的编程 [ ] host squashfs //生成SquashFS文件系统的工具 [ ] host sunxi-tools //用于Allwinner A10(又名sun4i)和A13(又名sun5i)设备的工具 [ ] host swig //用于将C和C ++编写的程序与各种高级编程语言连接起来 [ ] host tegrarcm //用于在恢复模式下将代码发送到Tegra设备 [ ] host ti-cgt-pru //为某些TI处理器上的PRU单元提供代码生成工具,例如:AM3358 -*- host u-boot tools //用于Das U-Boot引导程序的配套工具 [ ] Flattened Image Tree (FIT) support //拼合镜像(FIT)支持 -*- host util-linux //各种有用/必要的Linux库和实用程序,像mkfs、mkswap、swapon、fdisk、mount,dmesg等 [ ] host utp_com //用于通过飞思卡尔的UTP协议向硬件发送命令(类似于MFGTools) [ ] host vboot utils //Chromium OS验证了启动实用程序 [ ] host xorriso //将符合POSIX标准的文件系统中的文件对象复制到Rock Ridge增强的ISO 9660文件系统中 [ ] host zip //zip压缩包解压和压缩 [ ] host zstd //快速无损压缩方式
2.10 Legacy config options(旧版配置选项)
一些陆续被移除buildroot的配置选项,忽略。
3.Buildroot目录结构
使用一个编译过imx6ull的buildroot,在此基础上分析目录结构。
执行dir -AFl --group-directories-first
可按先目录、后文件的顺序显示buildroot根目录的所有文件。在分析目录内容之前,先简单了解下
*.mk
和Config.in/Config.in.host
这两类文件,能加快后面分析、理解。
Config.in/Config.in.host
:包含配置信息,即执行make menuconfig
,出现选项内容,Config.in
用于目标,Config.in.host
用于主机;
*.mk
:根据前面的配置信息执行相应动作;arch/ //存放CPU架构相关的配置文件Config.in.arm、Config.in.x86等,以及架构相关的构建脚本 board/ //存放某个具体单板紧密相关的文件,比如内核配置文件、sd卡制作脚本、rootfs覆盖文件等 boot/ //存放各种Bootloaders相关的的补丁*.patch、校验文件*.hash、构建脚本*.mk、配置选项Config.in configs/ //存放各个单板的buildroot配置文件 dl/ //存放所有下载的程序、源码压缩包、补丁等 docs/ //存放PDF、HTML格式的buildroot详细说明 fs/ //存放各种文件系统的构建脚本*.mk和配置选项Config.in linux/ //存放Linux的构建脚本*.mk和配置选项Config.in output/ //存放编译后的各种文件,包括所有软件的解压、编译后的现场、交叉编译工具链、生成的内核、根文件系统镜像等 package/ //存放所有软件包的构建脚本*.mk、配置选项Config.in,以及软件下载、解压、编译的构建脚本pkg-*.mk support/ //存放一些为bulidroot提供功能支持的脚本、配置文件 system/ //存放制作根文件系统的配置文件,设备节点的模块等 toolchain/ //存放制作各种交叉编译工具链的构建脚本*.mk和配置选项Config.in utils/ //存放一些buildroot的实用脚本和工具 CHANGES //buildroot修改日志 .config //make menuconfig后生成的最终配置文件 Config.in //所有Config.in的入口,也是Build options的提供者 Config.in.legacy //Legacy config options的提供者 .config.old //上次buildroot的备份,执行make oldconfig将.config.old替换.config COPYING //buildroot版权信息 DEVELOPERS //开发人员列表,N后面是开发人员名字,F后面是开发的软件 Makefile //顶层Makefile Makefile.legacy //旧的Makefile,为了支持向后兼容 README //buildroot简单说明
打开
Config.in
,可以看到如下内容:
source "arch/Config.in" menu "Build options" menu "Commands" config BR2_WGET string "Wget command" default "wget --passive-ftp -nd -t 3" …… //省略Build options部分内容 source "toolchain/Config.in" source "system/Config.in" source "linux/Config.in" source "package/Config.in" source "fs/Config.in" source "boot/Config.in" source "package/Config.in.host" source "Config.in.legacy" source "$BR2_BUILD_DIR/.br2-external.in"
结合执行
make menuconfi
显示的一级菜单,可以发现本Config.in
串联起了所有Config.in
,在用户配置完后,生成.config
,.*mk
就根据.config
的配置内容,进行对应的构建。
配置选项 文件路径 Target options arch/Config.in Build options ./Config.in Toolchain toolchain/Config.in System configuration system/Config.in Kernel linux/Config.in Target packages package/Config.in Filesystem images fs/Config.in Bootloaders boot/Config.in Host utilities package/Config.in.host Legacy config options ./Config.in.legacy 以上目录中,有几个需要详细说明下,下面开始分析。
3.1 board目录
在
The Buildroot user manual
的9.1. Recommended directory structure
章节,有该目录的推荐结构。
根据手册内容,在该目录下创建自定义文件。
①:在board/
目录下新建hceng/
(自定义公司名),再在hceng/
下创建imx6ull/
(单板名);
②:在imx6ull/
下,应存放uboot、linux、busybox等的配置文件,在分别设置好BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE
、BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE
、BR2_PACKAGE_BUSYBOX_CONFIG
后,如果修改了配置,分别执行make uboot-update-defconfig
、make linux-update-defconfig
、make busybox-update-config
可以更新该目录下的配置文件。这里的uboot、linux是通过git下载,选择的自带的配置文件,BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE
、BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE
也就没有指定,因此没采用把配置文件放在该目录的方法。busybox使用默认配置文件路径package/busybox/busybox.config
,也没有移动处理。
③:除配置文件,还应放sd卡制作脚本等,参考board/freescale/common/imx/
和board/freescale/imx6ulevk/
目录,将前面提到用于sd卡制作的genimage.cfg.template
和post-image.sh
复制到本目录下;最后,在System configuration
->Custom scripts to run after creating filesystem images
设置脚本路径board/hceng/imx6ull/post-image.sh
;
④:除了配置文件、sd卡制作脚本,该目录还要存放根文件系统覆盖文件,新建目录rootfs_overlay/
,里面可以创建/etc/init.d/S01xx
,用于放置开机启动脚本。最后,在System configuration
->Root filesystem overlay directories
设置覆盖文件路径board/hceng/imx6ull/rootfs_overlay
;
⑤:除此之外,还可以放各类patches/
补丁文件,并在配置文件指定路径;可以看出,
board/
就是存放某个具体单板紧密相关的文件,比如内核配置文件、sd卡制作脚本、rootfs覆盖文件等,设置后的目录结构如下:{% codeblock %}
board/
└── hceng
└── imx6ull
├── genimage.cfg.template
├── post-image.sh
└── rootfs_overlay
└── etc
├── init.d
└── S01xx
{% endcodeblock %}3.2 output目录
output
目录下有以下几个目录:
build
:存放着解压后的各种软件包编译完后的现场;
graphs
:执行make graph-build
等命令后,生成的相关图形化文档;
host
:制作好的交叉编译工具链;
images
:各种最终生成的镜像;
staging
:包含了根文件系统的层次结构,编译生成的所有头文件和库,以及其他开发文件,体积较大;
target
:已经rootfs_overlay/
处理过的根文件系统,但没有创建/dev/
下的设备节点;3.3 package目录
package
目录是存放所有软件包构建脚本*.mk、配置选项Config.in的目录,这里添加一个自定义APP,来理解实现原理。①:在
package/
目录下,创建一个hceng_app
目录;
②:在hceng_app/
目录下,创建文件Config.in
和hceng_app.mk
,注意*.mk
的文件名不能乱取,只能是app名字,且为小写;
Config.in
的内容如下:config BR2_PACKAGE_HCENG_APP bool "hceng_app" This is a demo to add local app.
这里的配置变量
BR2_PACKAGE_HCENG_APP
不能乱取,只能是BR2_PACKAGE_
+APP
名字大写;
bool是变量的类型,选中为ture编译,不选中为false不编译,与Linux Kernel的Kconfig文件规则是一样的;
help是在配置界面,按下h
出现的帮助提示信息;
hceng_app.mk
的内容如下:
################################################################################ # hceng_app ################################################################################ # HCENG_APP_VERSION = 1.0.0 # HCENG_APP_SITE_METHOD = local # HCENG_APP_SITE = $(CURDIR)/dl/hceng_app HCENG_APP_VERSION = master HCENG_APP_SITE_METHOD = git HCENG_APP_SITE = $(call github,hceng,hceng_app,$(HCENG_APP_VERSION)) HCENG_APP_ALWAYS_BUILD = YES HCENG_APP_INSTALL_TARGET = YES HCENG_APP_CFLAGS = HCENG_APP_LDFLAGS = OUT_BIN = hceng_app HCENG_APP_MAKE_FLAGS += \ CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" \ CC=$(TARGET_CC) \ OUT_BIN=$(OUT_BIN) \ AR=$(TARGET_AR) \ STRIP=$(TARGET_STRIP) \ CFLAGS=$(HCENG_APP_CFLAGS) \ LDFLAGS=$(HCENG_APP_LDFLAGS) \ STAGING_DIR=$(STAGING_DIR) \ TARGET_DIR=$(TARGET_DIR) define HCENG_APP_BUILD_CMDS #$(MAKE) clean -C $(@D) $(MAKE) $(HCENG_APP_MAKE_FLAGS) -C $(@D) endef define HCENG_APP_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(@D)/$(OUT_BIN) $(TARGET_DIR)/usr/bin endef $(eval $(generic-package))
需要注意的几点:
Ⅰ.严格按照示例的格式,1-5行的样式不能省略,第3行为app名字;
Ⅱ.7-8行和11-13行,为获取app的两种方式,二选一即可。7-8行是本地获取,需要提前将app文件放在HCENG_APP_SITE
指定的路径,这里为dl/hceng_app
;11-13行是git获取,需要提前将app文件放到git仓库,注意HCENG_APP_SITE
的格式,它会调用package/pkg-download.mk
,三个参数依次为用户名、包名、版本号;
Ⅲ.HCENG_APP_BUILD_CMDS
是构建过程,给应用源码的Makefile传递编译、链接参数,并调用应用源码的Makefile执行;
Ⅳ.HCENG_APP_INSTALL_TARGET_CMDS
是编译完成后,自动安装到指定目录;③:在
package/Config.ini
中添加:
menu "Private package" source "package/hceng_app/Config.in" endmenu
新创建了一个菜单
Private package
,显示的配置文件为前面创建的package/hceng_app/Config.in
;④:创建app程序和Makefile
APP参考:
#include <stdio.h> void main(void) printf("Hello world.\n");
Makefile参考:
OBJS = hceng_app.o CC = $(CROSS_COMPILE)gcc OUT_BIN = hceng_app dep_file = .$@.d all: $(OBJS) $(CC) $(LDFLAGS) -g -o $(OUT_BIN) $^ %.o: %.c $(CC) $(CFLAGS) -Wp,-MD,$(dep_file) -c -o $@ $< clean: rm -rf *.o rm -rf $(OUT_BIN) rm -f $(shell find -name "*.d")
根据自己需求,将这两个文件放在本地(hceng_app.mk指定的路径)或者git仓库。
⑤:编译
执行make menuconfig
,勾选上自定义APPTarget packages ---> Private package ---> [*] hceng_app
;
然后执行make hceng_app
或make all
,将编译和安装自定义APP,可以在output/target/usr/bin/
下看到安装的自定义APP,最后重新烧写系统,即可使用自定义APP。
4.buildroot常用命令
在buildroot根目录执行
make help
,即可获得buildroot常用命令的提示信息,内容如下:Cleaning: - 清理 make clean - 删除编译产生的文件 make distclean - 删除所有非源码文件—(包括.config) Build: - 编译 make all - 编译所有 make toolchain - 编译工具链 make sdk - 编译sdk(Software Development Kit) Configuration: - 配置 make menuconfig - 基于curses的buildroot配置界面(常用) make nconfig - 基于ncursesbuildroot配置界面 make xconfig - 基于Qt的buildroot配置界面 make gconfig - 基于GTK的buildroot配置界面 make oldconfig - 解决所有.config中未解决的符号问题(symbols) make syncconfig - 和oldconfig类似,但会额外更新依赖 make olddefconfig - 和syncconfig类似,但会将新的symbols设为默认值 make randconfig - 所有选项随机配置 make defconfig - 所有选项都询问,如果设置有BR2_DEFCONFIG,则使用它的配置 make savedefconfig - 把当前配置保存到BR2_DEFCONFIG make update-defconfig - 类似savedefconfig make allyesconfig - 所有配置选项都选择yes make allnoconfig - 所有配置选项都选择no make alldefconfig - 所有配置选项都选择default make randpackageconfig - 软件包选项都选择随机 make allyespackageconfig - 软件包选项都选择yes make allnopackageconfig - 软件包选项都选择no Package-specific: - 具体的包操作 make <pkg> - 编译、安装该pkg以及其依赖 make <pkg>-source - 下载该pkg所有文件 make <pkg>-extract - 解压该pkg(解压后放在output/build/pkg名字目录下) make <pkg>-patch - 给该pkg打补丁 make <pkg>-depends - 编译pkg的依赖 make <pkg>-configure - 编译pkg到配置这一步 make <pkg>-build - 编译pkg到构造这一步 make <pkg>-show-depends - 显示该pkg的所有依赖 make <pkg>-show-rdepends - 显示依赖该pkg的所有包 make <pkg>-show-recursive-depends - 递归显示该pkg的所有依赖 make <pkg>-show-recursive-rdepends - 递归显示依赖该pkg的所有包 make <pkg>-graph-depends - 图形化显示该pkg的所有依赖 make <pkg>-graph-rdepends - 图形化显示依赖该pkg的所有包 make <pkg>-dirclean - 清除该pkg目录(清除解压目录output/build/pkg名字) make <pkg>-reconfigure - 从配置这一步开始重新编译pkg make <pkg>-rebuild - 从构造这一步开始重新编译pkg busybox: - busybox相关 make busybox-menuconfig - 配置busybox界面 uclibc: - uclibc相关 make uclibc-menuconfig - 配置uclibc界面 linux: - linux相关 make linux-menuconfig - 配置linux内核界面 make linux-savedefconfig - 保存linux内核配置 make linux-update-defconfig - 保存配置到BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE指定路径 Documentation: - 文档 make manual - 生成各种格式的帮助手册 make manual-html - 生成HTML格式的帮助手册 make manual-split-html - 生成split HTML格式的帮助手册 make manual-pdf - 生成PDF格式的帮助手册 make manual-text - 生成text格式的帮助手册 make manual-epub - 生成ePub格式的帮助手册 make graph-build - 生成图形化查看编译时间文件 make graph-depends - 生成图形化查看所有依赖文件 make graph-size - 生成图形化查看文件系统大小文件 make list-defconfigs - 显示拥有的默认配置的单板列表 Miscellaneous: - 杂项 make source - 下载所有要离线编译的源码到dl路径 make external-deps - 列出使用的所有外部包(make show-targets的详细版) make legal-info - 显示所有包的license合规性 make printvars - 打印所有内部指定的变量值 make V=0|1 - 设置编译打印信息(0:安装编译 1:打印编译信息) make O=dir - 指定所有文件(包括.config)输出目录
5.构建示例
5.1准备buildroot
以stm32mp157为例(ST首款运行Linux的处理器),展示如何使用buildroot来构建系统的思路。
开发板使用的是米尔科技生产的MYC-YA157C。在开始之前,思考从哪里获取支持MYC-YA157C的buildroot。
①.开发板厂家提供
购买了某个开发板厂家的开发板,看其提供的资料有没有buildroot,如果有,请无脑直接使用开发板厂家的,能够为你剩下一大堆时间去做其它的。
如果开发板厂家没有提供,比如米尔提供的是Yocto构建系统,目前没有buildroot,继续参考下面的方法。②.buildroot官网
如果使用的是芯片原厂的公版/比较火的开发板,很可能buildroot有原生支持。
但buildroot不可能对某个开发板一直维护,因此每个开发板都有生命周期,比如firefly-rk3288开发板,在2016.02加入buildroot,2018.03被移除不再维护,因此我们如果要使用现成的配置文件,就得下载2016.02至2018.03这个时间段之间的buildroot。
可以通过查询buildroot的log msg来获取这些变化信息。我手里这款目前来看,buildroot原生支持没戏。
③.Github搜索
作为全球最大的“同性交友”网站,可以去搜搜板子名字,看是否有类似的buildroot仓库,有的话clone下来验证试试。
我手里这款还没批量开卖,Github自然没有。找了一圈,目前应该没有直接支持MYC-YA157C的buildroot,因此需要自己尝试添加该开发板。
添加开发板也不是从头开始添加,先尝试找找类似的板子,节约配置时间。
在GitHub上,找到一个支持stm32mp157的仓库,在buildroot官网的log msg也搜到了在2019.08添加了stm32mp157_dk
的配置文件(STM32MP157C-DK是STM32的原厂公板),到目前也没被移除。
这里准备在官方最新buildroot,添加MYC-YA157C单板。5.2准备交叉编译工具链、U-boot、Linux Kernel
①.交叉编译工具链
可以使用开发板厂家提供资料的交叉编译工具链,也可以尝试使用stm32mp157_dk
的配置文件所使用的交叉编译工具链。②.U-boot、Linux Kernel
建议直接使用开发板厂家所提供U-boot、Linux Kernel。
如果主线U-boot、Linux Kernel有对MYC-YA157C的原生支持,或者知道MYC-YA157C和STM32MP157C-DK2公版的差异且能移植,才考虑用其它的U-boot、Linux Kernel。
本文主要是分析buildroot,对U-boot、Linux Kernel的移植不深究,因此这里直接使用开发板厂家所提供U-boot、Linux Kernel。找到开发板厂家所提供U-boot,创建个
uboot-stm32mp
目录,将U-boot源码放在里面,压缩为uboot-stm32mp.tar.gz
,同时,根据提供的文档,得知U-boot配置文件为stm32mp15_basic_defconfig
。
同理,对提供的Linux Kernel进行类似操作,得到linux-stm32mp.tar.gz
,得知内核配置文件为multi_v7_defconfig
,设备树文件为stm32mp157c-myir.dts
。
注意,源码解压出来一定要有个总文件夹包含源码,不能解压后当前目录就是源码,不然后面buildroot使用时会出错。5.3设置buildroot
①.下载官方buildroot,使用公板配置文件
获取主线buildroot:
hceng@machine:~/buildroot$ git clone git://git.buildroot.net/buildroot hceng@machine:~/buildroot$ git pull
查询公板的配置文件:
hceng@machine:~/buildroot$ ls configs/*stm32mp157* configs/stm32mp157_dk_defconfig hceng@machine:~/buildroot$ make list-defconfigs | grep "stm32mp157" stm32mp157_dk_defconfig - Build for stm32mp157_dk
使用公板的配置文件:
make stm32mp157_dk_defconfig
②.按需修改配置
执行make menuconfig
进入配置界面,挨个进行修改。
Target options --->
和CPU紧密相关,这里和公板使用的同一CPU,这里就不需要修改。
Build options --->
修改新配置文件保存路径和名字:
原:(/work/buildroot/configs/stm32mp157_dk_defconfig)) Location to save buildroot config 新:(/work/buildroot/configs/stm32mp157_myir_defconfig)) Location to save buildroot config
Toolchain --->
交叉编译工具链可以考虑是开发板厂家提供的,这里先暂时使用公板配置文件的,后面编译如果出了问题再回来修改。
System configuration --->
设置根文件系统目录要覆盖/添加的文件路径:
原:(board/stmicroelectronics/stm32mp157-dk/overlay/)) Root filesystem overlay directories 新:(board/stmicroelectronics/stm32mp157-myir/overlay/)) Root filesystem overlay directories
注:配置中出现的新目录/文件,后面统一再创建。
设置制作SD卡启动的脚本配置信息路径:
原:(-c board/stmicroelectronics/stm32mp157-dk/genimage.cfg) Extra arguments passed to custom scripts 新:(-c board/stmicroelectronics/stm32mp157-myir/genimage.cfg) Extra arguments passed to custom scripts
Kernel --->
内核的来源可以有多种,比如从kernel官网自动下载,从自定义github仓库下载,或者使用本地内核包。
这里选择本地包的方式,以及设置对应的内核配置文件:
原: Kernel version (Custom tarball) ---> ($(call github,STMicroelectronics,linux,v4.19-stm32mp-r1.5)/linux-v4.19-stm32mp-r1.5.tar) URL of custom kernel tarball () Custom kernel patches Kernel configuration (Using a custom (def)config file) ---> (board/stmicroelectronics/stm32mp157-dk/linux.config) Configuration file path 新: Kernel version (Custom tarball) ---> (dl/linux/linux-stm32mp.tar.gz)/linux-v4.19-stm32mp-r1.5.tar () Custom kernel patches Kernel configuration (Using an in-tree defconfig file) ---> (multi_v7) Defconfig name
以及选择对应设备树文件:
原:(stm32mp157c-dk2) In-tree Device Tree Source file names 新:(stm32mp157c-myir) In-tree Device Tree Source file names
Target packages --->
软件包根据需求添加,这里保持默认即可。
Filesystem images --->
根文件系统看了下,也没啥需要特殊修改的,保持默认。
Bootloaders --->
U-boot也是有多种来源方式,这里选择本地包的方式:原: U-Boot Version (Custom version) ---> ($(call github,STMicroelectronics,u-boot,v4.19-stm32mp-r1.5)/linux-v4.19-stm32mp-r1.5.tar.gz) URL of custom kernel tarball () Custom U-Boot patches U-Boot configuration (Using an in-tree board defconfig file) ---> (stm32mp15_basic) Board defconfig (board/stmicroelectronics/stm32mp157-dk/uboot-fragment.config) Additional configuration fragment files 新: U-Boot Version (Custom tarball) ---> (dl/uboot/uboot-stm32mp.tar.gz) URL of custom U-Boot tarball () Custom U-Boot patches U-Boot configuration (Using an in-tree board defconfig file) ---> (stm32mp15_basic) Board defconfig () Additional configuration fragment files
Host utilities --->
一般保持默认,编译过程中遇到主机缺什么,再来勾选上。
Legacy config options
不用看。最后,保存,退出,执行
make savedefconfig
将会生成configs/stm32mp157_myir_defconfig
。使用公板的配置文件后,很多配置就可以默认即可,主要关注的是
Toolchain
、Kernel
、Bootloaders
。③.为配置准备文件
前面对配置做了一系列修改,新增了不少目录和文件,接下来要依次添加。
- 准备board目录的单板紧密相关的文件
参考stm32mp157-dk/
目录,生成自己板子目录:cp board/stmicroelectronics/stm32mp157-dk/ board/stmicroelectronics/stm32mp157-myir/ -r
修改
label stm32mp15-buildroot kernel /boot/zImage devicetree /boot/stm32mp157c-dk2.dtb append root=/dev/mmcblk0p4 rootwait label stm32mp15-buildroot kernel /boot/zImage devicetree /boot/stm32mp157c-myir.dtb append root=/dev/mmcblk0p4 rootwaitoverlay/boot/extlinux/extlinux.conf
:在生成根文件系统时,
board/stmicroelectronics/stm32mp157-myir/overlay/boot/extlinux/extlinux.conf
将会添加到根文件系统的/boot/extlinux/
下,U-boot在启动内核前,会读取extlinux.conf
文件,得知内核、设备树所在路径。
- 准备U-boot和Linux Kernel
mkdir dl/uboot/ cp uboot-stm32mp.tar.gz dl/uboot/ mkdir dl/linux/ cp linux-stm32mp.tar.gz dl/linux/
5.4 编译、烧写
执行
make all
,编译完后,将在output/images/
生成以下文件:rootfs.ext2 rootfs.ext4 sdcard.img stm32mp157c-myir.dtb u-boot.img u-boot-spl.stm32 zImage
随后将SD卡接入Linux主机,将
sdcard.img
写入SD卡(/dev/sdb):
sudo dd if=output/images/sdcard.img of=/dev/sdb
写入完成后,将SD卡插入板子上,启动开关选择SD卡启动,上电即可看到打印输出:
6.使用技巧
- ①.添加启动脚本
很多时候,需要系统启动后自动运行一些程序,这就需要添加启动脚本。在前面的
board/stmicroelectronics/stm32mp157-myir/
下有个overlay
目录,就是切入点。
可以利用overlay
会覆盖根文件系统相关目录的特性,加上初始化系统方案采用systemV
来实现。在
overlay
里创建个etc/init.d
目录,再在目录里创建S35app
之类的文件,开机后即会自动运行该脚本。
- ②.调整根文件系统大小
在前面示例里,Filesystem images ---> (120M) exact size
,即根文件系统空间设置的120MB,使用一个8G的SD卡烧写后启动,执行df -h
看到整个根文件系统也只是120MB,无法扩展。
如果改为Filesystem images ---> (4096M) exact size
,生成的sdcard.img文件也将是4G,烧写会非常的慢。一个可行的方案:
开发板:fl2440(s3c2440处理器) 一:Buildroot: buildroot是一组makefile和补丁,可简化并且自动化构建嵌入式系统环境的过程,也就是可以用它来制作交叉编译器、根文件系统,把u-boot、linux kernel集成到buildroot中一起编译。 二、软件准 命令行正常显示当前路径 三、开发环境 Linux Ubuntu4.15.0-65-generic +buildroot-2023.02.3 + i.mx6d(cortex-A9) 四、实现步骤 1、打开编辑 /etc/profile,启动配置 2、追加 PS1='\u@\... (2)bsp一般是芯片厂家/板卡厂家提供的。 1.2 X210的linux+QT bsp整体介绍 (1)tslib_x210_qtopia.tgz是用来支持QT的触摸屏操作的应用层库 我们对qt_x210v3s_160307.tar.bz2进行解压,得到 (2)xboot和uboot是X210支持的2个bootloader
设置exact size
任然为120MB,修改board/stmicroelectronics/stm32mp157-myir/genimage.cfg
,将rootfs
分区的size
改为4096M
。
这样生成的sdcard.img文件大小不会变太大,进入系统后,执行resize2fs /dev/mmcblk0p4
(rootfs在SD卡第4分区),即可看到系统空间变为了4G。
再将resize2fs /dev/mmcblk0p4
命令添加到启动脚本里,通过一定的判断,在首次进入系统时执行扩容即可。
另外,如果提示没有resize2fs
命令,在Target packages --->Filesystem and flash utilities --->[*] e2fsprogs --->[*] resize2fs
勾选上即可。文章目录参考前言制作根文件系统讲解buildroot构建根文件系统的原理讲解uClibc与glibc的差异使用buildroot制作自己需要的文件系统烧录自己制作的根文件系统 制作根文件系统 制作buildroot根文件系统(一):根文件系统和Qt5例程 制作buildroot根文件系统(二):使用tinyalsa播放音频 制作buildroot根文件系统(三):使用mplayer播放视频 制作根文件系统 在介绍制作文件系统之前,我们先来看一下Linux是如何存储数据的。一Cython是一种将Python代码转换成C/C++代码的工具。通过使用Cython,可以将Python代码编译成原生的机器码,从而提高代码的执行效率。在使用Buildroot构建嵌入式Linux系统时,Cython可以作为一个工具被集成到Buildroot框架中,用于编译和构建Cython相关的代码和模块。然而,需要注意的是,Buildroot本身并不直接支持Cython,因此在使用Buildroot时,需要手动添加Cython的支持,例如通过将Cython编译器添加到Buildroot的package列表中,并配置相应的构建选项。具体的操作步骤可以参考Buildroot的文档或者官方网站上的相关内容来进行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Buildroot笔记](https://blog.csdn.net/hceng_linux/article/details/103159220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Buildroot开发使用](https://download.csdn.net/download/wdl2545355/81874147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
飞奔的生姜 · 廖娟(中国四川籍女演员)_百度百科 1 年前 |