如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植。

嵌入式系统三大部分:bootloader(uboot)、Linux内核、根文件系统。

制作根文件系统有三大神器:busybox、buildroot、yocto。

使用 busybox 构建文件系统,仅仅只是帮我们构建好了一些常用的命令和文件,像 lib 库、/etc 目录下的一些文件都需要自己手动创建,我们还要自己去移植一些第三方软件和库,比如 alsa、iperf、mplayer 等等。而且 busybox 构建的根文件系统默认没有用户名和密码设置。

如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植。buildroot 极大的方便了我们嵌入式 Linux 开发人员构建实用的根文件系统。

至于 yocto 构建根文件系统,过于复杂,需要时间也很久,我们一般不会选择这一种方式。

buildroot 下载

buildroot 源码肯定是要从 buildroot 官网下载,官网地址为 https://buildroot.org/。

下载后解压如图:

buildroot 和 uboot、Linux kernel 一样也支持图形化配置,输入如下命令即可打开图形化配置界:

make menuconfig

1、配置 Target options

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

2、配置 Toolchain

此配置项用于配置交叉编译工具链,设置为我们自己所使用的交叉编译器,必须是绝对路径。

目前,在ARM Linux的开发中,人们趋向于使用Linaro( http://www.linaro.org/ )工具链团队维护的ARM工具链,它以每月一次的 形式发布新的版本,编译好的可执行文件可从网址 http://www.linaro.org/downloads/ 下载。Linaro是ARM Linux领域中最著名最具技术成就的开源组织,其会员包括ARM、Broadcom、Samsung、TI、Qualcomm等,国内的海思、中兴、全志和中国台湾的MediaTek 也是它的会员。

一个典型的ARM Linux工具链包含arm-linux-gnueabihf-gcc(后续工具省略前缀)、strip、gcc、objdump、ld、gprof、nm、readelf、 addr2line等。前缀中的“hf”显 示该工具链是完全的硬浮点。

Toolchain -> Toolchain type = External toolchain -> Toolchain = Custom toolchain //用户自己的交叉编译器 -> Toolchain origin = Pre-installed toolchain //预装的编译器 -> Toolchain path =   //编译器绝对路径  -> Toolchain prefix = $(ARCH)-linux-gnueabihf //前缀 -> External toolchain gcc version = 4.9.x -> External toolchain kernel headers series = 4.1.x -> 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 -> System hostname = Jasonangel //平台名字,自行设置 -> System banner = Welcome to xxxxx //欢迎语 -> Init system = BusyBox //使用 busybox -> /dev management = Dynamic using devtmpfs + mdev //使用 mdev -> [*] Enable root login with password (NEW) //使能登录密码 -> Root password = 123456 //登录密码为 123456

4、配置 Filesystem images

此选项配置我们最终制作的根文件系统为什么格式的,配置如下:

-> 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、禁止编译 Linux 内核和 uboot

buildroot 不仅仅能构建根文件系统,也可以编译 linux 内核和 uboot。当配置 buildroot,使能 linux 内核和 uboot 以后 buildroot 就会自动下载最新的 linux 内核和 uboot 源码并编译。但是我们一般都不会使用 buildroot 下载的 linux 内核和 uboot,因为 buildroot 下载的 linux 和 uboot官方源码,里面会缺少很多驱动文件,而且最新的 linux 内核和 uboot 会对编译器版本号有要求,可能导致编译失败。因此我们需要配置 buildroot,关闭 linux 内核和 uboot 的编译,只使用buildroot 来构建根文件系统,首先是禁止 Linux 内核的编译,配置如下:

-> Kernel  -> [ ] Linux Kernel //不要选择编译 Linux Kernel 选项!

接着禁止编译 Uboot,配置如下:

-> Bootloaders
-> [ ] U-Boot //不要选择编译 U-Boot 选项!

6、配置 Target packages

此选项用于配置要选择的第三方库或软件、比如 alsa-utils、ffmpeg、iperf、ftp、ssh等工具,可以按需选择。

配置完成以后就可以编译 buildroot 了,编译完成以后 buildroot 就会生成编译出来的根文件系统压缩包,我们可以直接使用。输入如下命令开始编译:

sudo make //注意,一定要加 sudo,而且不能通过-jx 来指定多核编译!!!

buildroot 编译过程会很耗时,请耐心等待!编译完成以后就会在 buildroot-2019.02.6/output/images 下生成根文件系统,即可使用。

编译过程需要一定的额外内存,注意需要留好内存,否则会报错如下:

g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report

buildroot 下的 busybox 配置

buildroot 在构建根文件系统的时候也是要用到 busybox 的,既然用到了 busybox 那么就涉及到 busybox 的配置。buildroot 会自动下载 busybox 压缩包,buildroot 下载的源码压缩包都存放在/dl 目录下,在 dl 目录下就有一个叫做“busybox”的文件夹,此目录下保存着 busybox 压缩包。

在 buildroot下打开 busybox 的配置界面输入如下命令:

sudo make busybox-menuconfig

输入以后就会打开 buildroot 下的 busybox 配置界面,需要什么功能,使能即可。可以在busybox中修改文件,使其对中文支持,这一点可以百度设置。

编译完毕以后,会生成 rootfs.tar,拷贝出来以后,可以对其进行解压然后使用nfs挂载到板子上,或者直接使用SD卡烧录。编译出来的文件系统即可使用,如果需要什么命令和工具,在 make menuconfig 中使能再次编译即可。

教你用 buildroot 构建根文件系统相关推荐

  1. buildroot构建根文件系统

    buildroot构建根文件系统 一.简介 Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.本文使 ...

  2. Buildroot 构建根文件系统(Jz2440)

    1. Buildroot 简介      Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和 ...

  3. 笔记:使用buildroot构建根文件系统

    文章目录 简介 构建过程 buildroot包下载 配置 Target options配置项 Build options配置项 Toolchain配置项 System configuration配置项 ...

  4. sdk开发包怎么使用_怎么使用 Buildroot 构建根文件系统?

    1. Buildroot 简介 制作根文件系统有归多种方法: ① 使用Busybox手工制作 Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载.编译,如果它需要某些依赖库 ...

  5. 怎么使用 Buildroot 构建根文件系统

    1. Buildroot 简介 制作根文件系统有归多种方法: ① 使用Busybox手工制作 Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载.编译,如果它需要某些依赖库 ...

  6. 使用buildroot构建根文件系统遇到问题【已解决】

    错误1: error: you should not run configure as root (setFORCE_UNSAFE_CONFIGURE=1 in environment to bypa ...

  7. 【ARM】使用Ubuntu-base构建根文件系统

    使用Buildroot构建根文件系统 介绍 资源下载 配置根文件系统 设置软件源 安装必要软件 添加新用户 设置主机名称和本机IP 设置终端串口 网络DHCP FTP服务器搭建 串口无法登录 开机启动 ...

  8. 嵌入式中利用ubuntu-base构建根文件系统

    在嵌入式环境中,我们最常用busybox.yocto或buildroot来构建根文件系统,这种情况下,当我们需要使用一些组件的时候,往往需要我们使用源码编译,移植到开发板中.那有没有像ubuntu的文 ...

  9. 通过Buildroot自制根文件系统

    前言 根文件系统是Linux内核启动之后读取的一个文件系统,并从这个文件系统中加载第一个init应用程序并启动,就是Linux上俗称的root进程.根进程 制作它的方式有很多,例如busybox.yo ...

最新文章

  1. corosync+pacemaker+crmsh配置高可用集群。
  2. 为什么美国程序员工作比中国程序员工作轻松、加班少?
  3. slf4j 如何返回堆栈_重学JS系列 - JS 调用堆栈
  4. java学生背景知识要求,好好学习Java并发 一、背景知识
  5. win8能开发android的sdk么,win8.1 64位环境搭建android开发环境
  6. python remove函数_python中remove函数的用法是什么?
  7. 知识蒸馏在推荐系统中的应用
  8. XML——写出XML文档(XSLT+StAX)
  9. element ui 选项卡切换_Vue.js + element-ui 扫盲(服务端对大前端的扫盲)
  10. [Flash开发笔记] AS中保留多少位小数的函数
  11. faster rcnn源码解析1
  12. chinapub matlab,MATLAB 5手册
  13. StdAfx.h显示错误,无法打开
  14. 高等代数期末考试题库及答案_【最新试题库含答案】高等代数习题及答案(1)
  15. Java机器学习库(Java ML)(一、分类)
  16. 微信小程序 下拉刷新
  17. uml活动图 各个功能的操作流程和分支_uml活动图
  18. 中国将实施最严格机动车“全防全控”环境监管制度
  19. 关卡 动画 蓝图 运行_虚幻4 UE4 蓝图之关卡蓝图实现自动开关门
  20. 阿里云机器的JVM内存调优经历(菜鸟必看,大神请绕道)

热门文章

  1. 时间为什么用 12 进制?
  2. mac下-bash: mysql: command not found彻底解决
  3. 分布式任务调度系统V1
  4. 2005年下半年 网络工程师 上下午试卷【附带答案】
  5. Linux期末复习题库(2)
  6. 技术18期:数据安全之加密与实现
  7. 树莓派安装openCV做图像识别
  8. 图像自标记的可视化指南
  9. 数字图像处理知识点总结
  10. MPASNET:用于视频场景中无监督深度人群分割的运动先验感知SIAMESE网络