在LINUX下使用内置ISDN卡
一、使用环境:
ISDN卡:我用的是ASUSCOM的内置卡,其实ASUSCOM的内置卡种类很多,只有一、二款支持linux,你买的时候要当心。
linux支持的ISDN芯片还有很多,详见附表1,你要看清楚哦。更详细的你可以看linux源代码的文档中ISDN文档中的README.HiSax和其它文档。
现在的linux内核对PCI支持的很好,而且PCI的硬件也好配置,实际上就不需要什么特殊的配置。你如果买的话,最好买PCI的卡。
另外需要额外下载一个叫isdn4linux的软件,用于控制ISDN卡。地址如下:
ftp.isdn4linux.de
/pub/isdn4linux/isdn4k-utils-.tar.gz
大概形式是这样,你耐心找一下。
二、安装:
打开机箱,把卡插好,OK 。
我的卡本身提供了linux下的驱动,但经过实践,发现它并不好用。看看卡上的芯片吧,哦,是HFC-S PCI,2BDS0 ISDN,这是好事情,是linux支持的,卡类型为35,记好了,下面要用到的。
Linux 安装后,它已经把几乎所有支持的硬件驱动都编译成模块了,所以我们就不用重新编译内核。
安装isdn4linux:
这是一项令人头痛的工作,原因很简单,它总是在编译或安装的时候一些莫名其妙的错误,导致通不过。如果编译的时候出问题,你把它记下来,在make config中屏蔽掉就算了;如果是安装的时候有错误,你进入它的下一级目录,在每个目录中执行make install,能安装多少就安装多少吧。
另一个办法是用现成的rpm包,这个需要你自己找了。
其实用的也就是scripts/makedev.sh 和编译生成的isdnctrl这两个程序,也可以让你的朋友传给你。makedev.sh只使用一次,用于生成ISDN设备;isdnctrl要拷贝到/sbin目录中。
执行makedev.sh,生成ISDN设备,虽然系统已经有ISDN设备了,但仍然需要执行一次,我也很纳闷。
三、准备其它文件:
需要修改或生成下面四个文件,它们是:
用于保存帐号和密码的/etc/ppp/pap-secrets,属性是644,格式参见附表2。
用于保存帐号信息的/etc/ppp/ioptions,属性是644,格式见附表2。
保存isdnctrl设置的/etc/isdn/isdn.conf,属性是644,格式见附表3。其中的PHONE_OUT ISP提供的接入号码,请改成你自己的。
拨号控制程序/etc/rc.d/init.d/isdn,属性是755,格式见附表4。其中的modprobe hisax type=35 protocol=2 中的type是你的卡在附表1中的类型号码,改成你自己的吧。
自己生成这些目录和文件,注意它们的属性,除了特意提到的部分,其它部分基本不用修改了。恩,好象都准备好了,可以开始了。
四、拨号和建立路由:
执行/etc/rc.d/init.d/isdn start,加载HiSax模块和初始化ISDN卡。用dmesg看看,应该没有什么错误信息才对。
执行/etc/rc.d/init.d/isdn dial0,拨号喽。
等10秒钟。
如果你想建立128K连接,再执行/etc/rc.d/init.d/isdn dial1即可。
拨号后用imontty看看ISDN卡端口的状态,应该是 out 167 什么的。如果是out的话,表示没有通或断了,再拨喽。
等10秒钟。
执行route default ippp0,建立默认路由。等等,这里好象有问题,在isdn中不是有建立路由的指令么,怎么还需要啊?嘿嘿,我也搞不明白,可能是这样的:由于是PPP连接,linux先前建立的路由是点到点的,如果你正好访问与对方接入服务器在一个c类网段的服务器,那没有问题,想到其它的网段,呵呵,不行,所以呢需要重新建立一次路由,让到其它网段的也从ippp0出去。
另个问题可能是为什么要等10秒呢?这是我经验,如果不等的话,由于连接等工作还没有建立,就会乱七八糟的,等吧,没办法。如果10秒不够,你就等20秒吧,呵呵。
你可以干你想干的事情了,冲浪去吧。
我要下网了,怎么办?执行/etc/rc.d/init.d/isdn stop啊。