Buildroot
来自百问网嵌入式Linux wiki
什么是buildroot
Buildroot是Linux平台上一个构建嵌入式Linux系统的框架。整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(包含boot、kernel、rootfs以及rootfs中的各种库和应用程序)。
buildroot功能详解
buildroot版本为2018.02LTS版 官网使用手册 https://buildroot.org/downloads/manual/manual.html
-
TargetOptions
- 目标单板架构配置
-
BuildOptions
- 主要是一些编译时用到的选项,比如dl的路径,下载代码包使用的路径,同时运行多个编译的上限,是否使能编译器缓冲区等等,这里按照默认就行了.
-
Toolchain
- 此页面主要介绍如何使用buildroot配置内部交叉编译工具链,以及外部交叉编译工具链,还有如何添加自己的交叉编译工具链!
-
SystemConfiguration
- 此页主要涉及配置系统主机名,登陆欢迎信息root密码,以及构建系统镜像版本,根文件系统覆盖!
-
Kernel
- 此页面主要介绍在线下载内核源码并自动编译集成到根文件系统的方法!
-
TargetPackages
- 此页主要介绍目标开发板上使用的根文件系统所需要的软件包的添加方法,以及配置方法!
-
FilesystemImages
- 此页介绍如何使用buildroot自动根据系统分区生成相应的系统镜像!
-
Bootloaders
- 此页主要介绍在线下载u-boot源码,编译并生成相应的镜像文件到指定位置!
-
HostUtilities
- LegacyConfigOptions
目录结构
- buildroot/package/:下面放着应用软件的配置文件,每个应用软件的配置文件有Config.in和soft_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