在嵌入式Linux中實現802.11b無線網關

構成有線 網絡的傳輸媒介主要依賴銅纜或光纜;但有線網絡在某些場合要受到佈線的限制,特別是當要把相隔較遠的節點鏈接起來時,敷設專用通訊線路的佈線施工難度大、 費用高、耗時長,對正在迅速擴大的連網需求造成了瓶頸。無線局域網的出現克服了上述缺點,所以無線局域網發展比較迅速。基於802.11b的產品已成爲應 用主流。這些產品使用的是2.4 GHz頻段,可以在短距離內實現11 Mb/s的接入速率,每一個接入點能夠同時支持多個用戶的接入。而無線網關做爲鏈接無線終端與有線網絡之間的橋樑,是構成無限局域網的重要組成部分。做者重 點要探討的就是如何在嵌入式Linux系統上實現無線網關的功能。 bash


  1 嵌入式Linux的基本原理

   嵌入式系統是以應用爲中心,以計算機技術爲基礎,軟件硬件可裁減,適於應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。嵌入式系統 因爲硬件的先天限制,只具備極稀少的硬件資源,一般不具備磁盤而用小容量的Disk on Chip或Disk on Module等來代替。

   Linux做爲嵌入式操做系統是徹底可行的。它能處理嵌入式任務和用戶界面;將Linux看做是連續的統一體,從一個具備內存管理、任務切換和時間服務 及其餘的分拆的微內核到完整的服務器,支持全部的文件系統和網絡服務。Linux做爲嵌入式系統,對許多CPU和硬件平臺具備易移植、穩定、功能強大、易 開發的優勢。Linux做爲一種可裁減的軟件操做系統,是發展將來嵌入式設備的絕佳資源。由於Linux的源代碼公開,易於定製,提供完成嵌入式功能的基 本內核和所須要的用戶界面。

  一個小型的嵌入式Linux系統須要三個基本要素:引導工具、Linux微內核(內存管理、進程管理和事務處理)和初始化進程。若是要它成爲完整的操做系統且繼續保持小型化,還得加上硬件驅動程序、文件系統以及提供所需功能的一個或多個應用程序。

  2 802.11b無線網關在嵌入式Linux上的實現

服務器

  因爲Linux開始是爲臺式機開發的,加上嵌入式系統硬件資源固有的一些限制,所以,要實現無線網關在嵌入式Linux系統上的應用,就須要對Linux系統進行特別定製,刪除無線網關不須要的部分,真正作到精簡系統,減小成本的目的。網絡

2.1 精簡內核

  Linux內核是能夠根據特定的要求進行定製的,咱們使用的是2.4.4的內核。在/usr/src/Linux目 錄下,使用make menuconfig,去掉內核對floppy、cdrom的支持選項;Second extended fs(ext2)是實際上的Linux文件系統的標準,因此除了此項,把對其餘全部filesystem的支持去掉;去掉內核對sound的支持;去掉所 有的字符設備(char-acter device)等。工具




   在去除的同時,要根據AP應用軟件及一些特定功能的要求,在內核中留下對須要的驅動的支持,具體的有:①無線網關鏈接無線網絡與有線網絡,所以要保留對 網絡的支持(network support),保留對TCP/IP stack的支持,保留對以太網卡如嵌入式最經常使用的R18139驅動的支持,而且要在內核中設置模塊項;②嵌入式系統若是使用的是Disk On Chip,則內核中還要選中對它的支持:M-sys-tems drivers;③在內核中保留對特定功能的支持,如要使用PPP(點對點協議),則編譯的內核必須包含對PPP的支持。

  配置完成後,從新編譯內核,而後修改Linux系統引導器lilo的配置文件並最後以新編譯的核做爲啓動內核。重啓計算機,若運行一切正常,則精簡內核的工做就完成了。

  2.2 縮小Linux文件系統

   嵌入式Linux自己是一種操做系統。它的主要任務是管理計算機上的系統資源,爲用戶提供使用計算機及其外部設備的接口。它存在的目的是爲了管理全部的 硬件資源,而且提供給應用軟件一個合適的操做環境,所以在對嵌入式Linux系統進行大幅度刪除、縮小的同時也要保留一些基本的命令和目錄。

   這些保留的命令和目錄大致能夠分爲三類。一類是Linux系統啓動所須要的。這類重要的文件有init、getty等,重要的目錄與文件有/etc /rc.d、/etc/inittab等;在啓動時還會調用目錄/bin及/sbin下的一些命令,若已刪除,能夠根據啓動時的出錯信息進行添加。第二類 是用於完成一些系統基本功能的保留命令和目錄,最簡單的如拷貝命令cp,進入和跳出目錄的命令cd,列舉目錄下內容的命令ls等,這些命令完成操做系統最 基本的功能。另外一些命令須要與特定的配置文件或是存放配置文件的目錄相對應,完成相對特殊的功能。固然,具體要實現什麼功能要根據實際來定,並儘量保留 必要的命令與相應的目錄或是配置文件,達到在完成功能的狀況下儘量少地佔用存儲空間。完成上面的裁減工做後,重啓。若Linux可以正常啓動、運行,表 明初步的Linux嵌入式系統已經構架成功。最後一類就是使無線網關可以正常工做的。無線網關是以運行腳本命令pcmcia將驅動程序中已編譯好的目標文 件做爲模塊加載到系統中而啓動的,Linux提供了depmod、insmod、rmmod及其餘一些命令來保證適當的模塊以正確的順序加載,因此係統中 必須保證存在這些命令,同時無線網關啓動時還要讀取配置文件。這些配置文件通知無線網關的驅動程序相關參數的設置,因此配置文件所在的目錄/ect /pcmcia要保留。有了這些之後,無線網關就能正常啓動了。
