pppoe客户端往ok6410开发板的移植


PPPOE移植的相关的步骤以及说明

首先是要对pppoe有个大体的认识,相关的概念如下:

1、什么是pppoe

 PPPPoint-to-PointProtocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。PPPTCP/IP的扩展,它增加了两个额外的功能组:它可以通过串行接口传输TCP/IP包;它可以安全登录。当使用作为公共电话系统的部分的串行接口时,必须要注意确保所有通信的真实性。这个终端PPP集合了用户名字和密码安全。因此,一个路由器或者服务器通过PPP接收到一个请求时,如果这个请求的来源是不安全的,这就需要授权。这个授权是PPP的一部分。因为它的通过串行接口路由TCP/IP包的能力和它的授权能力,ISPInternet服务提供商)通常使用PPP来允许拨号用户连接到Internet

利用以太网(Ethernet)资源,在以太网上运行PPP来进行用户认证接入的方式称为pppoe,即保护了用户方的以太网资源,又完成了ADSL的接入要求,是目前ADSL接入方式中应用最广泛的技术标准。很多DSLInternet服务提供商使用pppoe协议,因为它有额外的登录和安全的特性。pppoe将这些功能带给不使用串行连接来连接他们的用户的ISP。串行的ISP已经在modem通讯中使用ppp。另一方面,DSL提供商使用Ethernet而不是串行通讯。因为这样,就需要pppoe的额外的功能,允许他们通过使用用户登录来确保通讯的安全和测量每个用户的流量数据。



下面讲述一下,我移植pppoe客户端到ok6410开发板的过程以及步骤


我移植过程所用到的源码包如下:(因为我之前已经有安装交叉编译器,所以这边可以直接用,要是没有的话,还需要源码包arm-2007q3或者别的版本)


内核linux-2.6.36

470461ppp-2.4.1.rar

rp-pppoe-3.7.tar.gz


1、关于内核的编译与配置

在内核的源码目录下,运行makemenuconfig进行内核的配置

其实linux-2.6.36的源码,已经默认配置ppp以及pppoe的选项了,这边不需要多考虑


2、我们这边建立了一个名为PPPOE的文件夹,将解压后的ppp-2.4.1文件夹以及rp-pppoe-3.7文件夹放入其中,下面开始具体的操作。


2.1、安装ppp软件包(这边可以读下目录下的readme


这边有5处需要做相应的修改如下:


ppp-2.4.1的目录下,找到makefile文件,

将其中的:CC=/LinuxPPC/CDK/bin/powerpc-linux-gcc

替换成:CC=arm-none-linux-gnueabi-


pppd目录下找到相应的makefile文件,

将其中的:CROSS= /home/hhcn/toolchain/gcc-3.2.2/toolchain/bin/powerpc-uclibc-

替换成:CROSS= arm-none-linux-gnueabi-


chat目录下找到相应的makefile文件,

将其中的:CROSS= /home/hhcn/toolchain/gcc-3.2.2/toolchain/bin/powerpc-uclibc-

替换成:CROSS= arm-none-linux-gnueabi-


pppdump目录下打开makefile文件

将其中的:CROSS= /home/hhcn/toolchain/gcc-3.2.2/toolchain/bin/powerpc-uclibc-

替换成:CROSS= arm-none-linux-gnueabi-


pppstats目录的makefile

将其中的:CROSS= /home/hhcn/toolchain/gcc-3.2.2/toolchain/bin/powerpc-uclibc-

替换成:CROSS= arm-none-linux-gnueabi-


到这边已经修改完毕,然后在ppp目录下进行make操作,对应的目录下就会生成相应的可执行文件,

分别将pppdchatpppdumppppstats目录下生成的与目录同名的可执行文件拷贝到新文件系统的根目录的/usr/sbin


2.2、安装pppoe以及相关的配置


rp-pppoe-3.7目录下的configs文件夹中的所有内容拷贝到文件系统的/mnt/etc/ppp目录下


到目录/rp-pppoe-3.7/src下的makefile文件中,将所有的gcc19处)用arm-none-linux-gnueabi-gcc来代替,将所有ar1处)用arm-none-linux-gnueabi-ar来代替

然后进行make,会生成pppoepppoe-relaypppoe-serverpppoe-sniff可执行文件,将这四个可执行文件拷贝到文件系统的/usr/sbin目录中,另将scripts文件夹中脚本文件中的pppoe-setuppppoe-startpppoe-connectpppoe-stop拷贝到/usr/sbin中去


