前言

在之前文章介绍了如何使用 busybox 来构建文件系统:

但是 busybox 构建的文件系统很多东西需要自己交叉编译添加,某些软件需要自己去移植,所以移植过程是非常繁琐的。

有另外一种非常实用的根文件系统构建方法——使用 Buildroot 来构建根文件系统。Buildroot 不仅集成了 busybox,而且还集成了各种常见的第三方库和软件,需要什么软件,选择哪个软件就好。

在之前文章也详细介绍过 Buildroot 的组成和使用:

接下来我们直接使用 Buildroot 来制作根文件系统。

制作根文件系统我们得根据这几个问题理解Buildroot:

  • 如何决定是否编译某些包:
    • make menuconfig
    • 菜单内容来自哪里?
  • 如何下载这些包
    • 每个包,应该提供自己的下载地址
  • 如何编译这些包
    • 每个包,应该提供自己的编译方法
  • 如何制作映像文件
    • 这些被选择的包,被编译后,放入一个统一的目录
    • 制作为rootfs映像
    • 这还不够,我们想制作emmc的映像文件:它含有分区表、根文件系统分区、其他分区

一、Buildroot 目录

1. 目录结构

在之前文章已详细介绍过,在这里我们直接用图来表示:

image.png

2. 执行过程中目录的使用

image.png

二、Buildroot执行过程

image.png

三、使用默认配置编译根文件系统

1. 使用默认配置与脚本

  • 从Buildroot官网下载版本为2025.02的源码包
  • 解压后生成目录buildroot-2025.02
  • 切换到解压后的Buildroot工作目录
  • 列出configs/目录下所有包含imx6ull的配置文件(通常以_defconfig结尾)
  • 应用freescale_imx6ullevk_defconfig配置文件,初始化Buildroot的编译选项
  • 打开基于ncurses的图形化配置界面,删除内核和uboot
  • 编译

image.png

去掉内核,Uboot:

image.png

 

image.png

编译最后,会使用 board/freescale/common/imx/post-image.sh 来生成映像文件,有如下错误: 

image.png

新建文件 board/freescale/100ask/genimage.cfg :

点击Buildroot实战指南:从零构建IMX6ULL嵌入式根文件系统阅读全文

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