版权 © 2006 本文档遵从GNU自由文档协议,欢迎转载和传播
摘要
Dr.com是城市热点公司开发的宽带计费系
统,在全国高校,企业,政府机关广泛使用,但是遗憾的是这么大的企业居然没有开发Linux下的客户端,所以造成了部分linux用户不能正常上网的问
题,但是有linux爱好者们开发了for linux版本,本文将详细叙述在几大主要发行版下安装方法。
--------------------------------------------------------------------------------
目录
前言
1. 基础知识
1.1. Linux下软件安装的一般过程
1.2. Linux下软件的相关性(依赖性)问题
1.3. gcc的版本问题
1.4. 内核头文件与内核模块
2. drcomsuite在各主要发行版下的安装
2.1. 在redhat 9下的安装
2.2. drcomsuite在ubuntu 5.10下的安装
3. 后记
前言
Dr.com
是城市热点公司开发的宽带计费系统,在全国高校,企业,政府机关广泛使用,但是遗憾的是这么大的企业居然没有开发Linux下的客户端,虽然Dr.com
可以在web浏览器下完成登陆验证注销等工作,但是很多学校和ISP取消了这样的功能,而取而代之是windows下专用的客户端。
由于
没有客户端,所以Linux上网成了问题,通常的解决方案是利用代理服务器接入,利用wine模拟运行drcom的官方客户端,但是这样做并不是完美的解
决方案,例如使用代理服务器对于端口有限制,并且某些软件并不提供设置代理的功能,而利用wine模拟运行在Dr.com 2.95版本不能成功,至少我
还没有看到有成功的案例,在本人学校没有,在网上也没有看到有例子。为了解决此问题,有爱好者对Dr.com的联网原理进行分析,开发了 Dr.com的
客户端,我记得最早是在2004年就有相关的文章来分析了,具体情况可以Google一下,在这里再次要感谢这些先驱们。本人的学校从去年开始才正式的运
行Dr.com进行校园网络的控制和管理,我也是到了今年才开始关注这个,我想做一个Linux的客户端,上网查到了drcom-client。
drcom-client现在是sourceforge上的一个项目,以GPL协议发布,它包括window平台下的版本drcom-client-
win32和Linux下的版本drcomsuite,它的主页地址是:
/drcom-client。本文主要介绍Linux下的版本drcomsuite在Linux几个主流发行版的使用,它的主要作者是
wpyh,drcomsuite到现在已经比较成熟了,可以应用于2.4.x内核和2.6.x内核。但是wpyh的第一语言不是汉语,所有的文档是以英文
发布的;另外使用文档也不完善,这样对于开发者或者熟悉linux的人也许不成问题,但是对于使用Linux的普通用户和Linux的新手们就有些困难
了。还有就是这个客户端是在北京海淀区的宽带接入应用环境开发的,它的测试区在北京海淀宽带联盟论坛,这是一个内部网站,仅面向海淀宽带的用户,而且关闭
了注册,我现在得到的消息是借助google搜索提供的零星的片段(要登陆论坛才可以查看全文内容),所以我现在连wpyh其人也不是很了解。
我
准备在drcom-client的基础上开发更人性化功能的Dr.com客户端,并且提供基于GTK的图形界面版本,现在windows下的版本已经比较
好用了,但是也缺乏一个用户指南,用这个开源的版本带来的好处是:支持共享上网,不会默认打开某些网站(我就特反感这个,本人机器比较慢,原来用
windows的时候自动打开IE连到校主页,要等好几秒的时间,不爽)而Linux下的版本能用了,但是还存在某些bug,比如有的时候不稳定,不能登
陆成功;有的时候退出的时候,进程会无法正常中止;这些都还不是大问题;现在最大的问题是安装使用起来有点困难,特别是对于Linux新手,或者说只是普
通用户而言。我在上申请开通了一个项目,叫做q-drcom,项目主页就是https:
//gro.clinux.org/projects/q-drcom;名字中q的意义一方面是本人在学校所在的工作组名字的首字母,所以开发的东西会叫
做q-xxx;另外q是cute的意思,cute在英文中意为灵巧的,漂亮的,惹人喜爱的意思,这是我做东西的一个原则:,它能怎么样跑得最快?怎么让人
喜欢它?解释了这么多,就是想让你记住它,如果你对使用drcom有什么问题你就能到项目主页上寻求答案了:);说实在的,本人也不是什么开发高手,并且
对于Linux下的编程,特别是内核模块方面的也是在学习中,drcom-suite的源代码我正在消化,但是我有信心不久之后就推出q-drcom的
beta版本;所以目前q-drcom项目暂时只是提供drcom-client的用户支持,除了文档而没有自己的东西出来,并且从用户的反馈和问题,也
能让我更好的发展q-drcom,---A cute version of Dr.com's client!所以也请大家有使用上的问题及时反馈,更
希望有更多的志愿者加入到其中来。看到城市热点的官方主页上说在高校的应用有300多家,按我的理解就是:有多少在高校的成功案例,就有多少个高校里的
linuxer被奴役!
第 1 章 基础知识
目录
1.1. Linux下软件安装的一般过程
1.2. Linux下软件的相关性(依赖性)问题
1.3. gcc的版本问题
1.4. 内核头文件与内核模块
这一部分内容是为linux新手准备的,其他人可以跳过这一章,如果在ubuntu下没有编译成功的用户,请浏览这一部分的内容
1.1. Linux下软件安装的一般过程
Linux
从源代码安装软件的一般过程是Configure,make,make install;configure是一个shell脚本,负责根据机器或用户的
的设置生成一个叫Makefile的文件。而make命令就是让编译器(gcc等)根据Makefile文件自动的编译和连接以生成目标代码(可执行文
件,在windows下就是exe文件);make install就是根据Makefile的表述把目标代码以及相关的文件拷贝的设定的目录。简单
说,make就是Unix,Linux平台下的工程管理器,它能自动编译和安装软件。对于某些软件的安装,也就是最后一步(这里假设你在自己的家目录中完
成了前面两步)需要root用户权限,因为make install可能要把一些文件拷贝到之有root用户有权限写入的目录,对于本文中要安装的
drcom-suite就是如此,它要将一些文件拷贝到/sbin ,/etc等目录中,另外,在本例中drcomsuite的安装不要用
Configure,它也没有提供这个脚本,它已经提供了Makefile,直接运行make,make install就可以了。
1.2. Linux下软件的相关性(依赖性)问题
软
件是有相关性的,一些程序为另外的程序提供服务,所以软件的安装是有顺序的,并且有的时候不能颠倒(有新手要不耐烦了,发难了,windows下怎么没有
那么麻烦阿?windows下有dll文件,叫做动态连结库,你双击安装的exe程序已经把它要用的那些库打包到exe文件里面,安装时就提取出来放到它
的安装目录了,写过vb的知道,你写个程序但是不把一些dll文件打包安装,它在没有装VB的机器上就不能运行,基本道理一样,另外一般windows下
的软件都是以二进制可执行文件的形式发布,而不是源代码,“Linux is not windows ”,所以请不要总是把时间花在它们的比较之上。我
之前不用windows是我买不起正版windows,我对自己的要求是:如果我还写代码,那么我就尽可能不用盗版软件,我必须尊重其他的软件作者。当
然,为什么尽可能呢,如果老师让我交AutoCAD的课程设计,那我该怎么办呢?:)但是,请你相信,当你开始了解了linux,并且尝试用它来解决你的
学习工作的问题,而不是把它当玩物,那么你会象我一样对它如痴如醉的,这让我想起了一句名言:学一点点知识是一件可怕的事情 :)。当然,整天打游戏的人
除外,呵呵,整天打游戏的人也不会看这篇文章了),具体来说,在本例中一定要先安装libdrcom,只有先安装了
libdrcom,drcomsuite才可能编译成功,因为drcomsuite的编译需要libdrcom,不完善的说法是编译drcomsuite
时需要libdrcom的一个drcom.h的头文件,安装了libdrcom之后,drcom.h文件会被拷贝到/usr/include文件夹中,这
样编译drcomsuite时编译器才能找到drcom.h;这是drcomsuite在一般发行版本上的需要注意的地方,另外对于特定的发行版本还有其
他的东西,比如在ubuntu 5.10的安装,还要依赖其他的东西,这个在后面特定的发行版的说明中具体讨论。
1.3. gcc的版本问题
开
源软件之所以这么有活力的一个原因就是来自全世界的黑客们都在持续的改进它们的程序,版本会不断的升级,会越来越趋向于完美。版本的更新换代太快,但是这
也是被某些商业软件的支持者指责的地方,版本的更新太快造成维护上的成本增加。这简直是跟强奸了某女然后把责任推托说是“怪你过分美丽”上一样没有道理!
(不好意思,偏激了,我不恨微软,甚至有些同意某些人说的,不知道对不对,我只是引用不加评论,“如果没有微软,计算机就不会如此老少皆宜”,微软提供了
漂亮的界面,易用的操作方式,在中国更是如此,拿三块钱买一张盗版光盘,马上就有一个可用的系统了;但我转向linux之后,我惊喜的发现linux可以
跟window xp一样漂亮,甚至更漂亮,而我居然开始喜欢了命令行的操作方式,这个可以更高效!唉,废话有点多,见谅)不同的gcc版本用于编译的参
数可能不一样,它可能不支持某个Makefile中给的gcc编译参数,在本例中就是如此,造成了在某些发行版本上不做某些改动就不能编译成功。还有,如
果你要编译内核的模块,那么一定要用和当前内核相同的gcc的版本,系统上缺乏编译内核所用的gcc版本,就可能造成编译drcomsuite中就可能不
成功,这个问题在ubuntu 5.10上体现了,后面会详细提到。
1.4. 内核头文件与内核模块
有了内核头文件,你才可能编
译内核的模块,一个简单的例子就是需要编译一个设备的驱动程序。内核模块是可以动态载入内存的,比如你通常的网卡,声卡驱动都是编译成模块的 ( 也可以
编译进内核,根据内核配置文件)。运行/sbin/lsmod可以查看现在在内存中的模块。这个问题也出现在我在ubuntu 5.10下测试时,这个问
题在后面ubuntu下的安装那一节具体来讲。
第 2 章 drcomsuite在各主要发行版下的安装
目录
2.1. 在redhat 9下的安装
2.2. drcomsuite在ubuntu 5.10下的安装
现在经过测试安装的linux发行版本有Redhat9,Fedora core4,gentoo 2005,ubuntu 5.10,如果有其他发行版只要注意本文中提到的一些问题,应该安装也不成问题。
2.1. 在redhat 9下的安装
首
先从drcom-client的项目主页/drcom-client上下载
libdrcom-0.0-20050423-2.tar.bz2和drcomsuite-0.1.12.tar.bz2两个文件, 记得要先安装
libdrcom,解压缩:
tar -xjvf libdrcom*.bz2
tar -xjvf drcomsuite*.bz2
转换到root用户完成编译和安装:
su
#输入你的root用户密码
进入libdrcom的目录
cd libdrcom*
redhat9会由于默认的gcc版本的原因,需要稍微修改Makefile文件,用你喜欢的编辑器打开Makefile
vi Makefile
注意到其中有这样的一行,第三行 WARN = -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -pedantic 把-Wextra改成 -W 然后运行make和make install编译
make
等待,你应该可以编译成功,然后安装
make install
按
照同样的作法,进入到drcomsuite的目录,然后make ,make install编译安装drcomsuite,所不同的
是 drcomsuite中的Makefile 本来就是带的-W,所以不需要改。如果这都没有出现错误的话,那么恭喜你,你已经成功了一半了,现在我们
来看配置文件。
drcom的配置文件是/etc/drcom.conf,安装drcomsuite时已经把一个叫做
drcom.conf.new的文件拷贝到你的/etc目录下,所以你需要把它改名为drcom.conf,然后完成相应的配置,里面有简单的英文提示,
应该不成问题,有下面是一个示例配置文件:
username=cyi_02 #用户名
password=*******# 你的密码
mac= #mac地址,可以通过运行ifconfig命令查得本机的mac地址,类似如 00:00:E8:18:07:69的形式
nic0=10.1.43.190 #你的IP地址,一般都是单网卡用户,后面的空白
nic1=
nic2=
nic3=
dnsp=202.113.32.6 #主dns
dnss=211.94.193.129 #次dns,这个必须填,不填程序会出错,如果没有次dns,填一个合法的ip地址
dhcp= #一般都不是由dhcp指配的ip,所以这里也留空
hostip=
servip=192.168.100.251 #输入你用drcom时打开浏览器被自动引导如提示你登陆的那个地址就可以了,这个是我们学校的登陆地址,其他的留空默认
hostport=
servport=
#后面的四项是用来假冒windows xp主机的,不填就可以了。
hostname=
winver=
winbuild=
servicepack=
这样配置文件就好了,接下来就可以来上网了,下面的命令都需要你用root用户来运行 su切换到root用户,因为你是以普通用户运行的,所以你的搜索目录里面可能没有/sbin,所以你运行source来读取root的环境变量设置
source /etc/profile
modprobe drcom
drcomcd #运行drcom的守护进程
如果提示类似于下面的这样的信息,那么就表示启动成功了,如果不是,你需要检查你的配置文件drcom.conf是否有语法错误:
1139480048 DEBUG drcomcd: Redirecting stderr to /var/log/drcomcd...
登陆,在终端输入命令:
drcomc login
提示这样的信息:
1139480181 DEBUG drcomc: Creating socket...
1139480181 DEBUG drcomc: Connecting...
1139480181 DEBUG drcomc: Sending login command...
1139480181 DEBUG drcomc: Receiving reply (login)...
Login succeeded
表示你登陆成功了,这样你就可以上网了!
如
果有提示出错信息,比如你就要确认你的帐户是不是用完了,然后再杀掉drcomcd并且再次启动,或者从新引导一次系统试试,一般是不需要的。但是有可能
有不稳定,随机的情况出现。 #杀掉drcomcd killall drcomcd #同样需要你以根用户的身份运行用redhat9基本会成功的,本
来它的开发就是基于2.4内核, redhat 9基于2.4.20内核。 drcom.o是2.4内核的内核模块,当你安装drcomsuite时它被
安装到了/lib/modules/{kerner_version}/kernel/misc中;{kernel_version}代表你的内核版本
号。
用fedora core4的差不多,只是fedora的gcc比较新,所以编译的时候Makefile文件是不用修改的,其他的
过程一个样,2.6内核的后缀名为 .ko; drcom.ko被安装到了/lib/modules/{kernel_version}/kernel
/extra目录中。
我自己的机器在宿舍里锁着了,装的是gentoo2005.1,现在工作室里没有gentoo的机器,安装过程也
一个样,但是我记得刚刚考完研放寒假时我安装之后的gentoo联网不成功,提示说failed,reason 0;但是那个时候可能是学校网络的原因,
我觉得应该可以成功的,毕竟这边三台机器全部成功了。
2.2. drcomsuite在ubuntu 5.10下的安装
面具体
说一下在ubuntu的安装过程,可能要稍微复杂一点,因为ubuntu是开发来用做服务器或者桌面应用的,但是在开发方面可能就要考虑少一点,但是不是
说它不合适做开发,有了apt,有了“新立得”什么拿不到呢?并且我们的工作站就是装ubuntu,只不过你在做内核方面的东西时要装些东西上来,让它具
有这个环境,ubuntu的设计理念是“Linux for human beings”,所以预装的软件包不会包括编译环境。ubuntu非常的漂亮,
没有其他的一些复杂的东西要设置,放上去就能用,所以选它做事情是非常合适的,我很喜欢它!具体的安装我就不说了,在ubuntu中文网站上有详细的教
程,中文上的资料非常的好而且多, ubuntu很适合新手,我觉得在这个方面比
fedora还好(那个yumex真的有够“郁闷”的,运行慢,与“新立得”比差远了,还有源就清华还有个freshrpms的镜像,个人意见)。
注
意:Ubuntu下离线安装软件的方法,其实这应该是Linux的使用问题方面了,但是我在这里还是顺便写一下,因为我收到一些反馈的邮件,有人甚至在前
面的编辑配置文件的时候,进入了VI不会保存和退出来。有人也问我,在不能上网之前,如何可以装上那些需要的软件包。其实对于这些应该是自己该解决的,而
不是我这篇指南里包括的,但是考虑到这个指南是针对于初学者,那么就稍微的提一下,软件包的离线安装。对于任何一种软件包管理系统,这里特别指在线安装
的,比如Gentoo的portage,Yum,Apt-get安装的软件的时候,都会把软件包下载下来,然后缓存在某个地方,一般在/var
/cache里面对应的文件夹里面,比如Ubuntu的在/var/cache/apt/archives,只要把需要的deb包下载了,放到这个文件夹
里面,就可以用新立得很方便的装上了(对于初学者和不喜欢用命令行的用户)。对于软件包不知道该怎么下载的问题,其实很简单,软件包就在任何一个源镜像里
面的,pool文件夹下面的子文件夹里面按字母分类排序的下一级子目录里面。这样的问题,我希望各位新手自己多看资料,自己去找到答案,这是最有效的学习
方法。其实一句话,只要下载了.deb包,利用软件包管理工具,怎么整它都行。
首要因素是你要安装 build-essential 如果你没有安装过,请利用下面的命令安装 sudo apt-get install build-essential 当然你可以用“新立得”,我就很喜欢新立得!
你需要做的第二件事就是安装libssl-dev,这个包包括了drcom需要用到的用于认证加密的md5函数,它需要一个md5.h的头文件,而这个文件在libssl-dev中有,另外libssl-dev还包括了其他好多的用于加密的头文件哦。
第三,你需要安装对应内核版本的头文件,这个用 uname -r命令可以得到关于你机器的信息,比如我的: uname -r 2.6.12-10-686
这
是我的内核版本,我用的是Intel P4的CPU,所以我安装的是这个内核,ubuntu默认安装的是 2.6.12-9-386,当你第一次系统更新
时就会安装 2.6.12-10-386,然后一般人都会根据自己的CPU类型选择合适的内核版本,AMD用户会选择 2.6.12-10-k7;
另外你得到信息的方法就是查看/proc/version文件,这里有你机器的一般信息,包括编译内核采用的gcc版本,这也是呆会要用的。
cat /proc/version
比如我机器的信息显示为:
Linux version 2.6.12-10-686 (buildd@rothera) (gcc version 3.4.5 20050809 (prerelease) (Ubuntu 3.4.4-6ubuntu8)) #1 Mon Jan 16 17:58:04 UTC 2006
它不但告诉了我内核版本还告诉了我gcc的版本是3.4.5,因为你编译新的内核模块时要用到和编译内核同样版本的gcc版本。
那么就在你的“新立得”里面搜索“linux-headers”找到你需要版本的linux头文件 Linux-header-file-{yourversion},比如我的就安装linux-header-2.6.12-10-686
虽然你刚才已经安装了编译的环境build-essential,但是安装的gcc版本是更新的4.0版本,它在用来编译内核模块时是不合适的。
在你的“新立得”搜索gcc,安装gcc3.4,至此你就建立了一个可以编译drcomsuite的环境了,按照前面的方法编译安装。
ubuntu
有它的一套,它不能su到root帐户,你可能愿意开启一个root shell,那么就运行sudo -s -H; 完成你的编译安装,如果你按照在“
在redhat中的安装”这一节详细介绍的,编译安装了,配置了。但是你可能当运行modprobe时提示找不到 drcom模块,至少在我这里是这样;
这个不用着急,你用root权限,把drcomsute编译目录下的/modules/Linux/2.6.x/下的drcom.ko文件复制到/lib
/modules/{kernel_version}/kernel/drivers/net下就可以了,复制到其他目录也可以,在这里我认为它是一个网
络驱动。所以我复制到这里driver/net文件夹中
还差一步:运行如下的命令自动建立模块的依赖关系: depmod -a 如果你
不运行上面的命令,可能当要载入模块时就会提示找不到模块。 接下来,你就可以modprobe drmod把drcom载入内存了。 然后就是正常的使
用步骤了,具体操作参照“在redhat 9下的安装”这一节。
第 3 章 后记
我现在能做的也就是这么多了,由于个人水平所限,如果上面的文档中有什么错误欢迎指出来,您有什么问题,或者对这个项目感兴趣,都可以发送邮件到alva.yi At gmail Dot com.
希
望我所做的工作对于在高校或者其他地方的被Dr.com所“禁锢”的linux用户有作用,还等什么,不用担心你用linux上不了网了,从你的电脑上分
出几个G出来装linux用吧,分多点,至少5个G吧,别只是玩它,装些有用的东西,实际的用它来解决你的工作和学习上的问题!也别满足于在虚拟机上,毕
竟虚拟机只是虚拟机,据个人经验,gentoo就在VMware station 4.0上装不成(在windows xp上,盗版的:) ),另外在一
个操作系统上跑另外一个操作系统,内存只有一半了,这样你就总是以为linux慢了,其实它一点也不慢,另外如果你是开发者,用linux可以让你工作得
更舒服,比如笔者自己的机器只有1.2G,256M,但是用gentoo,只用了一个fvwm和Rox-filer做桌面环境,这样我就不用看着某些程序
干着急了。另外满足日常的需要,linux足够了,QQ聊天,MSN,浏览网页,下电影……引用某个牛人的话说:“linux不是只是计算机系的才用
的,linux也不是只有男生才用的”,我就不是计算机系,但是我是男生~~hehe:) 希望06年开学听到大家能上网的消息!
最后,再次感谢开发drcom-client,drcomsuite的开发者,协议分析者,以及其他贡献者!
系统是XP+ ubuntu
先想办法在Linux安装wine(我是在XP下用VM挂载整个硬盘,网上应该有deb包,版本从1.0到1.1.32都有效)
Wine安装好后进行一下设置(默认就行我没有更改),然后在C盘windows文件夹找到拷贝
WanPacket.dll,Packet.dll,npptools.dll,mfc42u.dll到主目录下/.wine/drive_c
/windows/system32
然后直接用Wine运行windows下的客户端(我是双击ishare_user.exe这个文件就行)成功的话就能再系统监视器发现ishare_user.exe这个进程
网络设置是在网络管理器建立DSL链接 只需填上用户名密码就行 做完之后网络就通了
阅读(4117) | 评论(0) | 转发(1) |