buildroot

什么是buildroot

Buildroot是Linux平台上一个开源的嵌入式Linux系统自动构建框架

Buildroot是一个Makefiles和patches的命令集,它可以非常简单的为你的目标系统产生一个交叉编译工具链和根文件系统,整个创建过程就如同编译Linux内核一般。

下载buildroot

Buildroot版本每2个月,2月,5月,8月和11月发布一次。版本号的格式为YYYY.MM,例如2013.02、2014.08。

可以从http://buildroot.org/downloads/获得发行包。

也可通过github仓库获取:

git clone git://git.busybox.net/buildroot

buildroot目录结构

解压buildroot源码目录如下:

  • arch: CPU架构相关的配置脚本

  • board: 在构建系统时,board默认的boot和Linux kernel配置文件,以及一些板级相关脚本

  • boot: uboot配置脚本目录

  • configs: 板级配置文件,该目录下的配置文件记录着该机器平台或者方案使用的工具链,boot, kernel,各种应用软件包的配置

  • dl: download的简写,下载一些开源包。第一次下载后,下次就不会再去从官网下载了,而是从dl/目录下拿开源包,以节约时间

  • docs:

  • fs: 各种文件系统的自动构建脚本

  • linux: 存放Linux kernel的自动构建脚本

  • package: 第三方开源包的自动编译构建脚本,用来配置编译dl目录下载的开源包

  • support:

  • system: 存放文件系统目录的和设备节点的模板,这些模板会被拷贝到output/目录下,用于制作根文件系统rootfs

  • toolchain/ 目录中存放着各种制作工具链的脚本

编译出的output输出目录介绍:

  • images/存储所有映像(内核映像,引导加载程序和根文件系统映像)的位置。这些是您需要放在目标系统上的文件。

  • build/构建所有组件的位置(包括主机上Buildroot所需的工具和针对目标编译的软件包)。该目录为每个组件包含一个子目录。

  • host/包含为主机构建的工具和目标工具链。

  • staging/是到内部目标工具链host/的符号链接

  • target/它几乎包含了目标的完整根文件系统。除了设备文件/dev/(Buildroot无法创建它们,因为Buildroot不能以root身份运行并且不想以root身份运行)之外,所需的一切都存在。

具体的build训练教程点击如下链接. buildroot官方训练教程

开始使用

使用make menuconfigs开始配置要编译的目标。

终端下的GUI menu显示需要ncurses库的支持,若make menuconfigs执行失败则手动安装libncurses-dev包依赖即可。

配置完毕会在buildroot根目录下生成.config文件。

此后执行make即可。

使用make命令之后会执行下面几个步骤:

  1. 下载源文件(所要求的)

  2. 配置,编译和安装cross-compiling toolchain(如果使用内部工具链),或者输出一个toolchain(如果一个外部工具链使用)

  3. 构建/安装杯选择的目标包

  4. 构建内核镜像(如果有选择)

  5. 构建启动代码镜像(如果有选择)

  6. 创建根文件系统(如果有选择)