1. Buildroot 简介

制作根文件系统有归多种方法:

① 使用Busybox手工制作
Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载、编译,如果它需要某些依赖库,你还需要手工下载、编译这些依赖库。
如果想做一个极简的文件系统,可以使用Busybox手工制作。

② 使用Buildroot自动制作
它是一个自动化程序很高的系统,可以在里面配置、编译内核,配置编译u-boot、配置编译根文件系统。在编译某些APP时,它会自动去下载源码、下载它的依赖库,自动编译这些程序。
Buildroot的语法跟一般的Makefile语法类似,很容易掌握。

③ 使用Yocto
NXP、ST等公司的官方开发包是使用Yocto,但是Yocto语法复杂,并且Yocto动辄10GB,下载安装都很困难,普通笔记本编译可能需要2-3天甚至更久,非常不适合初学者(我们不推荐使用yocto构建文件系统)。

基于上述特点,我们选择Buildroot。

Buildroot是一组Makefile和补丁,可简化并自动化地为嵌入式系统构建完整的、可启动的Linux环境
(包括bootloader、Linux内核、包含各种APP的文件系统)。Buildroot运行于Linux平台,可以使用交叉编译工具为多个目标板构建嵌入式Linux平台。Buildroot可以自动构建所需的交叉编译工具链,创建根文件系统,编译Linux内核映像,并生成引导加载程序用于目标嵌入式系统,或者它可以执行这些步骤的任何独立组合。例如,可以单独使用已安装的交叉编译工具链,而Buildroot仅创建根文件系统。

参考网址
Buildroot用户手册 https://buildroot.org/downloads/manual/manual.html
Buildroot源码下载位置 https://buildroot.org/downloads/
目录结构的位置以及作用请参考网址 http://wiki.100ask.net/Buildroot
学习更多关于buildroot知识请参考 http://wiki.100ask.org/Buildroot

百问网提供的Buildroot现支持如下包:

2. 系统特征讲解

我们都做了哪些改进?
我们基于buildroot官方 2020.02长期支持版本进行适配100ask-stm32mp1mp157-pro开发板,在此基础上针对ST yocto发行系统做了大量的裁剪,在保证最小系统的基础上增加对qt5.12 eglfs库的支持,同时也支持opencv3编程 mqtt库 swupdate ota升级等等比较常用的应用,我们也会提供如何在buildroot新增自己的软件包教程,同时源码保存在gitee上,链接地址为 https://gitee.com/weidongshan/ST-Buildroot.git 大家可以在上面提交issue 或者pull request。

init(为英语:initialization 的简写)是 Unix 和 类 Unix 系统中用来产生其它所有进程的程序。它以守护进程的方式存在,其进程号为 1。Linux 系统在引导时加载 Linux 内核后,便由 Linux 内核加载init 程序,由 init 程序完成余下的引导过程,比如加载运行级别,加载服务,引导 Shell/图形化界面等等。

什么是 systemv 守护进程?
System V(缩写为 SysV)在大多数 Linux 发行版中使用最广泛,在 systemv 中,有一个第一个程序在内核加载后运行。该程序称为 init。Init 做一些事情,其中之一就是加载一系列脚本来启动各种系统服务,例如网络,ssh 守护程序等。System V 中的运行级别描述了某些状态。例如:

  • 运行级别 0:暂停
  • 运行级别 1:单用户模式
  • 运行级别 6:重新启动

systemv 的问题在于它需要仔细调整。假设您有一个要在启动时运行的网络文件系统(NFS)客户端。在网络正常工作之前运行 NFS 没有任何意义。因此,您必须确保它等待启动,直到网络已经正常工作为止。Systemv init 这样做的方法是为服务启动设置严格的顺序。每个服务都分配有一个优先级编号,init 会按优先级顺序启动服务。如果需要确保网络连接后启动服务,则必须手动为服务分配更高的优先级。这必须由某人(通常是软件包维护者)针对计算机上运行的每项服务来完成。

所有 System V 初始化脚本都存储在/etc/rc.d/init.d/或/etc/init.d 目录中。这些脚本用于控制系统的启动和关闭。通常,您会在这个目录找到启动 ssh 服务器或网络的脚本,使用/etc/init.d/S50sshd start 开启某个服务或者使用/etc/init.d/S50sshd stop 关闭某个服务。

什么是 systemd 守护进程?
systemd 这一名字源于 Unix 中的一个惯例:在 Unix 中常以“d”作为系统守护进程(英语:daemon,亦称后台进程)的后缀标识。除此以外,systemd 亦是借代英文术语 D 体系,而这一术语即是用于描述一个人具有快速地适应环境并解决困难的能力。

