MakerRouter创客路由openwrt编译教程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《MakerRouter创客路由教程》4.0编译定制:编译OpenWrt固件驿外断桥边,寂寞开无主。已是黄昏独自愁,更著风和雨。无意苦争春,一任群芳妒。零落成泥碾作尘,只有香如故~经过了30余个章节,经过了被无数学员催着想要知道怎么编译的过程。终于教程进入到第四大部分。hoowa从来没有说过关于编译OpenWrt很多人都很好奇如何编译,其实编译本身是非常简单的事情,只是它需要积累很多其他的基础。没有人可以通过看一本书学会一项技能,看这本书同样也不能,学会一项技能靠的是自己的努力。从4.0开始,我们的教程将围绕编译、驱动、定制OpenWrt系统。这部分将包含了AxWRT系统如何产生的、如何根据板子去定制系统,以及如何完成简单的内核驱动程序驱动外围硬件。知识量尤为大,如果只是会个编译系统,那么不需要具备什么知识(同样,刚才讲过了,编译个系统尤为简单,但是稍微深入点都需要具备一定基础,想学会编译系统就能定制OpenWrt简直是痴人说梦!),如果想把这一大部分完全吃透,需要具备一定C语言基础。OpenWrt编译环境编译与交叉编译将源代码产生CPU可以执行的目标程序这一过程叫编译,就像不同的语言之间翻译一样。通过对OpenWrt系统的编译,可以产生用来运行在教学板上的程序。为何要交叉编译?简单的说,就是在一种CPU上产生另外一种CPU可以执行的目标程序。因为路由器的CPU性能实在是太低了,用其自身去完成这个编译的过程是非常非常漫长的(几天时间),而是用我们现在的电脑,可以在几个小时甚至几十分钟内产生,所以叫交叉编译。Host:宿主机,专有名词,表示用来编译用的机器,一般是我们的电脑或虚拟机Target:目标机,在这里就表示我们的教学板AxWRT与OpenWrt关系在刚开始的章节我们有介绍过AxWRT就是基于OpenWrt所产生的一个用于教学的版本。AxWRT在源代码层面与OpenWrt的BarrierBreaker发行版几乎完全一致,区别在于:AxWRT专门处理了OpenWrt不同程度的存在一些软件包的Bug在教学过程中做了部分软件包的修正feeds中的软件包,节省编译时需要连接网上资源的步骤AxWRT源代码:的SVN源代码仓库:的版本关系OpenWrt存在很多发行版几乎没间隔一段时间的发行版都有一定变化,有的变化非常大。目前已知的发行版有:Backfire10.03.1:2012年发行AttitudeAdjustment12.09:2013年发行BarrierBreaker14.07:2014年发行Trunk:主线版本,无明确版本号,每一年根据Trunk产生一个发行版。OpenWrt官方预编译好发行版本:官方源代码下载:相比较Trunk中的内容比较新,但是存在诸多Bug。各发行版功能比较稳定,适于产品开发。一个标准的官方源代码,不一定适合你手中的硬件,这个时候就需要进行定制,这个定制的过程包括参数定义及编译。如果所使用的硬件没有被OpenWrt官方所支持,就需要有具备嵌入式Linux经验的工程是进行移植。准备编译环境在开始编译之前,需要准备一系列系统环境和软件包。在编译时我们可以使用在第二大部分中所创建的Centos虚拟机或是独立电脑。现在准备好你的编译用系统,并且将其开机确保网络连接畅通!编译所需的电脑Centos操作系统或是安装Ubuntu操作系统亦可CPU性能足够,首次编译所需要时间在30分钟到5个小时之间,视电脑性能而定,多核处理器效率更高。具备至少2G以上内存20G的硬盘空间,硬盘的读写速度直接影响到编译速度,SSD固态硬盘是最好的Centos所需编译软件包YUM安装YUM是Centos系统下的安装工具,可以安装上我们全部所需的编译用软件包。YUM工具安装时候会有提示是否继续,输入y确认继续完成安装,如果过程中有下载失败的软件包,可以再重复执行安装,YUM会自动找到没有完成的部分给予完成。DevelopmentTools中包含了大量编译用工具,时间较长,如果网络不好只能等待。[root@axwrt_host~]#yumgroupinstallDevelopmentTools[root@axwrt_host~]#yuminstallwgetncurses-develzlib-develvim-enhancedUbuntu所需编译软件包sudoapt-getinstallgccg++binutilspatchbzip2flexbisonmakeautoconfgettexttexinfounzipsharutilssubversionlibncurses5-devncurses-termzlib1g-devgawkasciidoclibz-devOpenWrt固件生成编译基本上干了啥编译大约做了以下几件事情bin结尾)获取AxWRT源代码在编译OpenWrt的过程中,不能使用root超级用户,因此以下例程以帐号hoowa进行操作,请各位自己创建一个普通帐号完成后续操作。以下两种方式获取源代码都可以!返回当前账户主目录[hoowa@axwrt_host/]$cd~[hoowa@axwrt_host~]$通过SVN方式获得源代码svnco--usernameaxwrt--passwordaxwrt[hoowa@axwrt_host~]$mvtrunkaxwrt通过HTTP方式获得源代码[hoowa@axwrt_host~]$wget[hoowa@axwrt_host~]$tarzxfsource.tgz[hoowa@axwrt_host~]$mvsourceaxwrt获取软件包源代码OpenWrt在编译过程中,会去不同的网站下载所需要的软件包,比如内核他就去kernel.org下载等等,这个量很大,而且国内的网络不好,速度巨慢,为了节省这个时间hoowa已经做好了一个软件包列表来缩短AxWRT的编译时间。这部分包很大,容量超过500MB,可以使用wget命令直接下载,也可以别的方式下载传到电脑中[hoowa@axwrt_host~]$cdaxwrt/[hoowa@axwrt_hostaxwrt]$wget[hoowa@axwrt_hostaxwrt]$tarxfsrcpkgs.tar[hoowa@axwrt_hostaxwrt]$mvsrcpkgsdl请将srcpkgs.tar在你的电脑上保留住,以后还可以继续用,真心是节省时间啊。OpenWrt菜单选项配置OpenWrt菜单选择非常丰富,默认的AxWRT已经预设好了选项,如果只想体验下编译可以不做修改,如果选择错某些菜单选项可能导致编译失败,解决办法就是不断的尝试!首次进入菜单选项,需要点时间,系统要收集整理已经预设的软件包[hoowa@axwrt_hostaxwrt]$makemenuconfig进入后屏幕中将显示出来菜单选项如图:图4001选项菜单的使用1.通过键盘上下可以更换选项2.有---符号的选项代表有子菜单3.通过按回车进入选项或修改选项的值4.通过键盘左右可以选择和点击屏幕下面的按钮:Select选择、Exit退出、Help帮助、Save保存、Load读取5.最终确认选择Save后再选择Exit完成确认退出选项有很多种大体上作用如下表所描述选项作用TargetSystem目标设备芯片类型,AxWRT系统只保留了RalinkRT288x/RT3xxx。教学板MT7620芯片就是RT系列的升级版Subtarget目标子类型,一般是具体板子类型TargetProfile针对不同路由器的版本再做的一个明确选项参数,一般默认即可TargetImages生成的固件文件采用何种分区格式Globalbuildsettings编译时的一些全局参数,这些参数与Linux内核或GCC编译器相关Advancedconfigurationoptions高级选项参数,用于OpenWrt开发人员,一般用不上BuildtheOpenWrtImageBuilder除了编译固件,再编译一个固件编译环境,可以分发给团队中的其他人使用。一般是厂商不想开放自己的全部源代码,给第三方合作伙伴提供这玩意BuildtheOpenWrtSDK产生OpenWrtSDK环境,就是另外一个开发环境BuildtheOpenWrtbasedToolchain单独编译出OpenWrt的交叉编译工具Imageconfiguration编译好的固件所附带的参数信息Packagefeatures一些软件包特性Basesystem基本系统命令软件包Administration高级管理命令软件包BootLoaders引导程序,教学板不用固件附带,所以这里无选项Development开发用工具包Firmware不要被名字混淆了,这个的意思是,固件中是否带某些其他外围芯片的固件Kernelmodules内核编译参数,这里的参数都来自芯片厂对内核的预设配置Languages编程语言软件包Libraries库软件包LuCIOpenWrt下顶顶大名的LuCI界面包Mail电子邮件相关的软件包Multimedia多媒体软件包Network与网络相关的软件包Sound声音相关的软件包Utilities工具软件包VideoStreaming视频流服务软件包并不是所有软件包都选上了,实际上如果所有软件包都选上了一方面编译时间可能要按天计算,另外一方面用来存放固件的FLASH容量也不足以安装,所以OpenWrt的选择菜单在软件包选上有两种策略:Buildin:绑定,直接将所选择软件包绑定到固件中Module:模块,所选择软件包不绑定到固件中,以模块的形式存在,在需要时候使用opkg命令安装更换两种策略的方式很简单,选中要更换策略的软件包,按空格键,如果显示为[*]则表示绑定,如果显示为[M]则表示模块。hoowa推荐第一次编译不要去调整软件包,软件包存在很多依赖关系,先成功一次,然后再去选择哪些想要,哪些不想要!编译固件编译使用make指令可以满足多种不同的功能,选择一种方式来完成编译即可。不显示信息直接编译[hoowa@axwrt_hostaxwrt]$make采用双核编译,采用多核编译可以节省至少30%的编译时间,但是由于软件包依赖原因可能会产生编译错误,并且不易于查找错误。参数-j后面跟随线程的数量,根据CPU的配置来填写。[hoowa@axwrt_hostaxwrt]$make-j2显示全部信息采用双核编译(挂起到后台处理,但是前台显示编译信息)[hoowa@axwrt_hostaxwrt]$makeV=99-j2&最Nice稳妥的单编译参数(挂起到后台处理,但是前台显示编译信息)[hoowa@axwrt_hostaxwrt]$makeV=99&关于编译中断了?如果编译过程中遇到错误或手工停止掉编译都没问题,只要重复执行编译命令,他会从中断的地方继续编译。首次编译!OpenWrt首次编译因为要先编译交叉编译工具,因此所花费的时间是最长的,之后只要没执行过清理,再编译就会只编译改变的地方,那样编译时间就很短了。清理编译有的时候我们需要清理掉已经做过的某些编译操作。清理掉包括已编译好:固件、软件包[hoowa@axwrt_hostaxwrt]$makeclean清理掉包括已编译好:交叉编译工具、固件、软件包[hoowa@axwrt_hostaxwrt]$makedir

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功