做好自己份内事
分类: 其他UNIX
2015-12-02 15:53:38
作者:赵晓筱
日期:2015-11-25
联系邮箱:
最近一直在折腾openwrt。也是刚刚开始接触这个路由系统。个人也是一个小白,下文仅仅描述这段时间自己对openwrt的一些理解,希望给后面的同行们一些帮助,仅个人理解,如有错误。望指正
从官网github上clone下代码之后,具体的目录层次内容可以阅读网上其他大神们撰写的openwrt中的目录层次结构。
在openwrt代码目录下有一个文件feeds.conf.default,或者是feeds.conf;这个文件定义了openwrt官网集成的一些package的代码路径,当在编译之前执行./scripts/feeds update –a命令时。脚本会从文件中定义的路径及方式下载对应的package。这些package下载到源代码目录的feeds文件夹,并且对于生产每个文件夹对应的.tmp文件夹、.index文件、.targetindex文件。仔细阅读对应的文件及文件夹中的内容,貌似定义openwrt中Makefile的内容,及裁剪linux内核的编译选项。
其实了解这个package大致了解openwrt的整体结构还是很好的,最起码在增加一个软件集成或者删除一个软件集成的接口很清晰。个人暂时不能了解其中具体的实现细节。
再看看源代码中package文件夹内容,对于每个文件夹中的内容都是符合package的通用格式。参考官网路径:http://wiki.openwrt.org/doc/devel/packages#dokuwiki__top可以知道如何创建一个自己的package。也可以参考我的文档《openwrt集成asterisk-gui》建一个示例package。如何写好一个自己的package可以阅读官网指南。
编译过程会根本package里面定义的代码路径将源代码下载到目录的dl文件夹中,将下载的源代码复制到目录target-mipsel_24kec+dsp_×××××目录下定义的目录下编译,在package中定义的Makefile中定义将这些编译之后的文件如何放置在文件系统中。所以在编译路径下会有两个文件夹:ipkg-install、ipkg-ramips_24kec。ipkg-ramips_24kec文件夹是放置编译中的临时文件。ipkg-install是按照文件系统的相对路径放置最终需要的文件。在编译的最后一期打包进文件系统,集成在路由系统文件中。
至于内核源码编译裁剪的过程,个人也在学习中。