ppp在linux下的编译和安装

我的编程环境是vmware + fedora9, ARM目标板为ATMEL 9G45,LINUX内核2.6.30, GPRS模块为TELIT公司的GC864-DUAL-V2,使用3线制串口连接(TXD RXD GND)

1.修改2.6.30内核选项

make menuconfig
Device drivers -> Networking device support -> PPP(point to point protocol) support
我选了以下模块(以M方式即module方式)
PPP support for async serial ports
PPP support for sync tty ports
PPP Deflate compression
PPP BSD-Compress compression
SLIP(serial line) support
之后编译:make && make install && make modules && make modules_install
得到了几个ko形式的内核库文件,拷贝它们到ARM目标板上,并在/etc/init.d/rcS中动态加载:
insmod /etc/ppp/slhc.ko 
insmod /etc/ppp/ppp_generic.ko 
insmod /etc/ppp/ppp_async.ko 
insmod /etc/ppp/ppp_synctty.ko 
insmod /etc/ppp/ppp_deflate.ko 
insmod /etc/ppp/bsd_comp.ko 
insmod /etc/ppp/slip.ko
注意加载顺序,我记得好象必须把slhc.ko先加载

2. 移植ppp与连接网络过程, 
1) ppp2.4.4 源码编译过程

#./configure

#make CC=arm-linux-gcc 注意指定arm-linux-gcc的路径,或是直接用绝对路径指定

需要拷贝到ARM目标板的文件有:
pppd
pppdump
pppstatus
chat
2 ) 脚本准备
有4个脚本需要准备,一个是规则文件/etc/ppp/gprs-connect-chat,一个是参数文件/etc/ppp/peers/gprs, 还有认证文件:pap-secret和chap-secret。(其实我这里只用到了pap-secret, 至于chap-secret 没有有到。anyhow,把它们全创建上)
(1) 脚本 #gprs-connect-chat:
TIMEOUT 15
ABORT '\nBUSY\r'
ABORT '\nNO ANSWER\r'
ABORT '\nRINGING\r\n\r\nRINGING\r'
#'' AT
#'OK-+++\c-OK' ATH0
TIMEOUT 40
'' \rAT
OK AT+FLO=0  #这个是GC864-DUAL-V2特别要设置的,就是要关闭流控
OK ATS0=0
OK ATE0V1
OK AT+CGDCONT=1,"IP","CMNET" #连接中国移动cmnet网
OK ATDT*99***1#
CONNECT ''
(2) 脚本gprsoptions
#/etc/ppp/peers/gprsoptions
# Usage: root>pppd call gprsoptions
/dev/ttyS4
115200
nocrtscts
modem
#noauth
#auth
#-pap
#+chap
lock
debug
nodetach
#hide-password
usepeerdns
noipdefault
defaultroute
user cmnet
#user smsong
0.0.0.0:0.0.0.0
ipcp-accept-local
#ipcp-accept-remote
#lcp-echo-failure 12
#lcp-echo-interval 3 
noccp 
#novj 
#novjccomp 
persist 
connect '/etc/ppp/chat -s -v -f /etc/ppp/gprs-connect-chat'
(3) 认证文件pap-secrets 根据需要来改
/etc/ppp # cat pap-secrets 
# Secrets for authentication using PAP
# client server secret IP addresses
cmnet * cmnet *
(4) 认证文件 chap-secrets 根据需要来修改,现在暂时没用到
/etc/ppp # cat chap-secrets 
# Secrets for authentication using CHAP
# client server secret IP addresses
'' * '' *

3) 调用过程
ifconfig eth0 down //先关闭有线网卡,以免与拔号初始化冲突
/etc/ppp/pppd call gprs& //启动/etc/ppp/peers/gprs脚本
ifconfig eth0 up //重新开有线网卡
来看连接的显示日志内容:
/etc/ppp # ./pppd call gprs&
/etc/ppp # timeout set to 15 seconds
abort on (\nBUSY\r)
abort on (\nNO ANSWER\r)
abort on (\nRINGING\r\n\r\nRINGING\r)
timeout set to 40 seconds
send (^MAT^M)
expect (OK)
AT^M^M
OK
-- got it

send (AT+FLO=0^M)
expect (OK)
^M
AT+FLO=0^M^M
OK
-- got it

send (ATS0=0^M)
expect (OK)
^M
ATS0=0^M^M
OK
-- got it

send (ATE0V1^M)
expect (OK)
^M
ATE0V1^M^M
OK
-- got it

send (AT+CGDCONT=1,"IP","CMNET"^M)
expect (OK)
^M
^M
OK
-- got it

