buildroot使用记录

Posted by 婷 on August 3, 2024 本文总阅读量

简介

简单列下如何用buildroot第一次配置自己的根文件系统,且制作用于emmc或者sd卡的根文件系统

下载

来到官网,选择buildroot-2024.02.4.tar.gz

image-20240803103211476

解压

tar -zxvf buildroot-2024.02.4.tar.gz

image-20240718215738085

配置

make menuconfig

image-20240718220210517

target options

image-20240718220309671

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

image-20240718220325146

修改为 Arm (little endian)

image-20240718220404707

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

image-20240718220425345

Target Architecture Variant选择为cortex-A7

image-20240718220514626

image-20240718220501282

接下来是Target ABI

image-20240718220603929

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

image-20240718220548545

toolchain

image-20230615195741269

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

image-20240718220643799

image-20240718220712067

image-20240718220738290

**Toolchain **改为Custom toolchain

image-20240718220757358

image-20240718220811520

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

image-20240718220830826

然后填Toolchain path

image-20240718220842797

如下是我们工具链的路径

image-20240718220919127

image-20240718220936185

image-20240718220947950

然后填写 Toolchain prefix

image-20240718221002963

image-20240718221040815

image-20240718221110074

接下来是这三个选项

image-20240718221139454

gcc version选择4.9.x

image-20240718221202457

image-20240718221232017

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

image-20240718221315259

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

image-20240803105136823

image-20240803105328212

image-20240718221339305

image-20240718221353247

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

image-20240718221424590

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

image-20240803110039097

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

image-20240718221508875

image-20240718221521436

修改后就保存配置

image-20240718221550225

编译

直接输入如下命令,记住一定要sudo

sudo make -j16

一般如果编译过程没啥问题,不过我遇到了几个小问题,在后面小节记录了,这里就先看结果吧

最后就是在output/images下得到我们需要的产物rootfs.tar

image-20240718231932639

制作镜像

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

image-20240719002749014

制作空镜像,并格式化为ext4格式,这里我们制作的根文件系统为256M的大小,当然后面可以在linux下进行扩容

dd if=/dev/zero of=rootfs.ext4 bs=256M count=1
mkfs.ext4 rootfs.ext4

image-20240719003710682

创建临时文件夹,供我们刚刚格式化的镜像可以进行挂载

mkdir tmp_rootfs
sudo mount -t ext4 rootfs.ext4 ./tmp_rootfs/
tar -xf rootfs.tar -C ./tmp_rootfs/

image-20240719002821263

image-20240719003249052

image-20240719003447944

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

image-20240803110622858

技巧

打补丁

镜像源配置

取消root登录

设置root密码

rootfs扩容

更新

其他

这里记录下如何解决编译过程中的小问题

编译碰到kernel头文件版本不对的问题,这里我们按照出错提示选择4.0.x,同时删除output/build/toolchain-external-custom目录,再重新编译

image-20240718231100318

image-20240718230650876

image-20240718231044503

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

image-20240718231314669

image-20240718231355417

image-20240718231251338

image-20240718231416532