mips下的pppoe驱动

来源:互联网 发布:兄弟连it教育 学费 编辑:程序博客网 时间:2024/05/17 23:41

近期做了点mips方面的linux嵌入式移植工作。这是第一次在硬件上进行这样的操作。记录下来,跟大家一起分分享分享。

首先,虚拟机操作系统用的xubuntu,板上内核是linux-2.6.22.19,使用CC=mipsel-linux-gcc。

前期的工作的前大部分来自于 http://linux.chinaunix.net/techdoc/net/2009/05/04/1109997.shtml 的参考。感谢这位大侠的分享。

 

 

1、移植首先需要内核对ppp协议的支持

#cat /proc/devices|grep ppp    查看是否支持ppp

若无,重新配置编译内核在 -> Device Drivers -> Network device support  -> PPP (point-to-point protocol)  中,选中所有ppp选项。

 

 

2、移植需要要rp-pppoe和ppp。我用的是rp-pppoe3.10和ppp-2.4.5的组合

下载rp-pppoe3.10后,解压源码。进入源码目录。再进入src目录。.configure没对cross_compiling提供支持,故只可重新修改Makefile。执行./configure后,程序报生成两个makefile文件,一是在src 下的,一是在libevent下的,手工将其中的CC全修改成gcc-mipsel-linux-gcc,make完成。


src目录下会产生pppoe,pppoe-server,pppoe-sniff,pppoe-relay。把这些程序下载到目标机/usr/sbin目录下。


复制配置文件,rp-pppoe-3.8/configs目录下是rp-pppoe所需的配置文件,把这些文件全部复制到目标机的/etc/ppp目录下。

 

拨号相关的脚本程序共有6个,在rp-pppoe-3.8/scripts中。

pppoe-setup:配置程序,把输入的帐号密码等信息存入配置文件。
pppoe-start:拨号程序,连接网络。
pppoe-stop:断开。
pppoe-status:查看连接状态。
pppoe-connect:连接网络,被pppoe-start所调用。
pppoe-init:初始化,被其他程序调用。
把这些脚本也放到/usr/sbin目录下。


 

ra-pppoe需要ppp,下载ppp-2.4.5

解压。进入源码目录。
执行

#./configure
#make CC=arm-linux-gcc

编译完成后,进入pppd目录,将生成的pppd可执行文件拷贝到目标板的文件系统的/usr/sbin下。

 

pppoe-steup.

按照提示输出你的ADSL的信息。其中DNS我都采用google的8.8.8.8。

目标板上执行pppoe-start。出现connected!提示,说明ADSL拨号成功。

#pppoe-status

 

pppoe-status: Link is up and running on interface ppp0

ppp0      Link encap:Point-to-Point Protocol  

          inet addr:114.249.164.177  P-t-P:114.249.160.1  Mask:255.255.255.255

          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1

          RX packets:3 errors:0 dropped:0 overruns:0 frame:0

          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:3 

          RX bytes:30 (30.0 B)  TX bytes:37 (37.0 B)

 

 

#ping 114.249.160.1可以通。

但是#ping g.cn不通。

#route

estination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
221.231.205.94  *               255.255.255.255 UH    0      0        0 ppp0

default         192.168.1.0  255.255.255.0         UG    0      0        0 eth0

可以看到默认路由是错的。

route del default

删除默认路由。

然后

#pppoe-stop

#pppoe-start

#route

 

estination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
221.231.205.94  *               255.255.255.255 UH    0      0        0 ppp0

default        *                       0.0.0.0          UG    0      0        0  ppp0

可以看到现在默认路由已变为ppp0

ping g.cn成功。

 

 

 

最后,将上述所有生成的可执行文件全放在一个bin文件夹内,配置文件放在conf文件夹内。

在两个文件夹同级目录下写一批处理文件adsl_link.sh,如下:

 

cp $PWD/bin/* /usr/sbin

rm -rf /etc/ppp 

mkdir /etc/ppp

cp $PWD/conf/* /etc/ppp

pppoe-setup

pppoe-start

route del default

pppoe-stop

pppoe-start

执行批处理,便可直接 ping  通。

 

 

原创粉丝点击