send (ATDT*99***1#^M)
expect (CONNECT)
^M
^M
CONNECT
-- got it

send (^M)
Serial connection established.
using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS4
Warning - secret file /etc/ppp/pap-secrets has world and/or group access
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x13a5663d> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x13a5663d> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <auth pap> <magic 0xcf150100> <pcomp> <accomp>]
sent [LCP ConfAck id=0x1 <asyncmap 0x0> <auth pap> <magic 0xcf150100> <pcomp> <accomp>]
Warning - secret file /etc/ppp/pap-secrets has world and/or group access
sent [PAP AuthReq id=0x1 user="cmnet" password=<hidden>]
rcvd [PAP AuthAck id=0x1 "Welcome!"]
Remote message: Welcome!
PAP authentication succeeded
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [IPCP ConfReq id=0x1 <addr 192.168.202.0>]
sent [IPCP ConfAck id=0x1 <addr 192.168.202.0>]
rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>]
sent [IPCP ConfReq id=0x2 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [IPCP ConfNak id=0x2 <addr 10.176.120.186> <ms-dns1 218.201.96.130> <ms-dns3 211.137.191.26>]
sent [IPCP ConfReq id=0x3 <addr 10.176.120.186> <ms-dns1 218.201.96.130> <ms-dns3 211.137.191.26>]
rcvd [IPCP ConfAck id=0x3 <addr 10.176.120.186> <ms-dns1 218.201.96.130> <ms-dns3 211.137.191.26>]
local IP address 10.176.120.186
remote IP address 192.168.202.0
primary DNS address 218.201.96.130
secondary DNS address 211.137.191.26

4) 查看网络设置与ping实验
/etc/ppp # ifconfig
lo Link encap:Local Loopback 
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

ppp0 Link encap:Point-to-Point Protocol 
inet addr:10.176.120.186 P-t-P:192.168.202.0 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:4 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:64 (64.0 B) TX bytes:82 (82.0 B)
来ping 一下看看
/etc/ppp # ping www.163.com -c 3
PING www.163.com (221.204.240.161): 56 data bytes
64 bytes from 221.204.240.161: seq=0 ttl=46 time=466.873 ms
64 bytes from 221.204.240.161: seq=1 ttl=46 time=435.762 ms
64 bytes from 221.204.240.161: seq=2 ttl=46 time=414.000 ms

--- www.163.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 414.000/438.878/466.873 ms

3.其它问题

1 ) 设置DNS地址
/etc/ppp 下会由拔号自动产生resolv.conf 文件, 但它和 /etc/resolv.conf 并不是同一个文件,所以有的时候不能解析DNS。
一个好办法是,首先保证存在/etc/resolv.conf, 然后在/etc/ppp下创建软链接ln -s /etc/ppp/resolv.conf /etc/resolv.conf
这样在拔号成功后,在/etc/resolv.conf中会有类似以下内容:
nameserver 218.201.96.130
nameserver 211.137.191.26
2) 只能ping IP地址,不能ping域名的现象
在busybox的命令帮助页面有这样一段话:
引用:
LIBC NSS
When used with glibc, the BusyBox 'networking' applets will similarly require that you install at least some of the glibc NSS stuff (in particular, /etc/nsswitch.conf, /lib/libnss_dns*, /lib/libnss_files*, and /lib/libresolv*).
于是把arm-linux工具链的lib目录下的 libnss_dns* , libnss_files* , libresolv* 拷贝到ARM目标板的/lib下。可以ping域名啦 
/etc/ppp # ping www.163.com
PING www.163.com (221.204.240.161): 56 data bytes
64 bytes from 221.204.240.161: seq=0 ttl=46 time=641.269 ms
64 bytes from 221.204.240.161: seq=1 ttl=46 time=435.801 ms
64 bytes from 221.204.240.161: seq=2 ttl=46 time=446.776 ms
64 bytes from 221.204.240.161: seq=3 ttl=46 time=381.381 ms
64 bytes from 221.204.240.161: seq=4 ttl=46 time=468.495 ms

--- www.163.com ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 381.381/474.744/641.269 ms