systemd 是 Linux 电脑操作系统之下的一套中央化系统及设置管理程序(init),包括有守护进程、程序库以及应用软件,由 Lennart Poettering 带头开发。其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低 Shell 的系统开销的效果,最终代替现在常用的 System V 与 BSD 风格 init 程序。目前绝大多数的 Linux 发行版都已采用 systemd 代替原来的XAXAxAXASystem V。

将 service(服务)、target(运行模式,类似于运行级别)、mount、timer、snapshot、path、socket、swap 等称为 Unit。比如,一个 auditd 服务(就是 auditd.service)就是一个 Unit,一个 multi-user.target运行模式也是一个 Unit,其中不同的服务通过 systemctl 来进行统一管理,例如重启一个 sshd 服务,需要执行 systemctl restart sshd 命令,同样的如果添加一个启动程序需要自己定义一个 service 服务才可以。

你可以用我们提供的 buildroot 做些什么?
快速实现自己的想法,增加自己的应用,学习了解 busybox 以及各种包是如何编译生成,用于调试内核或者应用程序等等。

3. 配置文件说明

下面介绍如何构建 100ASK_STM32MP157_PRO 全功能版的根文件系统。

4. 编译系统

下面以100ask_stm32mp157_pro_ddr512m_systemD_qt5_defconfig配置文件为例,说明 Buildroot 的配置编译过程:

book@100ask:~/100ask_stm32mp157_pro-sdk/Buildroot_2020.02.x$ make 100ask_stm32mp157_pro_ddr512m_systemD_qt5_defconfig
book@100ask:~/100ask_stm32mp157_pro-sdk/Buildroot_2020.02.x$ make all

注意:编译时需要联网,需要下载某些文件,由于机器性能不同,编译时间不同。性能差的电脑,有可能需要等待5 ~ 6个小时。

编译完成后终端提示如下图所示。

5. 镜像文件

编译成功后文件输出路径为 output/images

可以参考《第七章 烧写整个系统或更新部分系统》把上面编译出来的100ask-stm32mp157-pro-512dv1-tfa.img烧写到SD/TF卡,即可通过TF卡启动开发板进入系统。

6. 扩展学习

深入了解学习更多关于buildroot知识请参考 http://wiki.100ask.org/Buildroot

  • buildroot下进入menuconfig包选择配置配置界面
book@100ask:~/100ask_stm32mp157_pro-sdk/Buildroot_2020.02.x$ make menuconfig

  • buildroot下单独编译内核
book@100ask:~/100ask_stm32mp157_pro-sdk/Buildroot_2020.02.x$ make linux-rebuild

  • buildroot下进入内核make menuconfig配置选项界面
book@100ask:~/100ask_stm32mp157_pro-sdk/Buildroot_2020.02.x$ make linux-menuconfig

  • buildroot下单独编译u-boot
book@100ask:~/100ask_stm32mp157_pro-sdk/Buildroot_2020.02.x$ make uboot-rebuild

  • buildroot下单独编译某个软件包
book@100ask:~/100ask_stm32mp157_pro-sdk/Buildroot_2020.02.x$ make <pkg>-rebuild

  • buildroot下进入busybox配置界面
book@100ask:~/100ask_stm32mp157_pro-sdk/Buildroot_2020.02.x$ make busybox-menuconfig

  • buildroot下生成系统sdk,最后生成的目录在output/images/目录下
book@100ask:~/100ask_stm32mp157_pro-sdk/Buildroot_2020.02.x$ make sdk


百问网技术论坛:http://bbs.100ask.net/

百问网官方wiki(资料下载):http://wiki.100ask.org/

线上课堂:https://www.100ask.net/index

百问网开发板:
淘宝:https://100ask.taobao.com/
天猫:https://weidongshan.tmall.com/

技术交流群(鸿蒙开发/Linux/嵌入式/驱动/资料下载)
QQ群:869222007

单片机-嵌入式Linux交流群:
QQ群:536785813

http://weixin.qq.com/r/M0hvd2-EwjK9rSsU9x0h (二维码自动识别)

百问科技公众号

