关于buildroot移植的思考

buildroot是一个成熟的SDK框架,基于它有了openwrt。

曾经有一个项目,需要将原有的OpenWrt SDK改造,并且将软件框架重新定义。尝试精简原来的OpenWrt,并且删除所有的软件包,留下rootfs、busybox这些基本的东西,但是还是有很多地方不如人意,难以修改(定制的过于深入)。于是找到它的前身,buildroot,进行修改。

拿到buildroot后。发现和OpenWrt的一大区别就是耦合性低。在OpenWrt里面一些自动编译的操作,需要在buildroot里面手动编译。比如make busybox-rebuild。对于linux内核来说,在make linux-menuconfig之后,需要将.config手动拷贝回来,而不是自动同步。虽然麻烦一点,但是我觉得这样是一个比较好的做法,毕竟之前做OpenWrt的时候发现整个流程太过于自动化,修改个内核配置之后一串内核的配置文件被修改合并而让人摸不着头脑。

另外,将OpenWrt的SDK移植到buildroot也是令人愉快的,拷贝toolchain,busybox和内核,再花功夫研究文件系统image的生成,写一个post-build脚本,配置CPU架构等一些参数,image就可以下载运行了。当然需要根据自己的需求精简、修改一些东西。比如你想把平台有关的东西塞到一些文件夹里面,再添加一些文件夹作为其他平台的根文件夹,多个-平台存在于同一份SDK里面,这样都是可以的。不过修改的时候不要定制过度,把一些以后有用的东西给删了,到最后要用的时候还是要改回来。当然了,只要你有toolchain、内核和文件系统layout就可以做移植了,不一定要给出很好的原版SDK。

buildroot的定制是比较便捷快速的,比如你移动一些文件夹,像fs,arch这些,只需要修改Config.in和makefile就可以了。因为它耦合性程度低的优点,修改起来较为容易,不会出现牵一发而动全身的现象,所以自己修改的时候也不要增加太多的关联,给后续的维护带来麻烦。

buildroot的框架比较清晰。首先它软件包的定义和OpenWrt类似,不含有其他的冗余成分,做SDK该做的事,规定软件到哪里编译,传递哪些编译选项,安装到哪里。对于每一个组件,即使是toolchain也是一个软件包,这样一来,只需要修改Config.in和相关的makefile就可以定义自己想要的东西。如果你还不明白,buildroot提供了一个pdf说明文档,仔细看一遍再继续研究。而OpenWrt的文档大而全,这是不可避免的,因为两者的定位不同。

buildroot可以让人更加清晰地学习linux。学习linux的编译运行流程,buildroot比当前热门的OpenWrt好得多。OpenWrt这个发行版定制了很多东西,你一个make就完成的事情,可能浑然不知里面发生了什么。当你拿到buildroot,即使是别人做好的,只要你仔细看一下里面的流程就会明白一个linux是怎么生成的,因为它的框架比较简单。当然buildroot也是一个大而全的东西,因为它是一个开源的软件,它支持很多体系结构,可以适当按照自己需要精简。若纯粹自己用,不精简也没关系。

buildroot没有暗示你使用什么。对于OpenWrt来说,使用了uhttpd,你可能就需要libubox和luci,lua这一堆东西,如果你不用这些,你使用OpenWrt可能就意义不大了。而使用了buildroot,你会选择自己要用什么,从busybox开始逐渐搭建你自己的王国。当然了你也可以使用uhttpd这一堆东西。

时间: 2024-10-30 09:02:54

关于buildroot移植的思考的相关文章

使用buildroot搭建linux文件系统

(文件系统搭建,强烈建议直接用buildroot,官网上有使用教程非常详细buildroot官网) 文件系统通常要包含很多第三方软件,比如busybox,tslib,qt,vim,交叉编译工具等,为了避免繁杂的移植工作.buildroot应运而生.通过menuconfig配置我们需要的功能,不需要的功能去掉,再执行make指令编译,buildroot就会自动从指定的服务器上下载源码包,自动编译,自动搭建成我们所需要的嵌入式根文件系统. 1:获取buildroot 我们可以从buildroot官网

《iOS用户体验》总结与思考-改动版

假设转载此文.请注明出处:http://blog.csdn.net/paulery2012/article/details/25157347,谢谢. 前言: 本文是在阅读<ios用户体验>的过程中,记录的总结和个人的感受思考.不免有错误之处,恳请读者指正,在以下留言就可以. 第一章:ios人机界面指南概述 1.智能手机的特点:大尺寸.高分辨率.强大的计算能力 2.签名交互:滚动轮.导航键.按键和硬键盘.软键盘.触控笔.触屏.输入特性又被称为"签名交互",用户能够通过输入方式

