为什么要使用buildroot?

(文件系统搭建,强烈建议直接用buildroot,官网[http://buildroot.uclibc.org/]上有使用教程非常详细)文件系统通常要包含很多第三方软件,比如busybox,udhcpc,tftp,apache,sqlite,PHP,iptable,DNS等,为了避免繁杂的移植工作。buildroot应运而生。通过menuconfig配置我们需要的功能,不需要的功能去掉,再执行make指令编译,buildroot就会自动从指定的服务器上下载源码包,自动编译,自动搭建成我们所需要的嵌入式根文件系统。让我们的工作效率成百倍的提升。

1:获取buildroot

我们可以从buildroot官网(http://buildroot.uclibc.org/download.html)获取buildroot源码包,buildroot基本上三个月更新一次,目前最新是buildroot-2016.11.tar.gz,这里我们实际下载的源码包是 buildroot-2016.02.tar.gz。建议下载最新的版本,因为新的版本包含更多的第三方工具软件。

2:配置buildroot

将源码包复制到XXX目录下,并解压tar -xvf buildroot-2015.02.tar.gz

进入目录,执行配置命令:cd /XXX/buildroot-2015.02

执行:make ARCH=arm menuconfig

配置界面如下:

2.1 :进入target options

配置CPU参数:little endian 指的是小端存储;二进制格式是ELF;CPU是Cortex-A5;交叉工具支持eabihf;浮点书处理采用VFP-v4;采用精简指令集Thumb2;

配置如下图所示:

2.2:进入toolchain

将Toolchaintype配置为Externaltoolchain,然后在Toolchain中选择交叉编译工具的版本,如Custom toolchain,在Toolchain origin中选择Pre-installed toolchain,后面编译时,buildroot将会根据Toolchain path找到我们的交叉编译工具。选中Enable MMU support,退回上一界面;

2.3:进入System configuration

在system hostname一栏中输入开发板的名称,如ZHD-A5,在system banner中可输入欢迎语,如welcome to Hi-Target。在Init system中选择BusyBox,在/dev management中选择Dynamic using mdev,即使用mdev动态加载设备节点的方式,然后在Path to thepermission tables中选择设备节点的配置表,这里我们一定要选择system/device_table_dev.txt,否则后面在dev目录下将不会生成各 种设备节点。当然我们也可以手动的配置该文件,添加必要的节点或删除不需要的节点。Root password为配置进入linux控制台终端后的密码,为空则登录时不需要密码,默认登录用户名为root。选中Run agetty(login prompt)after boot。Remount root filesystem read-write during boot表示可以进行动态的挂载;

再进入下面的getty options选项:

将TTY port配置为ttyS0,将baudrate配置为115200,对应开发板的打印串口。

2.4:进入Filesystem images

选中ext2/3/4root filesystem,然后在ext2/3/4variant中选择ext4,选中tar the root filesystem,最后保存当前的配置并退出,配置完成。大家也可以根据自己的实际需要进行配置。

2.5:进入target packages

在target packages目录下,有一大堆第三方的开源工具软件,基本上嵌入式上可能会用到得或用不到的,在这里都用,如果你想要把这个工具软件包含进固件里面,很简单,只要在这个软件的名称前面打个*星号,表示要编译这个软件到固件里面,从此和刀耕火种的源代码移植say goodbye,今入工业文明时代。

下面以移植DNS服务器bind为例,做一个简单的说明:

3:编译buildroot

只需在buildroot的根目录下执行make指令即可编译整个buildroot。

编译时,buildroot会自动下载第三方软件的源码,我们只要等一下,让buildroot自己下载编译。编译完成后,会在output/image目录下面生成固件的镜像包,把这个包拷贝到RTK的platform目录下,然后解压,就可以使用了。在output/target下也可以看根文件,包含的内容如下所示:

借助buildroot一个含有各项所需要包(busybox,apache,PHP,bind等)的文件系统就做好了,真是利器,让很来需要花很多时间和精力的移植工作变得简单而且高效。

buildroot使用详解的更多相关文章

  1. (六)buildroot使用详解

    为什么要使用buildroot? (文件系统搭建,强烈建议直接用buildroot,官网[http://buildroot.uclibc.org/]上有使用教程非常详细)文件系统通常要包含很多第三方软 ...

  2. RPM打包原理、示例、详解及备查

    原文地址:https://blog.csdn.net/qq_16542775/article/details/80961213 RPM(Redhat Package Manager)是用于Redhat ...

  3. RPM打包原理、示例、详解及备查( 转)

    RPM(Redhat Package Manager)是用于Redhat.CentOS.Fedora等Linux 分发版(distribution)的常见的软件包管理器.因为它允许分发已编译的软件,所 ...

  4. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  5. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  6. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  7. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  8. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  9. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

随机推荐

  1. C++结构、共用体、枚举

    一.结构 结构是C++OOP的基石.学习有关结构的知识僵尸我们离C++的核心OOP更近. 结构是用户定义的类型,同一个结构可以存储多种类型数据,这使得将一个事物的不同属性构成一个对象成为了可能.另外C ...

  2. flask请求管道

    请求管道,登录前的验证,否则重定向到登录页面. # coding: utf8 from flask import render_template, request, g, session, redir ...

  3. js 常用方法

    1: 五秒后跳出提示框 setTimeout("alert('已经过了五秒了')",5000) 2:  十秒后自动关闭窗口 <script language="ja ...

  4. Ionic开发实战

    转自:http://blog.csdn.net/i348018533/article/details/47258449/ 折磨的两个月!Ionic从零单排,到项目发布!遇到了很多问题但都一一解决了,此 ...

  5. RAID简介

    RAID(独立磁盘冗余阵列)可以提供较普通磁盘更高的速度,安全性,所以服务器在安装时会选择创建RAID.RAID的创建有两种方式:软RAID(通过操作系统软件来实现)和硬raid(使用硬件整列卡) r ...

  6. c++智能指针实现方式1

    #include<iostream> using namespace std; // 定义仅由HasPtr类使用的U_Ptr类,用于封装使用计数和相关指针 // 这个类的所有成员都是pri ...

  7. Linux Epoll相关知识

    其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及 ...

  8. Async Programming - 1 async-await 糖的本质(2)

    上一篇讲了这么多,其实说的就是一个事,return会被编译器重写成SetResult,所以如果我们的异步函数返回的是一个Task<int>,代码就要改成这样: using System; ...

  9. linux基础学习

    1.默认不写端口号的就是80端口 本地ip:localhost或者127.0.0.1 2.用户管理 id和whoami:可以查看当前用户 who和w查看当前已经登录的用户 (1)添加用户,用户默认的家 ...

  10. unity游戏在logcat中过滤一些不需要的Log

    adb logcat | grep -v "UnityEngineDebug.cpp\|:\s*$" | grep Unity 意义: 1. grep -v "过滤条件1 ...