sdk开发包怎么使用_怎么使用 Buildroot 构建根文件系统?相关推荐

  1. sdk开发包如何使用_SDK如何使能行业?华为昇腾要用软件充分释放硬件性能

    谈及落地,软件永远是激发硬件性能的核心. 自AI出现,围绕传统产业"智能化转型"的探讨就一直没有停下.而随着"新基建"口号的喊出,工业制造等场景的智能化进程更是 ...

  2. Android SDK开发包下载地址

    Android SDK开发包国内下载地址 不知道是因为最近kaihui还是怎么的,打开android sdk官方网站特别的慢,想下载最新版本的platform几乎变成不可能完成的任务,不知道为什么Go ...

  3. 解读vs2003、vs2005、vs2008开发Windows CE环境、默认SDK开发包及测试

    文章来自http://swanmsg.blog.sohu.com/184427819.html 以前做过一些嵌入式开发,那么从以前做产品.做项目设计到嵌入式的开发,零碎时间累计到现在也有一年载已.本人 ...

  4. 详解比较好的音视频通话SDK开发包的技术要点

    详解好的音视频通话SDK开发包的技术要点 云智真是一套跨平台的音视频解决方案,其技术领先性.成熟度.稳定性.可扩展性以及安全性等各方面均有优异的表现,同时支持跨平台通信,Windows.Web.And ...

  5. Android SDK开发包国内下载地址

    八进制 少年壮志无烟抽 首页 新随笔 联系 订阅 Android SDK开发包国内下载地址 http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/2 ...

  6. 人脸识别算法源码SDK开发包人证比对二次开发检测核验开发包

    人脸识别算法源码SDK开发包人证比对二次开发检测核验开发包 ID:89120059902830359120170116926

  7. 公文识别SDK开发包

    公文识别SDK开发包软件简介  公文识别SDK开发包软件V12.0是一种光学字符识别(OCR)软件开发包(OCR SDK):OCR SDK12.0为软件开发人员.系统集成商.数据加工商(BPO).扫描 ...

  8. JAVA 操作 SCL2008 大屏幕(含SDK开发包和代码示例)

    JAVA 操作 SCL2008 大屏幕 一. 下载SDK开发包和一些依赖的DLL动态链接库 在 pom.xml 中新增 RXTX 依赖: <!-- java 操作串口包 --> <d ...

  9. 档案OCR识别SDK开发包

    档案OCR识别SDK软件简介         档案OCR识别SDK软件V12.0是一种光学字符识别(OCR)软件开发包(OCR SDK):OCR SDK12.0为软件开发人员.系统集成商.数据加工商( ...

最新文章

  1. c语言不能写入文件,求大神看看为什么不能将数据写入文件
  2. java/jsp/sql server项目 字符编码统一_JSP开发过程遇到的中文乱码问题及解决方案...
  3. 风险项目投资选择与管理
  4. Linux下php安装Redis扩展
  5. 基于MATLAB的RSSI 和 PLE 定位算法,并通过卡尔曼滤波器减少非视距误差
  6. classes是什么意思怎么读_KY啥意思?托马仕空品教你怎么读空气
  7. WebSocket——[Error during WebSocket handshake: Unexpected response code: 403]解决方案
  8. 键盘录入学生信息,保存到集合中
  9. fpga mysql_FPGA的一些琐碎知识整理
  10. python学习(九) 网络编程学习--简易网站服务器
  11. 【离散数学中的数据结构与算法】六 排列与组合二
  12. 放大电路频率响应基础概念
  13. Lua,Lua API,配置文件
  14. 【Perl系列】之一:Perl编程语言入门篇
  15. hdu Find Integer (6441)(大费马定理)
  16. 计算给定字符串中最长回文子串的长度(或查找最长回文子串)
  17. pycharm中 Make available to all projects的含义
  18. Retrofit 通过刷新头部Token解决token过期
  19. Debian 安装与设置
  20. 【陈工笔记】# 同步网络和异步网络的理解 #

热门文章

  1. 合格PHP工程师的知识结构
  2. 构建一个简单的卷积神经网络,使用DRL框架tianshou匹配DQN算法
  3. 改造二叉树 (长乐一中模拟赛day2T1)
  4. css3中定义required,focus,valid和invalid样式
  5. VLAN间路由:每个VLAN一个物理连接,单臂路由,三层交换
  6. 图片列表模板 html代码,图片列表模板
  7. Linux gtk开发教程,使用GTK+和Glade快速开发Linux图形界面
  8. 可口可乐造型设计_可口可乐推出黑科技音响,还能当冰箱用?
  9. Linux系统与网络服务管理技术大全(第2版)
  10. php海思hi3531d,海思hi3531DV200 h.265编解码AI处理器