打开pppoe-setup的脚本文件,将50行的if[ "`/usr/bin/id -u`" != 0 ] ;改成if[ "`/bin/id -u`" != 0 ];

打开pppoe-start的脚本文件,44行的if[ "`/usr/bin/id -u`" != 0 ] ;改成if[ "`/bin/id -u`" != 0 ];

打开pppoe-connect的脚本文件,42行的iftest "`/usr/bin/id -u`" != 0 ;改成iftest "`/bin/id -u`" != 0 ;


在文件系统的根目录的/dev目录下,运行下面的命令生成ppp节点设备

#mknod/dev/ppp c 108 0
#mknod /dev/ptmx c 5 2
#mkdir pts
#cdpts
#mknod 0 c 136 0
#mknod 2 c 136 2
#mknod 3 c 1363
#mknod 4 c 136 4
#mknod 5 c 136 5


2.3pppoe拨号调

将系统文件制作成镜像文件cramfs,将这个文件以及u-boot.bin以及zImage文件拷贝到SD卡中,这边的u-boot.bin以及zImage可以直接从光盘提供的资料中拷贝,因为内核是默认有ppp以及pppoe的协议的,当然也可以自己重新编译!

启动开发板后,在串口终端中敲入:cd/usr/sbin

然后:ls

会出现以下图中的信息:


然后我们继续敲入命令:./pppd

如果出现乱码,则表明移植ppp成功,有如下的图形所示:


然后我们开始设置pppoe的用户等信息

在命令框中敲入:.Pppoe-setup

则会出现以下的内容:


这样我们就进入设置的阶段,在这里输入相关的用户名,以及其他的一些信息





到这边相关的配置已经完成了

继续输入:pppoe-start

开始拨号

因为我这边没有设置相关的服务器,所以这一步没有继续往下做(只要配下相关的服务器,然后用户名和密码能对上,估计就能ping通啦)。










下载rp-pppoe3.8(http://www.roaringpenguin.com/products/pppoe)后,解压源码。进入源码目录。再进入src目录。
然后,要进行交叉编译。执行./configure后,程序报生成两个Makefile文件,一是在src 下的,一是在libevent下的。直接替换这两个Makefile文件中的gcc为arm-linux-gcc
编译完成后,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目录下。

4: 在目标板上测试运行

下载到目标板的一些文件必须利用命令chmod +x filename来修改它的可执行权限,否则不能运行。
试运行一下pppd,假如出现如下提示
pppd: pppd is unable to open the /dev/ppp device.
You need to create the /dev/ppp device node by
executing the following command as root:
mknod /dev/ppp c 108 0
那么就应该按照提示执行命令mknod /dev/ppp c 108 0,再运行一次pppd,假如有乱码出现就说明安装pppd成功了。
如果出现下面的信息。则说明你内核可能还不支持ppp(Fix this according to the above)
./pppd: This system lacks kernel support for PPP.  This could be because
the PPP kernel module could not be loaded, or because PPP was not
included in the kernel configuration.  If PPP was included as a
module, try `/sbin/modprobe -v ppp'.  If that fails, check that
ppp.o exists in /lib/modules/`uname -r`/net.
See README.linux file in the ppp distribution for more details

如果内核支持ppp,则执行pppd后,等一会,出现乱码,说明pppd工作正常了。

修改角本:pppoe-setup 将其中的将PPPD改为PPPD=/usr/sbin/pppd(就是你放pppd可执行程序的位置)不然会报错说找不到pppd,没有装.
执行pppoe-setup,根据提示输入拨号所需的参数(ISP提供的用记名和密码)。要确定rp- pppoe的配置文件所在的目录即/etc/ppp是可写的。否则,参数不能保存。

./pppoe-setup(下面是一些说明供参考)

>> Enter your PPPoE user name: ——此处输入拨号帐号的用户名 
>> Enter the Ethernet interface connected to the ADSL modem For Solaris, this is likely to be something like /dev/hme0. For Linux, it will be ethn, where n is a number. (default eth0): ——输eth0(视情况而定) 
>> Enter the demand value (default no): ——输no 
>> Enter the DNS information here: ——输IP(eg:69.45.45.34)(视当地运营商的DNS服务器IP而定)
>> Please enter your PPPoE password: ——输网通用户口令 
>> Choose a type of firewall (0-2): ——输0 (0为不要防火墙)
>> Accept these settings and adjust configuration files (y/n)? ——输y

执行pppoe-start后。出现connected!的提示,说明ADSL已拨号成功,可以从pppoe服务器那里申请到IP 了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值