本文针对华为HG255D,但同时具有一定的通用参考价值
一、刷机篇
要想放心大胆的玩学会刷机是少不了的,经过我的反复多次的折腾总结了自己认为稳定而且简单的方法,最终达到刷不死的境界。
1,刷机和恢复教程(参考地址:http://itbbs.pconline.com.cn/15815647.html)
先上两张图:
华为HG255d只要是电信原版的u-boot就刷不死,所以大家可以放心大胆的刷!
(类似电脑BIOS那样,只要这个没坏,可以装系统换来换去,不管砖头还是不转头,只要按住Reast键开机,登陆网页进入刷机模式任刷)真贴心的设置
刷机固件打包下载网盘:http://l7.yunpan.cn/lk/91krrjpbvq
一、刷openwrt
1.前期固件准备:
①软件:1102-0x20000_hg255d-squashfs-tftp.checksum2.bin
②openwrt固件:0508-openwrt-ramips-rt305x-hg255d-squashfs-By_shcl.bin
(我用的是shcl版的,感觉还不错,你也可以刷其他版本的)
2.连接网线,设置固定IP地址
3.刷机过程
①打开IE并在地址栏输入http://192.168.1.1/upload.html
②用牙签顶住reset键后打开电源,开机后一直保持按住reset键。
③回到IE按回车,再以每秒一次的速度刷新网页直到出现升级页面,就会出现刷机画面,这时候可以松开reset键。
(可以按F5刷新,不过我建议在地址栏按回车键,效果比较好……)
④出现了这个画面,马上上传1102-0x20000_hg255d-squashfs-tftp.checksum2.bin,快速按Update software。上传成功之后,网页页面变为
(这个时候就慢慢等,一开始进入刷机模式,路由器有五六个灯是亮的,等它自动刷好,会自动重启,这是电源灯一闪一闪,最后只有两三个灯亮,就可以确定刷机完成了)
⑤ 自动重启后不要关机,输入192.168.1.1进入管理页,账号root,密码admin,在“备份|刷机”界面中选择:0508-openwrt-ramips-rt305x-hg255d-squashfs-By_shcl.bin固件再次刷机。
(大概等四五分钟,这期间两三个灯常亮,刷完后会自动重启,电源灯会一闪一闪,之后常亮重启完,再次进入输入192.168.1.1进入管理页,账号root,密码admin,可以设置了~~)
二、刷DD-Wrt固件
因为固件问题,这个DD固件不是原生为这款路由设计的,而是华硕RTN13U的DD固件,因为硬件大致相同,所以可以混用
1.前期固件准备:
①软件:1102-0x20000_hg255d-squashfs-tftp.checksum2.bin(和刷OpenWrt的那个是一样的)
②固件:Asus-RTN13U-r17990.bin(听说这是电信原版uboot最稳定少BUG的固件,当然,你也可以尝试下RTN13U其它固件,反正这路由器只要你不改Uboot是刷不死的)
2.刷机过程,参照刷OpenWrt,过程是一个鸟样
①将电脑本地网卡设成固定ip 192.168.1.2 网关留空。
②打开IE并在地址栏输入http://192.168.1.1/upload.html
③网线连接路由器任意lan口,用牙签顶住reset键后打开电源
④选择1102-0x20000_hg255d-squashfs-tftp.checksum2.bin固件后点击升级。
⑤自动重启后不要关机,输入192.168.1.1进入管理页,在“备份|刷机”界面中选择:Asus-RTN13U-r17990.bin固件再次刷机
三、刷回电信固件
刷机过程也是一样的
①将电脑本地网卡设成固定ip 192.168.1.2 网关留空。
②打开IE并在地址栏输入http://192.168.1.1/upload.html
③网线连接路由器任意lan口,用牙签顶住reset键后打开电源
④选择HG255d_telecom.bin固件后点击升级【刷回电信比较简单,刷一次就好,不用刷1102-0x20000_hg255d-squashfs-tftp.checksum2.bin】
等待2-3分钟后原版又回来了(超管账户telecomadmin —- nE7jA%5m)。
2,路由管理方法和软件使用方法(含ipk包的上传安装方法)
用WinSCP在PC和OpenWRT之间传输文件
如果你嫌vi学起来麻烦,不喜欢用vi编辑,那么学会用WinSCP在PC和OpenWRT间传送文件吧。
仍旧以RT-N11+的image文件为例。我们在《在华硕RT-N11+上运行OpenWRT +Asterisk》中提供的编译好的image文件已经提供了对SSH-2的支持,所以可以利用WinSCP工具连接到RT-N11+上方便的实现文件传输。
实现了PC和OpenWRT之间的文件传输,需要编辑Asterisk配置文件时直接传到PC上编辑,编辑完了再传回去就好了,可以不必再学习相对繁复的vi编辑器。
(1)配置WinSCP联接,注意协议选择SCP
2)点击Login后由于密码未填(为空),WinSCP要求输入密码,我们默认密码为空,直接点OK
3)WinSCP联接成功,可以用鼠标拖动实现PC与RT-N11+之间的文件传输了
4)WinSCP会报个错误,不理它,直接点OK过
5)二、安装使用介绍(常规的安装方法):
1. 通过WinSCP将安装包上传至路由/root/ 目录下,然后在SSH中输入命令:
opkg install njit8021xclient_1.1-1_brcm63xx.ipk
另:
WinSCP使用方法:打开WINSCP,输入主机名192.168.1.1,端口号22,用户名root,密码是你刚才设置的,下面的文件协议选SCP。之后登陆。
二、OpenWrt平台的搭建,含交叉编译平台和SDK(ToolChain)开发环境的搭建
这里网上教程很多很详细,我就自己实践过的文章推荐给大家
1,OpenWrt完整平台的搭建
环境:
Ubuntu 10.04,subversion,VMware workstation 7.1.3
、安装好后,在左上角“系统”菜单的“首选项”中选择“屏幕保护程序”,然后去掉左下角的“计算机空闲时激活屏幕保护程序”,然后按“关闭”,这个窗口是没有“应用”或“确定”之类的,直接关闭它就会保存。用惯了WINDOWS的用户注意了。为什么要做这步呢? 因为整个编译过程中有些步骤要等一段时间的,老是自动启用屏幕保护程序,然后还要重新输密码才能退出,也是麻烦事。
首先是得到openwrt-dreambox的源代码。
然后装上各种依赖关系包:
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversi-dev ncurses-term zlib1g-dev
sudo apt-get update
sudo apt-get install libncurses5-dev zlib1g-dev gawk flex patch git-core g++ subversion
(注:backfire对于HG255D绝对是最好的版本选择,不然问题接踵而至)
然后进入home目录,建立文件夹:
makedir /openwrt
cd /openwrt
svn co svn://svn.openwrt.org.cn/dreambox/backfire openwrt-dreambox
cd openwrt-dreambox
./scripts/feeds update -a
./scripts/feeds install -a
然后输入make menuconfig,开始进入内核配置界面:
这里只需选择两项
1. Target System : CPU型号 (RT305X)
2. Target Profile : 路由器新号(系列)(HG255D 只有backfire才有该型号吧)
3.最后: make V=99 (输出调试信息模式下进行)
注:第一次编译由于要下载大量的软件包,慢慢的等吧,快则半小时,慢则2,3小时. 如果下载过慢,建议您中断编译过程,然后用迅雷去主动下载,放到./dl目录下。一个加快速度的小技巧: 本站小编已经将将一些常用的软件包打包成dl.tar,放在http://ul.to/2y8a2w, 下载后用tar xvf dl.tar(在windows下用winrar打开即可,然后你用ftp或者samba之类传到Linux PC上),将解包出来的东东直接放到./dl目录下,相必会大大加快初次安装、编译的速度。同样在http://ul.to/fasgus上可下载linux-2.36.30.10.tar.bz2,当然您也可以用迅雷之类的工具来下。
2、指定平台的交叉编译环境(SDK开发环境的构建)
Openwrt SDK是一个可再定位的,预编译好的OpenWrt工具链,适用于在不从头开始编译整个系统的前提下,针对一个特定平台交叉编译单个用户空间包。
使用SDK的原因:
为了保证二进制和特性兼容性,针对特定的发行版编译自定义软件
编译更新版本的指定包文件
使用自定义的补丁或者不同特性来重新编译已经存在的包
0.下载适合自己路由器平台的相关SDK和ToolChain
如:HG255D的官方下载地址为:
http://downloads.openwrt.org/attitude_adjustment/12.09/ramips/rt288x/
其中:
OpenWrt-SDK-ramips-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2
OpenWrt-Toolchain-ramips-for-mipsel_r2-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2
这两个是我们要下载的文件,(不是说SDK么,那是应为ToolChain里面有我们SDK编译是需要的lib等其他库文件)
0. 安装编译环境需要的相关依赖吧(多装总部少装问题要好):
sudo apt-get update
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev
sudo apt-get install libncurses5-dev zlib1g-dev gawk flex patch git-core g++ subversion
1. 把OpenWrt-SDK-ramips复制到一个目录,解压
tar jxvf OpenWrt-SDK-ramips-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2tar.bz2
2. 进入目录
cd OpenWrt-SDK-ramips-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2
3. 将自己的项目代码目录拷贝到本目录的 package目录下(下面也会讲到,这里只是提一下)
注意 Makefile 必须遵守openwrt的规则, 可参考
http://blog.chinaunix.net/uid-27194309-id-3432651.html
4. 编译, 成功后在bin/ar71xx/packages目录下可以看到相关的ipk文件, 可用winscp 拷贝出来
注:
#编译所有组件 make V=99
#单独编译某个组件 make package/{PackageName}/compile
5. 安装到路由器上实验, 这个你们都懂的
注:项目的src里的Makefile源代码生成的目标程序名 = PackageName 根目录(src上层目录)下面的 Makefile 里面定义个PKG_NAME,不然各种奇葩的错误等着你,而且官网上没有文档说明这点。
另外:千万不要看网上说编译完一个package后要执行下make distclean以清理之类的,要不然等着出现各种问题吧,最后不的不得重新解压我们的SDK。
#注: SDK的目录不要改动, 否则出现如下错误
xxg@xxg-desktop:~/SDK-ar71xx-gcc-4.6-linaro_uClibc-0.9.33.2$ make
/bin/sh: /home/xxg/OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/host/bin/find: not found
/bin/sh: /home/xxg/OpenWrt-SDK-ar71xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2/staging_dir/host/bin/find: not found
三、OpenWrt下创建自己的软件包,又称在OpenWrt下做程序设计,或OpenWrt的嵌入式开发
1,了解Makefile
具体的Makefile细节规则参见一下几篇不错的文章:
openwrt SDK, 利用SDK生成自己的ipk安装包:
http://blog.chinaunix.net/uid-27194309-id-3432651.html
OpenWrt增加软件包方法
http://blog.csdn.net/niyufeng/article/details/7390755
(原版:http://wiki.openwrt.org/doc/devel/packages)
[OpenWrt] 创建软件包
http://blog.csdn.net/sydjm/article/details/8252336
openwrt下面创建/添加package—-Makefile模版
http://blog.csdn.net/hdw10/article/details/7939336
特别注意事项:
1,项目的src里的Makefile源代码生成的目标程序名 = PackageName 根目录(src上层目录)下面的 Makefile 里面定义个PKG_NAME,不然各种奇葩的错误等着你,而且官网上没有文档说明这点。
2,src下面的Makefile也是要注意和以前的在linux下的区分一下的
$(CC) 和 $(CXX) 是openwrt 的特定交叉编译器,在编译openwrt 时候创建的,在此直接使用即可。$(LDFLAGS) ,$(CFLAGS) 是用交叉编译器链接和编译文件时必须要加的标志。很多编译出错的原因都是处在此!!
参见:
http://blog.csdn.net/han_dawei/article/details/7939336 文章末尾
http://fleshandmachines.wordpress.com/2011/08/22/openwrt-cc-programing/ 文章中的模版(注意C和C++的区别)
3,这样的错误:
“makefile tab Makefile:2: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.”
那是应为:
在每个命令前面要有一个tab字符。
但有些编辑器会自动将tab转为四个或八个空格。
如:
set tabstop=4 # 四个空格。
set shiftwidth=4 # 自动缩进的宽度。
check your editor!
参见:http://hi.baidu.com/xmuwubo/item/4f504d55dfaa28dbd48bacc3
4,程序依赖的动态库PackageName/Makefile里的 DEPENDS 选项要写
,并且在PackageName/src/Makefile 里的编译选项后面也要写
如:
define Package/PackageName
……………………………………….
DEPENDS:=+libpcap +libopenssl
Endef
2,两个实例帮你了解OpenWrt平台下程序设计
2.1 hellowrld C语言版
2.2 hellowrld C++ 版
参见(老外做学问真的很认真):
http://fleshandmachines.wordpress.com/2011/08/22/openwrt-cc-programing/(需翻墙)
http://www.gargoyle-router.com/wiki/doku.php?id=openwrt_coding
注意:其中作者解决C++程序中使用STL库函数而我们的OpenWrt默认又不集成STL库的解决 办法,作者是按OpenWrt的两个版本( Kamikaze版和White Russian 版,作者说他文章中的解决办法是针对White Russian 版的可能对Kamikaze版没效果),说实话我百度了半天Kamikaze版和White Russian 版的区别也没搞出个所以然:-(,我就知道我的0508固件。
另外:我的是编译的时候就报错了:Package memwatch is missing dependencies for the following libraries: libstdc++.so.6 ,这时我们前面下载的:
OpenWrt-Toolchain-ramips-for-mipsel_r2-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2
就用上了,解压之,然后
1,Copy”OpenWrt-Toolchain-ramipsXXX/usr/lib/libstdc++.so.6.0.16″
到”OpenWrt-SDK-ramipsXXX/staging_dir/target-i386_uClibc-0.9.33.2/usr/lib”
2.cd OpenWrt-SDK-ramipsXXX/staging_dir/target-i386_uClibc-0.9.33.2/usr/lib
执行:
ln -s libstdc++.so.6.0.16 libstdc++.so.6″ (注:后面的那个你想得到的)
也就是复制ToolChain里的库文件的SDK里,然后创建连接(兼容使用)
参考:https://forum.openwrt.org/viewtopic.php?id=42098 (末尾坛友的回复)
对于路由器运行环境那端:
去官网下载了个:libstdcpp_4.3.3+cs-43.32_ramips.ipk 装上就OK了,那么照作者的意思我的0508的固件就是基于Kamikaze版做的了(只是猜测),作者给的方法是在线安装,我想说呵呵,对于我这种苛刻的校园环境路由器直接联网不是那么容易的,所以下载,上传,安装 倒也来的方便。
官方下载地址:
http://downloads.openwrt.org.cn/OpenWrt-DreamBox/packages/ramips/packages/libstdcpp_4.3.3+cs-43.32_ramips.ipk
3,实战移植开源项目到OpenWrt平台,即把自己的符合C/C++标准规范的程序源码修改并在OpenWrt SDK下编译生成安装文件(ipk)
移植开源项目h3cclient到OpenWrt平台
1,前期准备:
找到能在自己学校认证成功上网的开源client代码,具体的大家可以先装个linux系统测试下,如果能在linux下认证成功的话那么移植到OpenWrt也才就有了可能性。
2,代码OpenWrt规范化
(前面说的Makefile说的已经很清楚了,这里再提一下)
OpenWrt要求源代码必须在PackageName/src目录下面,且PackageName下和src 目录下各有一个Makefile,要特别注意前面提到的src下面的Makefile里编译指令和通常写法的区别
3,我编译h3cclient遇到问题及解决办法
1,看到源代码里用到了libpcap 那么本机编译环境自然也的装个吧,另外网上有人说它还用了libgcrypt,所以就一起安装下吧(注意是本机,电脑)
sudo apt-get install libpcap-dev
sudo apt-get install libgcrypt-dev
2,上面说说的程序用了STL缺少库的解决办法(含本机和路由连个运行环境)
3,还有一个就是,好像是什么程序使用了ccache编译时报了错误,google一通,这样解决的:
apt-get install ccache
4,编译时:ERROR:please fix package/helloworld/Makefile
解决办法:没什么说的,检查你的Makefile把骚年,参见我前面说的Makefile规范
5.复制网上的代码的时候注意检查Makefile 中的 Tab是否还在呢
6,想不起来了,记得当时遇到问题是挺多的
四,经验总结篇
玩东西要有神挡杀神佛挡杀佛,兵来将挡水来土掩的勇气。遇到问题解决问题,google,baidu少不了,翻墙那是必然。
五、其它好的文章推荐:
如何在OpenWRT环境下做开发
http://hi.baidu.com/gouooo/item/6932bfa97d23d1981410736a
OpenWrt toolchain工具链环境及开发程序示例
http://blog.appdevp.com/archives/64
Ubuntu 12.04安装QQ2012
http://www.linuxidc.com/Linux/2012-05/59564.htm
openwrt下面创建/添加package—-Makefile模版
http://blog.csdn.net/hdw10/article/details/7939336
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37074.html