您的位置:首页 > 运维架构

OPENWRT交叉编译之神州数码校园客户端实践

2014-03-20 16:57 281 查看

OPENWRT交叉编译之神州数码校园客户端实践

以华为HD255G为例
此教程仅供个人使用,不得用作商业用途,本文作者保留最终解释权。

转载请说明出处

浙理工 咸咖啡


附言


本人不是学程序的,也不是学习相关专业的,第一次写教程,如有不详细的地方,请大家指出,如果错误的地方,请大家指正,欢迎交流!

许多学校寝室的上网计费系统是神州数码,神州数码和闪讯比起来,其中一个好处就是不用每天接收那讨厌的短信验证码

,但是因为用的人少,也不像锐捷那样早有人把软件编译到到路由器上,所以我结合网上的一些教程和前辈经验编译了一个神州数码路由客户端供有需要的同学使用。

前段时间在网上看到了神州数码linux系统上网的源代码,想到了现在许多路由器用的都是嵌入式的 Linux ,于是乎,我琢磨着,能不能把linux上的程序写到路由上,问了度娘,得到的答案是肯定的,看了下觉得这个东东在我能力的范围内,就这样,我开始了编译。。。。

简述一下思路,交叉编译ipk文件,首先需要的是开发环境,这里需要ubuntu系统和HG255D SDK开发包,神州数码unlix的源代码,还需要自己写一个makefile文件,makefile文件的意义在于 自动化编译,即只需一个make命令,就可以顺利编译出文件(在下面链接中我贴出了makefile文件,这样大家就不用自己编啦)



我向以下文章的作者表示崇高的敬意,没有他们的辛勤钻研,也就不会找到编译出神州数码ipk 的方法,在此膜拜一下




http://code.google.com/p/zdcclient/
https://github.com/takx/zdclient-for-openwrt
http://blog.csdn.net/eldn__/article/details/9707065
http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=12380
制作原由

我们寝室为了节省网费,2个人用一个网,以前用的是WIN7自带的无线共享,但是虚拟wifi共享十分不稳定,经常掉线,迫不得已,痛苦不堪。为此,我买了个华为HD255G路由器自己捣鼓。

先观摩一下我们寝室的无线路由:







注:我用的版本是OPENWRT 20120828的,在这里关于路由器刷机的教程就不再讲述了,具体问某 宝上的卖家。、

需要准备的材料

1.华为HG255D主机一台,刷好openwrt

2.VMware Workstation 下载地址http://www.pc6.com/softview/SoftView_128.html

3.Ubuntu 12.04 32位版本 下载地址http://www.ubuntu.com/download/zh-CN

4.OpenWrt SDK软件包  下载地址

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

5.神州数码文件包 (zdclient) 下载地址  http://pan.baidu.com/s/1gdeK7on 密码:4p9q

6.神州数码附属ipk文件

http://downloads.openwrt.org/attitude_adjustment/12.09/ramips/rt305x/packages/libpcap_1.1.1-2_ramips.ipk
http://downloads.openwrt.org/attitude_adjustment/12.09/ramips/rt305x/packages/libstdcpp_4.6-linaro-1_ramips.ipk
http://downloads.openwrt.org/attitude_adjustment/12.09/ramips/rt305x/packages/libintl-full_0.18.1.1-2_ramips.ipk
http://downloads.openwrt.org/attitude_adjustment/12.09/ramips/rt305x/packages/libiconv-full_1.11.1-1_ramips.ipk

虚拟机的安装

介于有同学不了解虚拟机,这里我先介绍一下虚拟机,虚拟机就是可以在软件可以在一台电脑上模拟出来若干台PC,比如这个编译需要用到的ubuntu系统,安装在虚拟机上,你使用WIN7也同时可以使用Ubuntu,这里顺便我也做一个简单的虚拟机安装的教程,首先安装VMware Workstation,启动虚拟机,一步一步按照图片设置


选择标准, 在安装盘镜像文件里面选择刚下载的ubuntu 12.04的ISO文件,点击下一步,


在这里输入你的系统的账户信息(等等登陆要用到),接下来几步如图设置,我就不多说了


4000







点击完成,打开虚拟机电源开始安装系统。


等待差不多半小时,安装成功,虚拟机重启,出现登录界面ubuntu login输入你的刚才设置的账户名,回车,输入密码,


