一、基本信息
开发环境:Ubuntu16.04
开发平台:iMX6Q
内核版本:4.14.98
二、需要的软件
Buildroot Buildroot官网
本文下载版本的是:buildroot-2020.02.4.tar.bz2

三、使用 buildroot 制作根文件系统
1、拷贝 buildroot-2020.02.4.tar.bz2
拷贝 buildroot-2020.02.4.tar.bz2 到 Ubuntu 解压 并进入 buildroot-2020.02.4
四、选择配置并生成 .config文件
可以直接使用配置好的config config
1、选择配置文件
默认的配置放在 configs 目录下
根据自己的开发主板选择性对应的配置
在这里我选择了

2、生成 .config 文件
使用交叉编译工具链编译配置

编译配置成功
五、menuconfig 文件系统配置
进入图形化配置界面
打开图形化配置界面
选项说明:
1、Target options —> 配置说明
目标选项:根据自己的实际情况选择,在这里我直接使用默认配置

默认配置:
因为 MX6Q CPU架构 是 cortex-A9,所以不需要修改
Target options 选项说明:
2、Build options —> 配置说明
生成选项:根据自己的实际情况选择,在这里我直接使用默认配置
默认配置:
Build options 选项说明:
3、Toolchain —> 配置说明
编译工具链选择:这个需要根据自己的实际情况修改。在这里我总共修改了9个地方。
默认配置:
Toolchain 选项说明:
①、Toolchain type () —>
默认是 Buildroot toolchain(内部工具链)
这里我们选择 External toolchain(外部工具链)
选择外部工具链之后
②、Toolchain () —>
选择自定义工具链
选择 Custom toolchain

选择自定义工具链之后
③、Toolchain origin () —>
选择工具链来源,默认就是选择 Pre-installed toolchain (预装工具链)

找到自己的交叉编译工具链的路径填写进去
我的交缠编译工具链 arm-linux-gnueabihf-gcc 是在这里,所以我们填入下面的路径,因为后面要填写交叉编译工具链前缀,所以我们路径只填写到 /bin 的上一级
/usr/lib/gcc/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/
加入自定义交叉编译工具链之后

⑤、($(ARCH)-linux) Toolchain prefix ()
配置交叉编译工具链前缀
我的交叉编译工具链是
所以我们在这里填写上

配置交叉编译工具链前缀之后

⑥、External toolchain gcc version () —>
选择外部交叉编译工具链版本
在这里使用命令查看交叉编译工具链版本

选择外部交叉编译工具链版本
选择4.9.X
选择外部交叉编译工具链版本之后
在这里我们进入交叉编译工具链目录,查找版本信息文件
将 196865 转换为16进制是30101,对于10进制来说就是3.1.1

在这里我们选择3.1.X

选择外部工具链内核头系列之后

naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDIwNTc3OQ==,size_16,color_FFFFFF,t_70)
⑧、External toolchain C library () —>
外部工具链C库
选择 glibc/eglibc
选择外部工具链C库之后
⑨、工具链支持C++ 选项
选上 Toolchain has C++ support?
⑩、Toolchain 最终配置
4、System configuration —> 配置说明
系统配置:这个需要根据自己的实际情况修改。在这里我修改了5个地方。
默认配置:
System configuration 选项说明:
①、修改系统主机名
System hostname
在这里可以修改自己需要的系统主机名
②、修改登录提示语
System banner
修改登录提示语

修改登录提示语之后
③、修改设备(U盘)挂载方式
/dev management (Dynamic using devtmpfs only) —>
buildroot中有4种设备节点管理方式:
这这里我们选择Dynamic using devtmpfs + mdev
配置说明:
④、修改登录密码
默认登录账户名为 root
默认登录账户名为 root
默认登录账户名为 root
默认为空的话,登陆时不需要输入密码。
修改登录密码(修改为自己想要设置的密码,如果不设置则默认不用输入密码登录,直接输入账户名 root 就能登录 )
⑤、修改系统登录串口号
Run a getty (login prompt) after boot —>
(ttymxc0) TTY port
TTY port 在这里修改为自己开发板的系统登录串口号

Baudrate 修改串口波特率
修改为自己串口的波特率
⑥、System configuration最终配置
5、Kernel —> 配置说明
内核配置:我们不需要在这里编译内核,在这里我们取消选中
默认配置

修改之后:
6、Target packages —> 配置说明
目标包:文件系统程序包和库文件安装包,这个需要根据自己的实际情况修改。在这里我直接使用默认配置。
默认配置:
Target packages 选项说明:
7、Filesystem images —> 配置说明
文件系统镜像:在这里我直接使用默认配置
默认配置:
8、Bootloaders —> 配置说明
系统引导程序:
我们不需要在这里编译u-boot,我们取消选中u-boot。

修改之后:
9、Host utilities —> 配置说明
主机实用程序,
在这里使用默认配置。
10、Legacy config options —> 配置说明
旧版配置选项,

这里不用做任何修改。

六、确认并且保存配置
使用键盘方向键移动至 Save
按下回车确认保存。
七、编译源码和下载相关文件
执行编译命令,会自动下载所需要的相关文件。编译需要时间,也需要网络。取决于你的配置和网速。慢慢等待即可。
生成的文件系统在 output/images 目录下,默认文件系统名字是 rootfs.tar。
八、格式转换
NXP使用的烧录工具 mfgtool2 使用的是 tar.bz2 格式
直接解压,然后在压缩成 tar.bz2 格式就可以了。
九、登录验证系统
可以看到我们之前设置的用户名和登录提示语。