# wrtoy **Repository Path**: osmt222/wrtoy ## Basic Information - **Project Name**: wrtoy - **Description**: OpenWRT项目易用构建工具 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2015-02-21 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # openwrt-script 最后更新2014.07.08 ## 安装openwrt编译环境 ```bash mkdir -p /works/openwrt cd /works/openwrt git clone https://git.oschina.net/darcyg/wrtoy cd wrtoy ``` ------------------------------- 安装所有编译openwrt所需各种程序库执行脚本后会有提示。如果需要编译全部packages的库,请选`y`代表安装全部工具和依赖程序库,否则选`n`只安装一般必备工具和程序库。 ```bash ./install_openwrt_hostlib.sh ``` *** 桌面版本建议手工安装Beyond Compare 3.x For Linux的源码比较工具 *** 同步openwrt源码到本地,建立工作目录树 ```bash ./install_openwrt.sh ``` -------------------------------- 安装完之后,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 # 本说明文件