3) 如何实现拔号与中国联通的3G 联网?
换用TELIT公司的UC864-E, 使用USB连接方式。指定串口为ttyUSB0
对于ppp方面,只需要更改4个脚本中的少量内容
a. 更改options脚本
把gprsoptions更名为g3options, 把里面的这一行参数/dev/ttyS4 更改为 /dev/ttyUSB0
把connect '/etc/ppp/chat -s -v -f /etc/ppp/gprs-connect-chat'
更改为connect '/etc/ppp/chat -s -v -f  /etc/ppp/g3-connect-chat '
b. 更改chat脚本
TIMEOUT 15
ABORT '\nBUSY\r'
ABORT '\nNO ANSWER\r'
ABORT '\nRINGING\r\n\r\nRINGING\r'
#'' AT
#'OK-+++\c-OK' ATH0
TIMEOUT 40
'' \rAT
OK AT+FLO=0
OK ATS0=0
OK ATE0V1
OK AT+CGDCONT=1,"IP","UNINET"  #UNINET是代表中国联通网的意思
#OK AT+CGDCONT=1,"IP","CMNET"
OK ATDT*99***1#
CONNECT 
c. 更改pap-secrets
# Secrets for authentication using PAP
# client server secret IP addresses
#cmnet * cmnet * #如果是中国移动GPRS就用cmnet
uninet * uninet  * #如果是中国联通3G就用uninet

d. 更改chap-secrets
同上pap-secrets

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机图形学在线作业,电子科技16秋《计算机图形学》在线作业3 辅导资料

