buildroot 构建根文件系统(1)最小系统

一、开发背景

  原开发板的文件系统拥有很大的冗余文件,需要裁剪文件系统或者根据需要定制文件系统

二、开发需求

  1、构造最小系统,支持基本指令,例如 cd、ls、tar 等基础指令

三、开发环境

  Linux Ubuntu 4.15.0-65-generic + buildroot-2023.02.3 + i.mx6d(cortex-A9)

  buildroot 下载:Buildroot - Making Embedded Linux Easy (推荐使用长支持版本)

四、配置步骤

  make menuconfig:打开图形界面配置

  需要配置的选项包括一下:

  Target options --->       目标选项--->

  Toolchain --->        工具链--->

  Build options --->          生成选项--->

  System configuration --->   系统配置--->

  Kernel --->           内核--->

  Target packages --->     目标包--->

  Filesystem images --->    文件系统映像--->

  Bootloaders --->       引导加载程序--->

  Host utilities --->       主机实用程序--->

  Legacy config options --->   旧版配置选项--->

  参考链接:【Linux 系统】文件系统--- Buildroot 从零开始制作文件系统 史-开源基础软件社区-51CTO.COM

          【Buildroot】学习记录(2)配置注释_buildroot配置_liefyuan的博客-CSDN博客

1、Target options 

(1)Target Architecture:选择处理器架构,涉及到文件的存储方式,选择 (ARM (little endian)) ,一般 arm 选择小端模式

(2)Target Architecture Variant:选择内核核心,armv7a cores 架构下的 cortex-A9

(3)Enable NEON SIMD extension support:SIMD(单指令多数据流),针对视频和音频的扩展指令集加速,这里先不使能,没有这方面需求 

参考链接:ARM通用NEON多媒体处理SIMD引擎_whatday的博客-CSDN博客

(4)Enable VFP extension support:向量浮点运算支持,可以加速浮点运算,这里建议打开,后面才能选择 EABIhf,硬件浮点运算。

(5)Target ABI:(ABI: Application Binary Interface)选择应用的二进制接口,由于上面打开了 VFP 支持,所以这里选择 EABIhf

        EABIhf:Embedded Application Binary Interface Hard Float,这个选项需要考虑和交叉编译工具链保持一致,我的交叉工具是 arm-linux-gnueabihf

(6)Floating point strategy:浮点策略,VFPv3 和 VFPv3-D16中选择一个,VFPv3 提供 32 个单精度运算寄存器和 32 个双精度运算寄存器

    VFPv3 = VFPv3-D32,VFPv3-D16 即是在原来的基础上把双精度浮点运算从32个减半变成16个,减少了资源,这里先选择 VFPv3-D16,速度不够再提升

(7)ARM instruction set:指令集,保险起见选择 arm 指令集,可以考虑 Thumb2 指令集

      arm 指令集是 32 bit 的,Thumb2 指令集兼容 16 bit 和 32 bit 指令

(8)Target Binary Format:二进制格式,没得选,直接 ELF

最后配置截图: 

2、Toolchain

        编译工具链配置,这里使用自定义的编译工具链

(1)Toolchain type:工具链类型,直接选择 External toolchain,即外部工具链,buildroot 也有交叉编译工具链,一般不用

(2)Toolchain:选择自定义工具链,即 Custom toolchain,可以从其他平台下载,不过一般都是用本地的

(3)Toolchain origin:工具链源,这里选择 Pre-installed toolchain,即已安装,后面提供路径即可,如果从其他平台下载,这里也有下载选项

(4)Toolchain path:工具链路径,即交叉编译工具链路径,注意:个别需要按住 ctrl 键才能删除,例如:/opt/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf 

    实际可执行路径:/opt/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/,根据自己的路径填写

    快速查看工具链路径:which arm-linux-gnueabihf-gcc,关键字 which

(5)Toolchain prefix:工具链前缀,根据自己的交叉编译工具链写,$(ARCH)-linux-gnueabihf ,源编译链:arm-linux-gnueabihf

(6)External toolchain gcc version:工具链 gcc 版本,命令行输入 arm-linux-gnueabihf-gcc -v 查询填写

(7)External toolchain kernel headers series:编译工具链的内核版本,先保持默认,编译报错会提示正确的版本

(8)External toolchain C library:C 语言库支持库,可选 uClibc、glibc 和 musl,这里选择 glibc

        uClibc 属于微型库,功能简单,不支持内存管理;glibc 相对庞大而功能齐全;musl 相对较新,不常用

(9)Toolchain has SSP support? (Stack Smashing Protector),即栈溢出保护,SSP是一项重要的安全措施,选择打开

(10)Toolchain has RPC support? (Remote Procedure Call),即远程调用功能,一般结合 NFS 使用,选择打开

(11)Toolchain has C++ support? 这个就不用多说了,直接打开

(12)Toolchain has D support? 这里的 D 指的是 D 语言,也是编程语言的一种,不打开

(13)Toolchain has Fortran support?  这里的 Fortran 也是编程语言的一种,不打开

(14)Toolchain has OpenMP support? 这里的 OpenMP 是并行设计方法,不打开

(15)Copy gdb server to the Target:把 GDB 服务器拷贝到系统中,可以远程调试软件,这里先打开(文件可能比较大),后续可以研究一下

(16)Copy gconv libraries:用于字符编码转换,先不打开

(17)Extra toolchain libraries to be copied to target:可以指定路径,把库拷贝到目标系统,后续可以添加相关路径

(18)Target Optimizations:优化相关,用法未知

(19)Target linker options:目标连接器,用法未知

最后配置截图:

3、Build options

        这部分基本不用改,保持默认

4、System configuration

(1)Root FS skeleton 根文件系统骨架,实际上只是选择配置方式,这里选择默认 default target skeleton

(2)System hostname 系统名,还是修改一下,根据自己实际情况编写

(3)System banner 系统启动的欢迎语,根据自己实际情况编写

(4)/dev management 设备 U 盘的挂载方式,这里选择 Dynamic using devtmpfs + mdev

   mdev 是 eudev 的简化版,详细参考: Linux下mdev的配置-自动挂载U盘_mdev -s_bjr2016的博客-CSDN博客

(5)Enable root login with password 默认登录账户名 root

(6)Root password 设置密码,根据自己实际情况编写

(7)Run a getty (login prompt) after boot 设置登录串口属性

  1)TTY port 串口号,可以定死串口号,例如 ttymxc0,保留 console,串口号由 uboot 指定

  2)Baudrate 设置波特率,可以设置,也可以又内核决定,即 keep kernel default  

(8)其他的视情况配置

  最后配置截图:

 5、Kernel

  这里只是构建文件系统,不需要内核,取消选中

  最后配置截图: 

 6、Target packages

  这里是文件安装包打包,先不修改

7、Filesystem images

  这里是配置镜像文件属性的,暂时不动

8、Bootloaders

    这里可以配置 uboot 等引导程序,考虑到只构建文件系统,取消所有选项

    最后配置截图:

 9、Host utilities

    这里是主机应用相关配置,先不动

10、Legacy config options

    这里是遗留的旧配置选项,先不动

 11、最后执行 make

    目标生成文件在 ./output/images/rootfs.tar,运行参考链接:               https://www.cnblogs.com/yangjinghui/p/17655039.html

五、注意

  配置文件备份,make menuconfig 配置的参数保存在 .config 文件中,如果操作 make distclean 会删除 .config 文件

  所以需要把生成的 .config 文件保存到 configs 文件夹下,形如 xxx_defconfig

  使用 make xxx_defconfig 把 xxx_defconfg 参数导入到 .config 后再用 make menuconfig 来配置参数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值