Buildroot构建Linux系统根文件系统
文章目录
- 1 . 为什么使用buildroot构建根文件系统
- 2. buildroot 下载
- 3. buildroot 构建根文件系统
- 3.1 下载源码
- 3.2 配置buildroot
- 3.2.1 配置Target options
- 3.2.2 Toolchain
- 3.2.3 配置 System configuration
- 3.2.4 配置 Filesystem images
- 3.2.5 禁止编译 Linux 内核和 uboot
- 3.3 编译buildroot
- 4. buildroot 第三方软件和库的配置
- 4.1 使能alsa-lib
1 . 为什么使用buildroot构建根文件系统
构建根文件系统可以使用很多种方式,比如busybox等,但是busybox构建的根文件系统不是完整的,缺少很多库和软件,需要再次移植,使用比较麻烦。而buildroot不仅包含busybox的功能,而且还集成了很多常见的第三方库和软件,能很方便的构建我们需要的根文件系统。
2. buildroot 下载
Buildroot使用需要从源码构建,所以需要下载源码, 官网地址: https://buildroot.org/ , 点击Download即可下载

可选择下载最新版本或者需要旧版本的在历史版本种找即可。

历史版本是存放在gitlab中的,选择对应分支后可选择下载压缩包或者使用git clone即可。


下载的压缩文件格式为tar.bz2, 上传到linux下使用以下命令解压即可:
tar -vxjf buildroot-xxx版本.tar.bz2
3. buildroot 构建根文件系统
3.1 下载源码
这里使用2019.02.6 版本, 直接clone或者直接下载,

git clone https://gitlab.com/buildroot.org/buildroot/-/tags/2019.02.6
克隆或者解压后如下:

3.2 配置buildroot
buildroot 和 uboot、Linux kernel 一样也支持图形化配置,输入如下命令即可打开图形化配
置界, 配置界面如下:
make menuconfig
注意: 这里需要先安装 gcc , ncurses库
# 更新包列表
sudo apt update# 安装GCC、make、ncurses库等必要工具
sudo apt install build-essential libncurses5-dev libncursesw5-dev# build-essential 包含了 GCC、g++、make 等基础编译工具。
# libncurses5-dev/libncursesw5-dev 是menuconfig图形界面依赖的终端交互库。

权限不足直接使用: sudo make menuconfig 即可。
配置界面如下:

3.2.1 配置Target options
此选项是配置一些平台相关的东西,按需选择,示例如下:

3.2.2 Toolchain
此为交叉编译工具链配置, 使用自己安装的即可。选项选择和取消按 y 和 n。

3.2.3 配置 System configuration
此选项用于设置一些系统配置,比如开发板名字、欢迎语、用户名、密码等。

3.2.4 配置 Filesystem images
此选项配置我们最终制作的根文件系统为什么格式的,配置如下:

- 如果是 EMMC 或 SD 卡的话就用 ext3/ext4,variant ext4 格式
- 如果使用 NAND 的话就用 ubifs
因为使用的是 I.MX6ULL, 所以此选项不用配置,因为我们是通过 Mfgtool 工具将根文件系统烧写到开
发板上的 EMMC/SD 卡中,烧写的时候需要自己对根文件系统进行打包。
3.2.5 禁止编译 Linux 内核和 uboot
buildroot 不仅仅能构建根文件系统,也可以编译 linux 内核和 uboot。当配置 buildroot,使
能 linux 内核和 uboot 以后 buildroot 就会自动下载最新的 linux 内核和 uboot 源码并编译。但是
我们一般都不会使用 buildroot 下载的 linux 内核和 uboot,因为 buildroot 下载的 linux 和 uboot
官方源码,里面会缺少很多驱动文件,而且最新的 linux 内核和 uboot 会对编译器版本号有要
求,可能导致编译失败。因此我们需要配置 buildroot,关闭 linux 内核和 uboot 的编译,只使用
buildroot 来构建根文件系统,首先是禁止 Linux 内核的编译,配置如下:


不选择编译linux kernel 选项。


不选择uboot。
退出时记得点yes保存配置 :

3.3 编译buildroot
配置完成以后就可以编译 buildroot 了,编译完成以后 buildroot 就会生成编译出来的根文件
系统压缩包,我们可以直接使用。输入如下命令开始编译:
sudo make //注意,一定要加 sudo,而且不能通过-jx 来指定多核编译!!!
如果遇到下载失败的或者下载很慢的包,可根据链接自己下载后放到dl目录下, dl 文件夹专用用于存放下载下来的源码。
等待编译完成,编译完成以后就会在output/images 下生成根文件系统。
注: 配置完后在项目根目录下会生成 .config 文件,这个就是我们上述配置的内容配置文件。
部分示例如下,kernel 编译没有被开启:

开始编译:

4. buildroot 第三方软件和库的配置
我们通常会自行移植一些第三方库,如 alsa-lib、alsa-utils 等, 现在可以通过配置buildroot中使能配置,通过buildroot来一次编译,示例如下:
4.1 使能alsa-lib
Target packages-> Libraries-> Audio/Sound -> -*- alsa-lib ---> 此配置项下的文件全部选中

配置后保存退出重新编译即可。
