官网下载buildroot
进入官网,直接下载最新的。
解压压缩包
先解压压缩包然后进入该目录。
tar -xjf buildroot-2022.02.6.tar.gz
cd buildroot-2022.02.6
开始制作根文件系统
配置buildroot
直接make menuconfig
打开图形化配置界面。
(1)配置Target options
Target Architecture (ARM (little endian)) ---> 小端
Target Binary Format (ELF) --->
Target Architecture Variant (cortex-A7) --->
Target ABI (EABIhf) --->
Floating point strategy (NEON/VFPv4) --->
ARM instruction set (ARM)
其中Floating point strategy
参考imx6ull
芯片手册第十二章开头可知:
(2)配置Toolchain
此配置项用于配置交叉编译工具链,也就是交叉编译器,这里设置为我们自己所使用的交
叉编译器即可。buildroot 其实是可以自动下载交叉编译器的,但是都是从国外服务器下载的,
鉴于国内的网络环境,强烈推荐大家设置成自己所使用的交叉编译器。
Toolchain
-> Toolchain type = External toolchain
-> Toolchain = Custom toolchain //用户自己的交叉编译器
-> Toolchain origin = Pre-installed toolchain //预装的编译器
-> Toolchain path =/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot //本地交叉编译器的路径
-> Toolchain prefix = $(ARCH)-buildroot-linux-gnueabihf //本地交叉编译器的前缀
-> External toolchain gcc version = 7.x //本地交叉编译器的gcc版本
-> External toolchain kernel headers series = 4.9.x //本地交叉编译器的kernel headers series
-> External toolchain C library = glibc/eglibc
-> [*] Toolchain has SSP support? (NEW) //选中
-> [*] Toolchain has RPC support? (NEW) //选中
-> [*] Toolchain has C++ support? //选中
-> [*] Enable MMU support (NEW) //选中
(3)配置System configuration
System configuration —>
(buildroot) System hostname (设置主机名)
(Welcome to Buildroot) System banner (输入欢迎语)
Init system (BusyBox) —>
/dev management (Dynamic using devtmpfs + mdev) —>(使用mdev动态加载设备节点的方式,devtmpfs是Linux内核中的一个虚拟文件系统,需要启用内核配置选项: CONFIG_DEVTMPFS和CONFIG_DEVTMPFS_MOUNT)
() Root password(进入linux控制台终端后的密码)
[*] remount root filesystem read-write during boot(可以进行动态的挂载)
Run a getty (login prompt) after boot —>
(console) TTY port(设置成串口登陆的设备节点)
Baudrate (115200) —> (设置波特率)
(4)配置 Filesystem images
此选项配置我们最终制作的根文件系统为什么格式的,对于 I.MX6U 来说此选项不用配置,因为我们是通过 Mfgtool 工具将根文件系统烧写到开发板上的 EMMC/SD 卡中,烧写的时候需要自己对根文件系统进行打包
-> Filesystem images
-> [*] ext2/3/4 root filesystem //如果是 EMMC 或 SD 卡的话就用 ext3/ext4
-> ext2/3/4 variant = ext4 //选择 ext4 格式
-> [*] ubi image containing an ubifs root filesystem //如果使用 NAND 的话就用 ubifs
(5)禁止编译内核和bootloader
我们只是用buildroot来制作根文件系统,不需要编译内核和uboot。当配置 buildroot,使能 linux 内核和 uboot 以后 buildroot 就会自动下载最新的 linux 内核和 uboot 源码并编译。但是我们一般都不会使用 buildroot 下载的 linux 内核和 uboot,因为 buildroot 下载的 linux 和 uboot官方源码,里面会缺少很多驱动文件,而且最新的 linux 内核和 uboot 会对编译器版本号有要求,可能导致编译失败。
编译buildroot
很多包可能需要自己下载后放到dl
文件夹下,下载也很方便,在buildroot编译页面会有相应包的地址,直接复制到浏览器打开就行。
sudo make
编译完成。
拷贝根文件系统到nfs目录
我们在开发板上通过nfs方式来挂载根文件系统。
cp output/images/rootfs.tar ~/nfs_rootfs/buildrootfs/
cd ~/nfs_rootfs/buildrootfs/
tar -xvf rootfs.tar
rm rootfs.tar
这就是我们制作的最简单的根文件系统,后续我们可以通过buildroot来加入更多的库。