• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

wrtoy: OpenWRT项目易用构建工具

原作者: [db:作者] 来自: 网络 收藏 邀请

wrtoy(wrtoy构建玩具)

最后更新2015.04.28

增加hard_manage.sh配置的project_name属性.补丁工具功能优化

安装使用问题加群290045468,可以在线解答

写在前面的话(2015.0228)

非常郁闷,因为联想笔记本电脑linux驱动的问题,这个Readme写了5次,每次写了两三百字就死机,也不保存写过的信息。实在没有心情更新帮助了。

因为原有的构建脚本被废弃了,这里简单说说使用方法

安装openwrt编译环境

先安装ubuntu-utils shell工具集

mkdir -p /works/utilscd /works/utilsgit clone https://git.oschina.net/darcyg/ubuntu-utils.git cd ubuntu-utils/ubuntu_install_script./install_base_lib.sh./install_cppide.sh./install_utils.shcd ../vpnssh_proxy./install_proxy.shcd ../ubuntu_install_script./install_env.sh

以上操作,将安装大量的编译工具,都是linux下openwrt或其他开发不可或却的库与工具即便最小编译固件用不到相关库,也会某些特定功能开发而用到.

建议安装install_proxy.sh,将安装基于sock5的代理服务.其中需要用户自己申请一下ssh或shadowsocks代理帐号,并修改相关配置代码(在vpnssh_proxy/bin目录的shadowsocks用config.json和vpn.sh中)

安装proxy非常关键,部分库通过代理才能下载.配置好以后.通过vpn.sh或svpn.sh开启代理服务使用proxychains [cmd]来保证,下载通过代理服务器进行.

有兴趣的人,可以安装一下install_git.sh,主要提供*git的短命令(具体看源码)*配置自动登录git服务器的~/.netrc,这个对在私有git上部署的库的下载访问很有用

mkdir -p /works/openwrtcd /works/openwrtgit clone http://git.oschina.net/darcyg/wrtoycd wrtoy

安装所有编译openwrt所需各种程序库执行脚本后会有提示。如果需要编译全部packages的库,请选y代表安装全部工具和依赖程序库,否则选n只安装一般必备工具和程序库。

./install_openwrt_hostlib.sh

*** 桌面版本建议手工安装Beyond Compare 3.x For Linux的源码比较工具 ***

开启中文信息模式

echo 1 > .zh_cn./build -h

同步openwrt源码到本地,建立工作目录树

./build -I

打mtall开发板的目标平台补丁到openwrt

./build -pp mtall

打mtall项目的应用补丁到openwrt

./build -po mtall

升级openwrt,仓库feed包

./build -f

执行make menuconfig

./build -m

开启tftp服务,并编译固件,拷贝固件到tftp目录

./build --tftp./build -bj 8 -c

本项目构建四个基本程序

  • build

    构建常用操作

  • openwrt_synchro

    从源同步数据到本地(build会自动处理)

  • hardware_manage

    硬件方案的配置工具

  • publish

    固件提交到统一服务器(通过scp传数据)


安装完之后,openwrt默认工作路径为:

/works/openwrt

工作目录结构

+ /works/openwrt    + dl                # packages 中各种编译用源码包下载路径    + staging_dir       # 软链到openwrt目录下的staging_dir,减少更新主项目时重新build工具链的时间     + build_dir         # 软链到openwrt目录下的build_dir,减少更新主项目时重新build工具链的时间    + nfs               # nfs目录配置 直接软链openwrt软链目录下的bin/ramips目录中的文件    + tftproot          # tftp目录配置 直接软链openwrt软链目录下的bin/ramips目录中的文件    + openwrt.git       # openwrt的官方git代码,不再此版本下工作    + works             # openwrt导出的不同分支版本的源码目录        + 2014-06-25_cb592a3                                # 2014-06-25的 分支版本 (工作目录)        + 2014-06-25_cb592a3.orig                           # 2014-06-25的 分支版本 (用于生成patch的目录)    + openwrt           # 当前openwrt工作目录,此为一个软link,如直接指到works/2014-06-25_cb592a3目录下的分支路径    + thirdparty_libs   # 第三方编译库,解决某些HOST编译时,系统缺乏相关依赖库的问题    . lastgit           # 最后的git提交版本    . usegit            # 当前使用git提交版本(openwrt的软link)    + openwrt-script    # 本脚本工具库

以下说明废弃掉

openwrt-script 脚本库功能

配置更新

- 增加rt5350库新设备配置更新(2014.07.08)- 增加lan/wan共口的配置更新(2014.07.08)

