openwrt路由联盟程序员

Openwrt学习之路-(1-Openwrt clone and

2017-01-11  本文已影响978人  Creator_Ly
题图:huitu

Openwrt clone and bulid

Openwrt是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。为了更加深入的了解Openwrt,我们从最直接的学习方式开始,clone源码、编译工程。

1.安装linux上的更新组件

为了支持openwrt的安装编译,在linux操作系统上需要安装以下的软件

$ sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext 
texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev git-core 
gawk libz-dev asciidoc libtool libssl-dev libssl0.9.8 xz-utils -y

2.从官网clone openwrt

git clone git://git.openwrt.org/15.05/openwrt.git

这边克隆哪个版本由自己决定,我这边选择15.05稳定版。虽然trunk版本支持的硬件更多,但其不一定稳定,而且会经常更新,对开发固定的硬件开说就没必要了,需要时可以去寻找相应的版本。

clone好的工程如下:

/openwrt-15.05/openwrt$ ls
BSDmakefile  docs                LICENSE   README    staging_dir  toolchain
config       feeds.conf.default  Makefile  rules.mk  target       tools
Config.in    include             package   scripts   tmp

3.升级所有扩展软件源列表

./scripts/feeds update -a

这一步的结果是:产生$(TOPDIR)/feeds目录,存放的就是执行feeds.conf.default文件后的结果

src-git packages https://github.com/openwrt/packages.git;for-15.05
src-git luci https://github.com/openwrt/luci.git;for-15.05
src-git routing https://github.com/openwrt-routing/packages.git;for-15.05
src-git telephony https://github.com/openwrt/telephony.git;for-15.05
src-git management https://github.com/openwrt-management/packages.git;for-15.05

feeds.conf.default里面的路径可以自行修改,如https网址访问不到,则可改为git路径等。

4.安装所有扩展软件

./scripts/feeds install - a
这一步的结果是:在package目录中多了一个feeds目录,里面存放的子目录是到$(TOPDIR)/feeds目录的链接。注意:在Openwrt的TOPDIR/Makefile中,有如下定义:

   # update all feeds, re-create index files, install symlinks
   package/symlinks:
   $(SCRIPT_DIR)/feeds update -a
   $(SCRIPT_DIR)/feeds install -a

那么,可以想见,上述两个也可以合并为一步,即make package/symlinks

5.使用默认编译环境,检查是否能进行编译

make defconfig

这一步就编译环境的基础,如果这一步都没执行成功,说明clone的工程有问题,需要重新clone。

6.配置自定义的镜像配置

make menuconfig

对工程进行配置,这边就以小米的miwifi为基础来进行编译。在选择硬件平台时,我们需要知道该路由器的无线芯片,CPU芯片,然后选出对应的平台设备。
如下:

先选择Target System ---> (Ralink RT288x/RT3xxx)                  
然后      Subtarget ---> (MT7620 based boards)          
     Target Profile ---> (Xiaomi MiWiFi Mini)  
最后 Target Images  ---> (jffs2、squashfs)

这边为平台的首次搭建,其他配置就先不要选择,把上面四个选择好后,就保存退出。

7.编译镜像

make V=99

第一次编译可能需要花费很长的时间,根据你的网络而定,一般情况下大约是2~3个小时,最主要的是花费在下载源码的时间上,以后编译一般在半个小时左右就能编译好。

对于第一次编译源码的下载,我们可以在国内的一些镜像进行手动下载后,拷贝进dl/目录下,这样也可以加快一些编译速度,国内进行可以访问http://dl.openwrtdl.com/

8.编译完成之后,将会多出几个目录如下

编译后增加的目录包括:bin/、build_dir/、dl/、feeds/、staging_dir/。

编译好的工程如下:

/openwrt-15.05/openwrt$ ls
bin          Config.in  feeds.conf.default  LICENSE   rules.mk     tmp
BSDmakefile  dl         include             Makefile  scripts      toolchain
build_dir    docs       key-build           package   staging_dir  tools
config       feeds      key-build.pub       README    target

对于Openwrt的目录结构将在另外一篇"Openwrt directory structure"进行讲解。

9.make步骤分析

简单来说,一旦OpenWrt buildroot已正确配置,如指定目标平台和体系结构,用户空间包已经选择等, OpenWrt buildroot会通过以下步骤编译镜像:

Openwrt clone and bulid的分析就到这边,有感悟时会持续会更新。

注:以上内容都是本人在学习过程积累的一些心得,难免会有参考到其他文章的一些知识,如有侵权,请及时通知我,我将及时删除或标注内容出处,如有错误之处也请指出,进行探讨学习。文章只是起一个引导作用,详细的数据解析内容还请查看Linux相关教程,感谢您的查阅。

上一篇下一篇

猜你喜欢

热点阅读