登录成功显示admins@ubuntu:`$此时输入startx进入ubuntu桌面


交叉编译环境的安装与调试

在虚拟机进入桌面后,打开终端,安装各种依赖包(可以复制进去):

sudo apt-get install gcc  g++ patchbzip2 flex bison make autoconf  unzip subversion libncurses5-dev ncurses-termzlib1g-dev gawk libz-dev git-core ccache
默默等待下载完成

把刚才下载完的OPENWRT-SDK包复制到虚拟机home目录中,然后在终端中输入tar  jxvf  OpenWrt-SDK-ramips-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2
然后会出现一大堆代码,不必理会,静静地等待完成。完成以后回到终端输入状态。
注:1. 很多人一开始不知怎么打开终端,其实有一个很好的办法键盘组合键按Ctrl+T就可以快速打开终端
2.当出现password字样的时候,请输入ubuntu系统的密码

3.当出现Do youwant to continue 时候,输入Y
4.关于ubuntu虚拟机怎么插U盘,怎么读取U盘,请您移步度娘,度娘懂你,会给你解释的很详细的

IPK文件的编译

在刚才的终端输入
cd OpenWrt-SDK-ramips-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2
打开文件管理器,进入/home/OpenWrt-SDK-ramips-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2/package文件夹,把解压完成的zdclient 文件夹(上面下载的)复制进去,在终端执行命令make package/zdclient/compile V=99
下面是激动人心的时刻,随着一串串命令的出现,没一会儿功夫。神州数码ipk文件在bin/rampis/packages下面出现了,拷贝出ipk文件。


路由器ipk的安装与设置

在路由器上安装神州数码客户端需要先安装libstdcpp_4.6-linaro-1_ramips.ipk libpcap_1.1.1-2_ramips.ipk libintl-full_0.18.1.1-2_ramips.ipklibiconv-full_1.11.1-1_ramips.ipk 这4个包,如果提示libpcap安装失败,需要进入路由器WEB界面,系统-软件包里面移除libpcap后再执行libpcap安装命令

注:1.安装ipk文件 opkg install 
文件名.ipk(需要下载软件WinSCP连接路由器,才能执行上传安装,具体ipk文件的安装还是问度娘)。
2.这4个ipk安装完以后才能安装神州数码客户端zdnlient的ipk
3.安装完成以后,把网线插入路由器的WAN端口,(具体无线加密设置方法详见度娘)SSH中执行命令:
理工科艺
zdclient -b -u "登录名" -p "密码"  --device “WAN网卡名称如eth0.1
此网口要去路由器web界面网络接口里面寻找” –dhcp

其他学校
zdclient -b -u "登录名" -p "密码"
 -g “学校主机地址或者网关”  -d “DNS” --device “WAN网卡名称如eth0.1” --ver ”版本号”

4.如不懂用法,可以在SSH中输入 zdclient –h查询代码使用方法
5.如果学校网络是绑定网卡MAC地址,请在路由WEB界面中指定WAN端口MAC地址。
接下来,如果SSH界面中显示EAP_SUCCESS,就说明你连接成功了。

问题区:

QUESTION1:有的同学说,SSH界面显示了EAP_SUCCESS,笔记本电脑IP也获取正确了,但是就是不能上网的问题,肯定是DHCP服务器没有设定好,请进入路由器WEB界面管理界面-网络-接口-LAN 下面指定DHCP服务器,LAN口电脑才能正常上网

DHCP服务器应该这样写:6,X.X.X.X,X.X.X.X
我用的是杭州电信的DNS202.101.172.35  202.101.172.46
如果你不知道你所在地区的DNS,直接用谷歌的DNS填进去6,8.8.8.8,8.8.4.4然后点击保存并应用
QUESTION2:又有的同学说,我总不可能每次开机都要打开电脑都要输入指令来连接网络。我们可以把此程序加入到路由开机启动中去。关于这个程序的自动启动,我还遇到了一个小插曲,郁闷了我一天:在系统-开机启动中加入了神州数码上网的命令,然后每次路由开机WAN端口ping成功,但LAN端口始终上不去网,在SSH执行断网命令后,再一次连上网,LAN端口竟然可以上网了。后来,我灵机一动,开机的时候让路由断一次再连接一次不就搞定了(是不是觉得我很聪明呢,哈哈)。于是我在开机启动中写下了如下命令(把命令加到exit
0之前):
zdclient-b -u "用户名" -p "密码"  --device eth0.1 --dhcp
zdclient-l
zdclient-b -u "用户名" -p "密码"  --device eth0.1 --dhcp
 其他学校参加文章上面链接网络的代码

使用了这段代码后,路由启动后就再也没有出现过问题。
至此,神州数码客户端已经完全编译到openwrt路由器中去了,此时,请重启你的路由器,感受寝室路由的乐趣吧!
在此再次感谢那些把源代码无私奉献出来的人,感谢林大大的对本教程的修改意见!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: