buildroot构建嵌入式系统

1、什么是buildroot

Buildroot 是 Linux 平台上一个开源的嵌入式 Linux 系统自动构建框架。整个Buildroot是由 Makefile 脚本和 Kconfig 配置文件构成的。你可以和编译Linux内核一样,通过 buildroot 配置,menuconfig 修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(包含boot、kernel、rootfs以及rootfs中的各种库和应用程序)。

2、buildroot的架构

Buildroot提供了函数框架和变量命令框架,采用它的框架编写的app_pkg.mk这种Makefile格式的自动构建脚本,将被package/pkg-generic.mk 这个核心脚本展开填充到buildroot主目录下的Makefile中去。

最后make all执行Buildroot主目录下的Makefile,生成你想要的image。 package/pkg-generic.mk中通过调用同目录下的pkg-download.mk、pkg-utils.mk文件,已经帮你自动实现了下载、解压、依赖包下载编译等一系列机械化的流程。

你只要需要按照格式写app_pkg.mk,填充下载地址,链接依赖库的名字等一些特有的构建细节即可。 总而言之,Buildroot本身提供构建流程的框架,开发者按照格式写脚本,提供必要的构建细节,配置整个系统,最后自动构建出你的系统。

3、buildroot的下载

我们可以到官网地址下:https://buildroot.org/打开后如图,选择DOWNLOAD

我们选择长期支持版本(LTS),两个压缩格式,选择其中一个即可

4、buildroot的目录结构介绍

arch/ 目录存放CPU架构相关的配置脚本,如arm/mips/x86 ,这些CPU相关的配置,在制作工具链,编译boot和内核时很关键。

board/ 目录存放各种board 特有的一些配置脚本,在构建系统时,board默认的boot和Linux kernel配置文件,以及一些板相关特殊构建流程的脚本,都在该目录下,等待自动构建时调用。

boot/ 目录存在各种boot软件的自动构建脚本,不只是u-boot,还有grub等,也可以通过Buildroot来构建。

configs/ 目录存放这每种方案上层的全局配置文件,之前的make mini2440_defconfig实际上就是调用了该目录下的mini2440方案的配置。该目录下的配置文件记录着该机器平台或者方案使用的工具栏,boot, kernel,各种应用软件包的配置和是否编译选择的状态,之前所说的某个特殊开发板整个系统的配置文件,就在configs/目录下。

dl/ 目录存在从官网上下载的开源软件包,第一次下载后,下次就不会再去从官网下载了,而是从dl/目录下拿开源包,以节约时间。

docs/ 存放相关的参考文档。

fs/ 存放着各种文件系统的自动构建脚本。

linux/ 存放着Linux kernel的自动构建脚本。

output/ 是编译出来的输出文件夹,里面的build/目录存放着解压后的各种软件包编译完后的现场。host/目录放着制作好的编译工具链,target/ 目录是用来制作rootfs的,里面放着Linux系统基本的目录结构,以及各种编译好的应用库和bin可执行文件。Images/目录下就是最终生成的可烧写到板子上的各种image。

package/ 目录存放着各种第三方开源应用软件包的自动编译构建脚本,这些构建脚本一般都是经过测试,能够构建出相应的软件包的。

support/ 目录存放着一些固定的流程脚本,以备构建时调用执行。

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

toolchain/ 目录中存放着各种制作工具链的脚本,buildroot可以选择从0开始,用gcc和linux 内核,glibc、uclibc库等原材料制作一个自己工具链,也可以下载第三方制作好的开源工具。

5、解压并且配置buildroot

tar -vxf buildroot-2021.02.3.tar.gz
cd buildroot-2021.02.3
make menuconfig

如果执行make menuconfig报如下错误,则系统需要安装ncurses 和ncurses-devel

6、根据板子的具体情况配置Target options,Toolchain等信息

7、关闭kernel和uboot的编译

Buildroot不仅能构建根文件系统,还可以编译kernel和uboot,但是这些源码是从官网下载的,很可能是没包含各芯片厂商的驱动文件。所以我们关闭kernel和uboot编译即可

7、编译buildroot

make

需要注意的是buildroot下载的源码网速会比较慢,我们可以自己手动下载再放到buildroot源码目录下的dl文件夹中

编译完成后文件在./output/images文件夹中rootfs.tar为本教程需要的文件(本教程仅仅编译rootfs跟文件系统)

感谢:Linux学习 - buildroot构建根文件系统 - 知乎

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋上钢琴的虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值