2.3 無線網關功能的實現

  如圖1所示,無線網關須要完成的最重要的功能就是:與無線節點通訊、橋接全部的無線節點、實現無線網絡和有線網絡的跨網段鏈接。




  配置Linux的內核模塊,用PCMCIA CardService的方式驅動PCMCIA,運行「make modeules」以及「make
modeules_install" 來產生和安裝核心模組。因爲標準發行的「Linux內核源碼中,橋接功能和封包過濾功能(NetFiIi—ter)不能一塊兒正常工做,所以爲了要在同一臺 計算機上同時運行橋接功能和IPtables,須要對核心源碼進行修補。相關補丁能夠從http://bridge.sourceforge.net/上 下載。另外,要獲取PCMCIA-CS 3.2.1和PRISM2 HlostAP的驅動程序包,移植PCMCIA-CS和PRISM2 HostAP的驅動程序。完成這一步工做須要具備Linux下編譯程序源碼的簡單知識,主要是交叉編譯器(GCC)的使用。編譯好的模塊*.o文件放在 /lib/modules/2.4.4/misc:下,而後用depmod-a使此模塊成爲可加載模塊。模塊用insmod命令加載,用rmmod命令卸 載,並能夠用lsmod命令查看全部已加載的模塊的狀態。最後,橋接有線網卡和無線網卡,須要Linux下硬件(主要是網卡)配置和網絡配置的一些基本知 識。

  模塊搭建完畢後進行橋接功能的構建。解開橋接補丁bridge-utils.tar.gz,編譯所有經過而且移植成功後,能夠用 「ifconfig-a」命令查看全部的網絡接口:lo——本地loopback設備;ethO——第一個以太網卡;ethl——第二個以太網 卡;wlan0——無線網卡。用「ifconfig<設備>0.O.0.O」命令改變除了lo設備之外全部網絡接口的工做方式,以迫使系統進 入雜亂模式,能夠接收全部數據包。而後,執行「brctl addbr br0」命令來添加一個名字爲br0的橋接設備,再用「bretl addif br0 ethO」和「brctl addif br0wlan0"把無線端和有線端的接口綁定。接着,用「ifeonfigbr0 192.168.2.18 up'’使橋接設備生效。

  內核配置時選定GeneraI setup--->[*]Sysctlsupport,這樣纔會在板子的文件系統中/proc/sys/net/ipv4/出現 ip_forward文件,而後在應用程序中提供ena程序(加到etc/init.d/rcS中一句/bin/ena-e),將ip_for-ward 文件中默認的0改成1,這樣就打通了數據轉發的通道。下面就是要加上iptables,以支持NAT(NetWork Ad—dress Translation)。從網上下載iptables-1.2.5軟件,在iptables-1.2.5目錄下執行make,編譯經過後,將生成的可執 行文件iptables加到ramdisk裏面,而後燒寫到板子上進行配置便可。oop

iptables對NAT的支持既須要Linux內核的支持,還須要iptables命令的設置:

   ①內核編譯選項。在內核配置選單中的「Networkingoptions--->"選項下,選中「NetWork packet filtering(replaces ipchains)」項,而且在下面的「IP:Netfilter Con—figuration--->」選項中選擇所有選項。測試



  ②iptables命令支持
  #!/bin/bash
  # 打開端口轉發
  echo 1>/proc/sys/net/ipv4/ip_forward加入轉發規則:iptables - t nat - A POS—TROUTING - 0 ethl - j MASOUERADE。
  至此,構建無線網關的工做所有完成。

  3 測試結果

  搭建無線網關的測試系統如圖2所示。



   將上位機的網關設置爲172.17.248.169,用VB 6.0在上位機上開發一個負責監聽網絡的應用程序;在無線終端一方編寫一個客戶端程序,負責客戶端數據的發送和接收顯示,並在無線終端一方添加從網關到上 位機的路由。而後,上位機運行ping命令,測試結果以下:

  # ping 192.168.6.100
  PING 192.168.6.100 (192.168.6.100):56 data bytes
  64 bytes from 192.168.6.100:icmp_seq=0 ttl=255 time=1.8 ms
  64 bytes from 192.168.6.100:icmp_seq=1 ttl=255 time=1.4 ms
  64 bytes from 192.168.6.100:icmp_seq=2 ttl=255 time=1.4 ms
  64 bytes from 192.168.6.100:icmp_seq=3 ttl=255 time=1.4 ms
   ---192.168.6.100 ping statistics---4 packets transmitted,4 packets received,0% packet loss round—trip min/avg/max=1.4/1.5/1.8 ms上位機與無線終端通訊的測試結果如圖3所示。


  結 語

  至此,嵌入式Linux系統上802.11b無線網關的軟件 實現工做基本結束。測試結果代表,無線網關的基本功能,即與無線終端通訊、橋接無線終端、實現無線網絡和有線網絡的跨網段鏈接已經實現。下面將對該無線網 關作完善,以便進一步實現該無線網關在EPA(Ethernet for Plant Au-tomation)控制網絡中的應用。
spa

相關文章
相關標籤/搜索