install_openwrt.sh

本脚本用于新安装环境和更新已有环境中openwrt源码到最新版本更新openwrt.git,也更新其他第三方feeds/packages最新版本,不造成编译链工具重新制作

update_openwrt.sh

本脚本仅更新已有环境中openwrt源码中的feeds中的包到最新版本不更新openwrt.git,只更新其他第三方feeds/packages最新版本,不造成编译链工具重新制作

patch_openwrt.py

应用在projs目录下的所有相关补丁到/works/openwrt/openwrt的当前工作用的源码中

base和common目录中是每次补丁都会操作

proj_*的目录,在patch_openwrt.py是指定项目名,会选择应用

./patch_openwrt.py proj -p 5350 -w

上述例子中5350即项目名称,脚本会自动应用projs/proj_5350中的补丁

帮助

./patch_openwrt.py -h

应用补丁(虚拟)

./patch_openwrt.py proj -p 5350 

应用补丁(写入补丁,同时删除测试补丁产生的文件*.fix)

./patch_openwrt.py proj -p 5350 -w

补丁测试生成(写入*.fix测试补丁,不会修改原文件,用来测试补丁脚本)

./patch_openwrt.py proj -p 5350 -f

补丁的格式

补丁采用yaml格式(类json)* 最新支持单YAML文件,多条配置补丁* 字符替换std和正则替换模式regex,orig字段支持单或多条规则

具体参考projs/base中的示例

这里仅对单条补丁中的模式表示说明:mode

- std       # 或不填mode项目,为标准字符串替换(允许多条规则,仅替换第一条匹配成功)- std+      # 或不填mode项目,为标准字符串替换(允许多条规则,全部匹配替换)- regex     # 匹配多条正则规则的一条,匹配正确进行替换(仅替换第一条匹配成功)- regex+    # 匹配多条正则规则,匹配正确进行替换(全部匹配替换)- add       # 在文件最后或某行后面增加一行,不会重复添加- debug     # 打印详细一点的信息- source    # 显示源字串和替换字串- copy      # 拷贝文件- del       # 删除文件- skip      # 跳过这一项    

build.sh

辅助编译命令行工具,直接对/works/openwrt/openwrt目录下进行操作,减少目录切换的必要

命令格式

./build.sh [f/m/b/d/j/j2/j4/j8/c/set/down/down+/clear/clear_tmp]
- f feeds 更新feeds- m menuconfig 从菜单选择配置- b build 编译固件- d debug 显示详细编译信息- j[j2/j4/j8] 编译中多线程的使用- c copy 将目标目录生成的文件拷贝到tftpboot目录,并建立软链便于下载- set 设置开发板信息(用于-c参数文件拷贝)- down[down+] 下载源码或通过代理下载- clear 清除工作目录中的文件- clear_tmp 清除tmp目录下的临时文件

设置开发板信息(用于c复制参数)

./build.sh set

输入boardname(板名),platform(方案),chipname(芯片名),tftplink(tftp软链)4个参数

升级feeds,并启动menuconfig,配置好以后编译(详细显示d,j参数),并更新到tftpboot目录中的5350软链

./build.sh f m b d j c

工作目录结构

+ /works/openwrt/openwrt-script    + common                        # 共享脚本程序库    + extra                         # 第三方packages库(手工安装)此目录被禁止提交    + projs                         # 项目本地patch库        + base                      # openwrt基本补丁            . 001-open-wireless.yaml                                     # 打开无线补丁            . 002-set-chinese.yaml  # 中文语言配置用补丁(特别注意)        + common                    # openwrt共享补丁        + demo                      # 补丁功能测试用例        + proj_5350                 # 5350通用补丁        + proj_7620n                # 7620n通用补丁        + proj_7620a                # 7620a通用补丁                    + proj_7620a                # 7620a通用补丁                    + proj_mediastation         # 媒体基站项目用补丁        + proj_smarthomegate        # 智能家居项目用补丁    + tools                         # 额外工具脚本目录    + utils                         # python程序库    . extra.sh                      # 未来用来刷新第三方package库的脚本,暂空    . install_openwrt.sh            # 安装或切换最新分支源码到openwrk软链的工具    . install_openwrt_hostlib.sh    # HOST编译源码所需依赖库工具库安装    . patch_openwrt.py              # 给当前openwrt打内核补丁    . update_openwrt.sh             # 升级当前openwrt的软链下的feeds/packages    . README.md                     # 本说明文件

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap