移植rp-pppoe到s3c2440(QQ2440v3)實現ADSL撥接

來源:互聯網
上載者:User

一:總的來說可以分四點

1:arm linux 核心支援ppp

2: install  ppp-2.4.4 (rp-pppoe要ppp的支援才能正常運行)。

3: install  rp-pppoe。

4:把步驟(2)(3)中產生的相應檔案下載到目標板,根據相應提示適當修改就行了。

二:需要的包

移植需要rp-pppoe和ppp。我用的是rp-pppoe3.10和ppp-2.4.4的組合。

三:具體過程

1: 配置編譯核心

 在核心原代碼主目錄下 make menuconfig

-> Device Drivers -> Network device support  -> PPP (point-to-point protocol)  中,選中所有ppp選項。退出,儲存配置,重新執行make zImage.
將arch/arm/boot/下的zImage下載到開發板上重啟系統。

2:  install ppp-2.4.4

下載的是ppp-2.4.4.tar(http://www.sfr-fresh.com/linux/misc/ppp-2.4.4.tar.gz/)解壓。進入源碼目錄。執行./configure。
完成後。執行make,這裡要進行交叉編譯。因此,我在這裡指定CC為arm gcc,整個命令為
make CC=arm-linux-gcc

(NOTE: 這裡為你自己機子上的交叉編譯器,根據具體名字而定)
編譯完成後,進入pppd目錄,將產生的pppd可執行檔拷貝到目標板檔案系統的/usr/sbin下。

3:install rp-pppoe3.10
下載rp-pppoe3.10(http://www.roaringpenguin.com/products/pppoe)後,解壓源碼。進入源碼目錄。再進入src目錄。
然後,要進行交叉編譯。根據經驗,使用./confiugre --host=arm-linux的命令進行配置,但不能通過,confiuge執行後,報
checking for Linux 2.6.X kernel-mode PPPoE support... cross-compiling, default:
no
checking packing order of bit fields... no defaults for cross-compiling
的錯誤,然後退出了confiugre程式。
configure程式其實是一sh指令碼,用編輯器開啟,仔細查看後,原來此指令碼根本沒對cross_compiling提供支援,當檢測到你要進行交叉編譯後,就自動結束了。解決方案一是自已在指令碼中加入相關代碼,一是用./configure產生非交叉編譯的makefile,然後再手工修改其中的gcc為arm-linux-gcc。

第二種方法。執行./configure後,程式報產生兩個makefile檔案,一是在src 下的,一是在libevent下的。直接替換這兩個makefile檔案中的
編譯完成後,src目錄下會產生pppoe,pppoe-server,pppoe-sniff,pppoe-relay。把這些程式下載到目標機/usr/sbin目錄下。
複製配置檔案
rp-pppoe-3.10/configs目錄下是rp-pppoe所需的設定檔,把這些檔案全部複製到目標機的/etc/ppp目錄下(沒有就自己建一個)。
撥號相關的指令碼程式共有6個,在rp-pppoe-3.10/scripts中。
pppoe-setup:配置程式,把輸入的帳號密碼等資訊存入設定檔。
pppoe-start:撥號程式,串連網路。
pppoe-stop:斷開。
pppoe-status:查看串連狀態。
pppoe-connect:串連網路,被pppoe-start所調用。
pppoe-init:初始化,被其他程式調用。
把這些指令碼也放到/usr/sbin目錄下。

4: 在目標板上測試回合
試運行一下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

如果核心運行再執行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已撥號成功,可以ping 下google看通不。

Ping www.google.com

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.