16秋《计算机图形学》在线作业3一、单选题(共 10 道试题&#xff0c;共 50 分。)1. 在下列有关曲线和曲面概念的叙述语句中&#xff0c;错误的论述为____。. 实体模型和曲面造型是系统中常用的主要造型方法&#xff0c;曲面造型是用参数曲面描述来表示一个复杂的物体. 在曲线和…

eins

模拟9 T1 &#xff08;COGS上也有&#xff0c;链接http://218.28.19.228/cogs/problem/problem.php?pid1426&#xff09; 题目描述 f0 0&#xff0c;f1 1&#xff0c; fn fn-1 fn-2&#xff08;i > 2&#xff09;&#xff0c;求fn mod p 分析 反正就是矩阵乘法吧&#…

V210 UART 整体流程

2.6内核以后&#xff0c;多数驱动都是以平台总线的方式编写&#xff0c;因此对于这种类型的驱动&#xff0c;实际就是要分成两个流程来分析 平台总线设备的构造&#xff0c;平台总线驱动的构造。 下面先分析平台总线设备的构造&#xff0c;平台总线设备里是硬件相关的信息&am…

安徽大学计算机考研学硕2019初试单科线,安徽大学2019年考研复试分数线已公布...

2019考研国家线及各大院校复试分数线已公布&#xff01;考生们自从得知考研成绩后都在忐忑的等待着。下面中公考研小编整理了“安徽大学2019年考研复试分数线已公布”相关内容&#xff0c;希望能对2019考研考生们有所帮助。点击查看&#xff1a;2019考研国家线一、第一志愿报考…

1 jquery对checkbox的简单操作

//全选和全不选 votefunction selectAll(){ if($(":checkbox").prop(checked)){ //$(":checkbox").removeAttr(checked);//attr不兼容了jquery1.6以上 $(":checkbox").prop(checked,false); }else{ $(":checkbox").prop(c…

e记法 python 底数_备战python二级

明天考试去&#xff0c;滚吧提醒与分值&#xff1a;1*40&#xff08;选择&#xff09;5*3&#xff08;填空&#xff09;101520比如今年的一个题目是要求随机抽一个手机品牌&#xff0c;这道题目的关键点在于你要使用seed()函数覆盖原来的给定的种子seed(1)&#xff0c;因为要求…

V210 UART TX 流程

1. 虽然V210的uart驱动是平台总线设备驱动模型&#xff0c;但实际上他还是以字符设备驱动存在&#xff0c;那么分析他的发送流程&#xff0c; 首先找到他的file_operations的write函数 drivers/char/tty_io.c tty_write(struct file *file, const char __user *buf, size_t cou…

浙江省计算机二级办公软件高级应用分值,浙江计算机二级高级办公软件word题分值是多少...

计算机文化基础试题集(浙江省计算机办公室软件等级考试悬赏分&#xff1a;10 - 离问题结束还有 12 天 23 小时一、选择题((1)&#xff5e;(30)每小题1分&#xff0c;(31)&#xff5e;(55)每小题2分&#xff0c;共80分)下列各题 A) 、B)、C)、D)四个选项中&#xff0c;只有一个选…

MVC中JSON字符长度超出限制的异常处理

异常信息如下&#xff1a; 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值。这个异常是在执行MVC中的JsonResult的时抛出的&#xff0c;根据异常的Message得知是序列化的字符串超出了maxJsonLength的限制。并得…

cookie 百科_cookie是什么

很多朋友并不了解cookie是什么&#xff0c;Cookie&#xff0c;有时也用其复数形式 Cookies&#xff0c;指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于 RFC2109 和 2965 中的都已废弃&#xff0c;最新取代的规范是 RFC6265…

pppd 源码修改1

1. pppd拨号成功后&#xff0c;会将解析到的dns服务器IP地址&#xff0c;写入/etc/ppp/resolv.conf 这样的话&#xff0c;gethostbyname_r并不会识别&#xff0c;并且&#xff0c;如果有启动两路pppd的话&#xff0c;后面一路会将resolv.conf文件重写。 因此&#xff0c;这块代…

学校计算机专业春联大全带横批,对联大全带横批_春节对联大全_新年春联合集...

上联&#xff1a;旧岁又添几个喜 下联&#xff1a;新年更上一层楼 横批&#xff1a;辞旧迎新上联&#xff1a;绿竹别其三分景 下联&#xff1a;红梅正报万家春 横批&#xff1a;春回大地上联&#xff1a;民安国泰逢盛世 下联&#xff1a;风调雨顺颂华年 横批&#xff1a;民泰国…

2014腾讯实习生招聘软件开发类附加题

附加题&#xff1a; 31. 一个珠宝商甲要鉴定41克以下的宝石&#xff08;40克及以下的任意重量&#xff09;&#xff0c;商甲只带一个天平和四个砝码&#xff0c;请问带哪四个砝码&#xff1f; 32. 一道有关utf-8编码的题。给了个例子&#xff1a;“我”的Unicode码是xxxx, 其ut…

location.href属于重定向还是转发_servlet2 单元测试、转发、重定向

解决服务端接收数据乱码问题。服务器默认采用 ISO8859-1 编码响应内容。// 1req.setCharacterEncoding("utf-8");// 2 byte[] bytes req.getParameter("username").getBytes("iso-8859-1"); System.out.println("username:" n…

如何在CSDN博客中的所贴的代码进行【代码块】显示

笔者最近很喜欢在csdn发一些技术博客&#xff0c;可是看了别人的博客&#xff0c;有代码的地方总是可以显示出代码块&#xff0c;而自己贴上去的代码总是没有。刚开始还以为CSDN博客里面的编辑功能有&#xff0c;可是找来找去都没有找到。后来才发现原来需要自己在源码上进行修…

学安全工程用不用计算机,上重点大学的末流专业,不如上普通大学的重点专业,你赞成吗?...

上重点大学的末流专业&#xff0c;不如上普通大学的重点专业&#xff0c;你赞成吗&#xff1f;首先&#xff0c;我对这个说法不赞成&#xff0c;这个说法是错误的。可以说&#xff1a;基本上说的是对的也是错的。说对的&#xff0c;是这个思路是对的&#xff0c;说错&#xff0…

ORACLE复杂查询之连接查询

一、传统的连接查询 1、交叉连接&#xff1a;返回笛卡尔积 WHERE中限定查询条件&#xff0c;可以预先过滤掉掉不符合条件的记录&#xff0c;返回的只是两个表中剩余记录&#xff08;符合条件的记录&#xff09;的笛卡尔积。 2、内连接&#xff1a;参与连接的表地位平等&#xf…

12306加密传输_三大运营商发5G消息白皮书:短消息服务升级,支持加密传输

4月8日&#xff0c;中国电信、中国移动、中国联通联合举行线上发布会&#xff0c;共同发布《5G消息白皮书》。《白皮书》阐述了5G消息的核心理念&#xff0c;明确了相关业务功能及技术需求&#xff0c;提出了对5G消息生态建设的若干构想。据介绍&#xff0c;5G消息业务是终端原…

winpe修复计算机无法启动,用winpe来修复无法进入系统的问题

很多网友都碰到过有的时候无法进入系统&#xff1f;不知道该怎么操作&#xff0c;U大师告诉你一个方法&#xff1a;那就是用winpe来修复无法进入系统的问题,可以先在硬盘上安装一个PE维护系统&#xff0c;重启电脑时在多重启动菜单选择Windows PE&#xff0c;系统便会自动进入P…

详细解说 STL 排序(Sort)

0 前言: STL&#xff0c;为什么你必须掌握 对于程序员来说&#xff0c;数据结构是必修的一门课。从查找到排序&#xff0c;从链表到二叉树&#xff0c;几乎所有的算法和原理都需要理解&#xff0c;理解不了也要死记硬背下来。幸运的是这些理论都已经比较成熟&#xff0c;算法也…