简介
简单列下如何用buildroot第一次配置自己的根文件系统,且制作用于emmc或者sd卡的根文件系统
下载
来到官网,选择buildroot-2024.02.4.tar.gz

解压
tar -zxvf buildroot-2024.02.4.tar.gz

配置
先make menuconfig

target options

可以看到默认的架构,我们这里修改下Target Architeceture

修改为 Arm (little endian)

选完第一个之后,下面的其他选项都自动选成默认了

Target Architecture Variant选择为cortex-A7


接下来是Target ABI

根据我们的工具链选择为EABIhf

toolchain

Toolchain type:将buildroot_toolchain改成external_toolchain,这里就不用buildroot自己下载具体的工具链



**Toolchain **改为Custom toolchain


选完后自动变成了 Toolchain origin (Pre-installed toolchain)

然后填Toolchain path

如下是我们工具链的路径



然后填写 Toolchain prefix



接下来是这三个选项

gcc version选择4.9.x


kernel headers series是内核版本,根据自己用的内核版本来选择就可以

C库我们选择glibc,因为工具链是glibc类型,如果是uclibc或者是musl,libc后缀会带uclibc或者musl




Toolchain has xx support基础这三个选项都选上

Target Optimizations这个是选填的,相当于编译优化的一个选项

这里我们我们填上我们的CPU型号


修改后就保存配置

编译
直接输入如下命令,记住一定要sudo
sudo make -j16
一般如果编译过程没啥问题,不过我遇到了几个小问题,在后面小节记录了,这里就先看结果吧
最后就是在output/images下得到我们需要的产物rootfs.tar

制作镜像
创建release文件夹,把rootfs.tar复制过来

制作空镜像,并格式化为ext4格式,这里我们制作的根文件系统为256M的大小,当然后面可以在linux下进行扩容
dd if=/dev/zero of=rootfs.ext4 bs=256M count=1
mkfs.ext4 rootfs.ext4

创建临时文件夹,供我们刚刚格式化的镜像可以进行挂载
mkdir tmp_rootfs
sudo mount -t ext4 rootfs.ext4 ./tmp_rootfs/
tar -xf rootfs.tar -C ./tmp_rootfs/



当然在output/target目录下也可以看到我们的rootfs里的内容,也可以直接把target下的内容直接复制也可以的,不过还是使用推荐做法啦

技巧
打补丁
镜像源配置
取消root登录
设置root密码
rootfs扩容
更新
其他
这里记录下如何解决编译过程中的小问题
编译碰到kernel头文件版本不对的问题,这里我们按照出错提示选择4.0.x,同时删除output/build/toolchain-external-custom目录,再重新编译



接着就是两个报错,根据提示将Fortran跟OpenMP都勾选上



