在嵌入式Linux中实现802.11b无线网关( 二 )


这些保留的命令和目录大体可以分为三类 。一类是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里面,然后烧写到板子上进行配置即可 。

推荐阅读