PPPOE移植的相关的步骤以及说明
首先是要对pppoe有个大体的认识,相关的概念如下:
1、什么是pppoe
PPP(Point-to-PointProtocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。PPP是TCP/IP的扩展,它增加了两个额外的功能组:它可以通过串行接口传输TCP/IP包;它可以安全登录。当使用作为公共电话系统的部分的串行接口时,必须要注意确保所有通信的真实性。这个终端PPP集合了用户名字和密码安全。因此,一个路由器或者服务器通过PPP接收到一个请求时,如果这个请求的来源是不安全的,这就需要授权。这个授权是PPP的一部分。因为它的通过串行接口路由TCP/IP包的能力和它的授权能力,ISP(Internet服务提供商)通常使用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操作,对应的目录下就会生成相应的可执行文件,
分别将pppd、chat、pppdum、ppppstats目录下生成的与目录同名的可执行文件拷贝到新文件系统的根目录的/usr/sbin下
2.2、安装pppoe以及相关的配置
将rp-pppoe-3.7目录下的configs文件夹中的所有内容拷贝到文件系统的/mnt/etc/ppp目录下
到目录/rp-pppoe-3.7/src下的makefile文件中,将所有的gcc(19处)用arm-none-linux-gnueabi-gcc来代替,将所有ar(1处)用arm-none-linux-gnueabi-ar来代替
然后进行make,会生成pppoe、pppoe-relay、pppoe-server、pppoe-sniff可执行文件,将这四个可执行文件拷贝到文件系统的/usr/sbin目录中,另将scripts文件夹中脚本文件中的pppoe-setup、pppoe-start、pppoe-connect、pppoe-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.3、pppoe拨号调试
将系统文件制作成镜像文件cramfs,将这个文件以及u-boot.bin以及zImage文件拷贝到SD卡中,这边的u-boot.bin以及zImage可以直接从光盘提供的资料中拷贝,因为内核是默认有ppp以及pppoe的协议的,当然也可以自己重新编译!
启动开发板后,在串口终端中敲入:cd/usr/sbin
然后:ls
会出现以下图中的信息:
然后我们继续敲入命令:./pppd
如果出现乱码,则表明移植ppp成功,有如下的图形所示:
然后我们开始设置pppoe的用户等信息
在命令框中敲入:.Pppoe-setup
则会出现以下的内容:
这样我们就进入设置的阶段,在这里输入相关的用户名,以及其他的一些信息
到这边相关的配置已经完成了
继续输入:pppoe-start
开始拨号
因为我这边没有设置相关的服务器,所以这一步没有继续往下做(只要配下相关的服务器,然后用户名和密码能对上,估计就能ping通啦)。