04.移植u-boot

1.读readme获取信息    1.1 由Building the Software可知,需修改顶层makefile,指定架构和编译器    ifeq ($(HOSTARCH),$(ARCH))    CROSS_COMPILE ?= arm-linux-    endif ARCH = arm    CROSS_COMPILE = arm-linux-2.新建一个单板    cd board/samsung/ cp smdk2410 smdk2440 -rf  cd ../../includ

对于字节序小端和大端的思考

最近公司处理器要换核,由小端处理器ARM换成大端处理器POWERPC,bootloader以及kernel的移植工作交给了我,这是一个很有挑战的工作,自己也非常兴奋. 如此一来,当今主流的嵌入式处理器(MIPS ARM PPC)也都算接触过啦. 这几天开始动手做移植,首先要解决的是大小端的差异,进过学习思考,感觉大小端还是很有研究的必要,自己的思考总结记录在此,与大家分享,以备后用. 从网上可以查到的大小端的解释,小端是低端数据存放在低端地址,大端是高端数据存在低端地址.大小端真的就这么简单吗,

2.uboot和系统移植-第5部分-2.5.uboot源码分析1-启动第一阶段

第一部分.章节目录 2.5.1.start.S引入 2.5.2.start.S解析1 2.5.3.start.S解析2 2.5.4.start.S解析3 2.5.5.start.S解析4 2.5.6.start.S解析5 2.5.7.start.S解析6 2.5.8.start.S解析7 2.5.9.uboot重定位详解 2.5.10.start.S解析8 2.5.11.start.S解析9 2.5.12.start.S解析10 2.5.13.start.S解析11 第二部分.章节介绍 2.5.

安卓移植读书笔记

第一章 通过阅读本章,初步了解和认识了Android系统的一个整体结构,分为linux内核.c/c++代码库.Android SDK API和应用程序四层.Android的系统移植和应用移植,应用移植是指将一个Android应用程序移植到一个不同的硬件平台上去.需要对代码进行修改从而达到适应其他硬件的效果.系统移植则是让Android系统适应各主流硬件厂商的CPU架构,同时识别各平台上的硬件,其中的重头戏即为linux驱动的开发和移植.再者就是一些关于linux内核的知识,学到使用命令uname

从「集装箱」思考Docker风潮

从「集装箱」思考Docker风潮 -- Docker潮流下的赢家策略 By 高焕堂 (台灣Docker聯盟 主席) 2015/02/20 前言 在许多革命性转折里,经常出现集装箱的身影:它就像幸运草一般,总是带来许多幸福和财运.现在Docker风起云涌,再现集装箱身影,如果开放视野.大力支持它,持续发挥它的潜能和力量,则幸运草就会出现在我们身旁了. 由于Docker集装箱带来的商机,其最直接的受益者是软件管理者(或称维运者),例如软件测试工具业者.测试人员等.因此在今天,不论您是开发者或是维运者

清华EMBA课程系列思考之六 -- 比較文明视野下的中华领导智慧、企业管理与经济解析

告别马年的最后一缕阳光,踏着猴年的钟声,度过了温馨的春节,已然开启了新学期的第一堂课.看题目其貌不扬,但一旦进入课堂,已然聚精会神.唯恐掉队,就请大家跟我一起进入四天的心路修炼旅程,開始我们的新一期思考吧. -- 清华大学人文学院历史系教授 博导  教育部长江学者特聘教授 张国刚 教授 第一天:比較文明视野下的中华领导智慧 透过历史看到个人.看待事物.看待社会.看待人生,我们的推断都是基于历史.历史也是自我的经验知识库: 国学 - 经.史.子.集. 四部之学 --  仁义之道.不能以攻天下之法来

2015这一年的总结与思考

昨天晚上出去和几个朋友交流了一下,聊了很多,思考了一下这一年学习技术的经历,趁着在宿舍养病,将自己的想法记录了下来. 总结过去与思考 从开始决定当码农到现在将近两年零三个月,起初是因为自己专业的科研不是自己想象中的那样,加之对程序员的羡慕和崇拜,于是就走上了码农的不归路.作为非科班出身的学生,和计算机院的学生比起来有先天的劣势,例如好多的基础课程未学习.周围的编程氛围太差等等,然而事实上:正是由于不是科班学生,我们比别人更努力,更愿意付出时间去学习. 去年四月底开始学android,当时是由于实