(六)buildroot使用详解
为什么要使用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使用详解的更多相关文章
- HTTP协议 (六) 状态码详解
HTTP协议 (六) 状态码详解 HTTP状态码,我都是现查现用. 我以前记得几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了. 如果 ...
- C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)
前面三篇文章<C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)>.<C++11 并发指南六( <atomic> 类型详解二 std::at ...
- C++11 并发指南六(atomic 类型详解三 std::atomic (续))
C++11 并发指南六( <atomic> 类型详解二 std::atomic ) 介绍了基本的原子类型 std::atomic 的用法,本节我会给大家介绍C++11 标准库中的 std: ...
- C++11 并发指南六( <atomic> 类型详解二 std::atomic )
C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍) 一文介绍了 C++11 中最简单的原子类型 std::atomic_flag,但是 std::atomic_flag ...
- 小白进阶之Scrapy第六篇Scrapy-Redis详解(转)
Scrapy-Redis 详解 通常我们在一个站站点进行采集的时候,如果是小站的话 我们使用scrapy本身就可以满足. 但是如果在面对一些比较大型的站点的时候,单个scrapy就显得力不从心了. 要 ...
- UI第六节——UINavigationController 详解
1. UINavigationController 是一个容器类.里面盛放的是UIViewController. 容器的意思是,如果你不放入UIViewController,里面就是空的,什么也没有. ...
- ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务
感谢一路走来默默支持和陪伴的你~~~ -------------------欢迎来访,拒绝转载-------------------- 一.Rest API基础 ArcGIS 平台提供了丰富的REST ...
- 六. Vue CLI详解
1. Vue CLI理解 1.1 什么是Vue CLI 如果你只是简单写几个Vue的Demo程序, 那么你不需要Vue CLI,如果你在开发大型项目那么你需要它, 并且必然需要使用Vue CLI. 使 ...
- buildroot使用详解
为什么要使用buildroot? (文件系统搭建,强烈建议直接用buildroot,官网[http://buildroot.uclibc.org/]上有使用教程非常详细)文件系统通常要包含很多第三方软 ...
随机推荐
- hive端建表中文注释乱码
背景:mysql编码是utf-8,mysql中建库建表中文显示都正常,但在hive窗口中建表时字段中文注释均乱码的问题. 问题:hive中建表后字段中文注释显示异常. 1. 定位 mysql 端问题 ...
- 删除ELK的索引
终于找到一个工具,curator,可以搜索相关信息. 记录一下: 1,查询索引: curator_cli --host 10.2.16.191 --port 9200 show_indices - ...
- nginx+gunicorn拓扑
加装Nginx是否有必要 Nginx作为代理服务器,监听来自外部的80端口的请求:而Gunicorn负责监听本地机8000端口的请求.Nginx会把来自外部的请求转发给Gunicorn处理,接收到响应 ...
- IntelliJ IDEA打jar时常遇见的问题
1.打包的时候提示 manifest.mf already exists in vfs 解决方案:这个文件夹删除掉,再重新build打包即可 2. 第一个选择“extract to the targ ...
- MySQL_数据表命令
目录 数据表操作 1.创建数据表: 2. 修改表结构: 数据表查看 1.查看数据库中所有表的信息 2.查看表结构 3.查看创建表时所输入的命令 4.删除数据表 数据表操作 关于Mysql的数据类型,点 ...
- poj2299(归并排序求逆序对)
题目链接:https://vjudge.net/problem/POJ-2299 题意:给定一个序列,每次只能交换邻近的两个元素,问要交换多少次才能使序列按升序排列. 思路:本质就是求逆序对.我们用归 ...
- Oracle-DQL 4- 多表查询
多表查询: 1.笛卡尔积SELECT * FROM dept;--查询员工的信息和其所在部门的信息SELECT ename,job,dname,locFROM emp,dept; --集合A中的所有元 ...
- Web循环监控Java调用 / Java调用.net wcf接口
背景介紹 (Background Introduction) 目前有一些报表客户抱怨打不开 报表执行过程过长,5.8.10秒甚至更多 不能及时发现和掌握服务器web站点情况 用戶需求(User Req ...
- Centos修改时间
1. 普通用户 a. 获取超级用户root权限 命令:su或者su -或者su - root b. passwd 用户名 2. 超级用户 a. 打开system-auth文件 命令:vi /etc/p ...
- navicat 使用 pymysql模块
新健库 ,新增字段+类型+约束 设计表:外键(自增) 新建查询 建立表模型 /* 数据导入: Navicat Premium Data Transfer Source Server : localho ...