Buildroot学习笔记

一、什么是Buildroot

Buildroot 是一个工具, 它使用交叉编译, 可以简化和自动化为嵌入式系统构建一个完整 L
inux 系统的过程。 Buildroot 能够为您的目标对象生成交叉编译工具链、 根文件系统、 L
inux 内核镜像和 bootloader 引导加载程序
。 Buildroot 可以独立应用于这些选项的任意组合(例
如, 您可以使用现有的交叉编译工具链,通过 Buildroot 来单独构建根文件系统)。
Buildroot 主要对使用嵌入式系统的用户有用。它们可以是 PowerPC 处理器、 MIPS 处理器、 ARM处理器等,在一个Linux系统下编译出一个嵌入式的linux系统
 

二、操作步骤

1、创建配置文件make menuconfig

• BusyBox:BusyBox 是一个集成了许多常用 Linux 工具的软件包,如果您已经有一个 BusyBox 配置文件,则可以在 Buildroot 配置中使用“BR2_PACKAGE_BUSYBOX_CONFIG” 直接指定该文件。

• Linux kernel:如果已经有了内核配置文件,则可以在 Buildroot 配置中使用“BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG” 变量直接指定该文件。

• U-Boot:U-Boot的配置方式与 Linux kernel 配置相同。相应的配置变“BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG” 和“BR2_TARGET_UBOOT_USE_D
EFCONFIG”。 使用“make uboot-menuconfig” 打开配置编辑器


 

配置完成后,配置工具将生成一个包含全部配置的.config 文件。将被顶级 Makefile 文件读取。
2、运行make命令

编译流程如下

• 下载源文件(根据需要);
• 配置,构建和安装交叉编译工具链,或者仅导入外部工具链;
• 配置,构建和安装选定的目标软件包;
构建内核镜像(如果选择);
• 构建引导加载程序镜像(如果选择);
• 以选定的格式创建一个根文件系统
Buildroot 编译后的输出保存在单个目录 output/中。 该 output 目录下包含几个子目录:
images/ 存储着所有镜像(包括内核镜像,引导加载程序和根文件系统镜像)。这些是您
需要放在目标系统上的文件。
build/ 构建所有组件(这包括 Buildroot 在宿主机上所需的工具以及为目标编译的软件
包)。该目录包含着每个组件的一个子目录。

• host/ 包含为宿主机构建的工具, 以及目标工具链的 sysroot。前者是宿主机正确执行 Buildroot 时所需安装的工具,包括交叉编译工具链。 后者是一种类似于根文件系统层次结构的目
录结构。它包含所有用户空间软件包的头文件和库,这些软件包可提供并安装由其他软件包使
用的库。但是,该目录并不旨在成为目标的根文件系统:它包含许多开发文件、 未剥离的二进
制文件和库,这些文件对于嵌入式系统而言太大了。这些开发文件用于为依赖于其他库的目标
去编译库和应用程序。
• staging/ 是一个指向 host/中目标工具链 sysroot 的符号链接,为了向后兼容而存在。
target/ 包含指定目标的几乎完整根文件系统:除了/dev/中的设备文件,所有需要的东西
都存在(Buildroot 无法创建设备文件,因为 Buildroot 不能以 root 身份运行,也不想以 root 身
份运行)。另外, 它没有正确的权限(例如 busybox 中的 setuid 权限)。因此,该 target 目录不应

应该使用 images/目录下编译生成的其中一个镜像。如果需要提取根文件系统镜像来通过 NFS 进行引导,请使用 images/中生成的压缩包镜像并将其提取为 root。与 staging/相比, target/仅包含运行目标应用程序所需的文件和库:不存在开发文件(例如 headers 等等),剥离了二进制文件。

这是rk3588编译后的输出:

 三、什么时候应该重新编译buildroot?

• 更改目标体系架构配置时,需要完全重建。例如,更改体系架构变体、 二进制格式或浮
点策略等,这些更改会影响整个系统。
• 更改工具链配置时,通常需要完全重建。更改工具链配置通常涉及更改编译器版本、 C 库
的类型或其配置、 其他一些基本配置项等,这些更改会影响整个系统。
• 更改根文件系统框架(skeleton) 时,需要完全重建。

四、部署系统

Buildroot 构建完成后,会在 output/images 目录下生成一系列文件,包括:

  • 内核镜像(如 zImageuImage)。

  • 设备树文件(如 devicetree.dtb)。

  • 根文件系统镜像(如 rootfs.ext4rootfs.cpiorootfs.squashfs

内核镜像、 设备树文件、根文件系统镜像是linux必不可缺的三样东西,根文件系统就是target文件打包后的产物,可以在uboot启动的时候进行设置。不同的sdk打包的方式不一样和烧录方式,但是本质上都是一样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值