Buildroot

来自百问网嵌入式Linux wiki

buildroot简介

Buildroot是Linux平台上一个构建嵌入式Linux系统的框架。整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。
你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(包含boot、kernel、rootfs以及rootfs中的各种库和应用程序)。
如何使用make menuconfig 请参考Menuconfig_or_how_to_configure_kernel
官网使用手册 https://buildroot.org/downloads/manual/manual.html

buildroot功能详解

目标单板架构配置。
主要是一些编译时用到的选项,比如dl的路径,下载代码包使用的路径,同时运行多个编译的上限,是否使能编译器缓冲区等等,这里按照默认就行了.
此页面主要介绍如何使用buildroot配置内部交叉编译工具链,以及外部交叉编译工具链,还有如何添加自己的交叉编译工具链!
此页主要涉及配置系统主机名,登陆欢迎信息root密码,以及构建系统镜像版本,根文件系统覆盖!
此页面主要介绍在线下载内核源码并自动编译集成到根文件系统的方法!
此页主要介绍目标开发板上使用的根文件系统所需要的软件包的添加方法,以及配置方法!
此页主要介绍buildtroot支持的音频和视频应用功能介绍以及如何配置使用
此页主要介绍buildtroot支持的压缩和解压应用简介以及如何配置使用
此页面主要介绍buildroot 调试、分析和基准测试应用的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的开发工具应用的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的文件系统和闪存实用程序的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的字体,游标,图标,声音和主题的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的游戏 以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的图形库和应用程序(图形/文本)的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的硬件处理应用/工具的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的编程语言和脚本的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的库的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的邮箱应用的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的一些杂项应用的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的网络应用程序的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的 包管理 应用的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的 实时时钟 的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的 实时时钟 的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的 Shell和程序 的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的 系统工具 的简介以及如何配置使用。
此页面主要介绍buildroot支持在目标系统上的 文版编辑和浏览工具 的简介以及如何配置使用。
此页介绍如何使用buildroot自动根据系统分区生成相应的系统镜像!
此页主要介绍在线下载u-boot源码,编译并生成相应的镜像文件到指定位置!

目录结构

  • buildroot/package/:下面放着应用软件的配置文件,每个应用软件的配置文件有Config.insoft_name.mk,其中soft_name.mk(这种其实就Makefile脚本的自动构建脚本)文件可以去下载应用软件的包。
  • buildroot/output/:是编译出来的输出文件夹,里面的build/目录存放着解压后的各种软件包编译完后的现场。
    • build:所有源码包解压出来的文件存放地和编译的发生地
    • staging:软链接到 host/<tuple>/sysroot 就是上面说到的文件系统需要的库等目录,方便查看
    • target: 目录是用来制作rootfs的,里面放着Linux系统基本的目录结构,以及各种编译好的应用库和bin可执行文件。不能用来nfs mount到开发板,因为buildroot不是root权权运行的,所以现dev/,etc/等一些文件无法创建,所以目录还不完整,要用images/里的rootfs.tar解压出来的根文件目录才能mount.使用如下命令:sudo tar -C /destination/of/extraction -xf images/rootfs.tar
    • Images:目录下就是最终生成的可烧写到板子上的各种image。
    • host:是由各类源码编译后在你主机上运行的工具(build for host)的安装目录,如arm-linux-gcc就是安装在这里;编译出来的主机工具在host/usr下;根目录所需要的库及一些基本目录就在host/<tuple>/sysroot/host/usr/<tuple>/sysroot/里 (<tuple>:arm-buildroot-linux-gnueabi),如果是外部toolchain,比如lirano的就在libc里,名字不一样而已
  • buildroot/dl:存放下载的源码包及应用软件的压缩包
  • buildroot/fs:放各种文件系统的源代码
  • buildroot/fs/skeleton:放生成文件系统镜像的地方,及板子里面的系统
  • buildroot/linux:存放着Linux kernel的自动构建脚本。
  • buildroot/configs:放置开发板的一些配置参数
  • buildroot/dl:目录存放从官网上下载的开源软件包,第一次下载后,下次就不会再去从官网下载了,而是从dl/目录下拿开源包,以节约时间。本身下载通常都是很慢的,你可以手动找到相关包下载后放到这里就OK了,make时会自动检测这个目录.
  • buildroot/docs:存放相关的参考文档。
  • buildroot/arch:目录存放CPU架构相关的配置脚本,如arm/mips/x86 ,这些CPU相关的配置,在制作工具链,编译boot和内核时很关键。
  • buildroot/board:存放了一些默认开发板的配置补丁之类的
  • buildroot/boot:
  • buildroot/build:
  • buildroot/support:
  • buildroot/system:这里就是根目录的主要骨架了和相关的启动初始化配置,当制作根目录时就是将此处的文件cp到output里去.然后再安装toolchain的动态库和你勾选的package的可执行文件之类的.
  • buildroot/toolchain:

buidroot常用命令

Linux内核操作的常用命令

  • buildroot下单独编译内核
book@100ask:~/Buildroot$ make  linux-rebuild
  • 运行内核make menuconfig配置选项界面
 book@100ask:~/Buildroot$ make linux-menuconfig   
  • 保存内核最新的配置文件
 book@100ask:~/Buildroot$ make linux-savedefconfig   
  • 更新内核配置文件
 book@100ask:~/Buildroot$ make linux-update-defconfig

其它常用操作

  • buildroot下编译生成sdk
book@100ask:~/Buildroot$ make sdk
  • buildroot下编译时显示详细信息
book@100ask:~/Buildroot$ make V=1 <pkg>
  • buildroot下编译时显示详细信息
book@100ask:~/Buildroot$ make V=1 <pkg>
  • buildroot下单独编译u-boot
book@100ask:~/Buildroot$ make uboot-rebuild
  • buildroot下单独编译某个软件包
book@100ask:~/Buildroot$ make <pkg>-rebuild