linksyswrt54操作手册.doc_第1页
linksyswrt54操作手册.doc_第2页
linksyswrt54操作手册.doc_第3页
linksyswrt54操作手册.doc_第4页
linksyswrt54操作手册.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

技术文档Linksys WRT54G使用指南v0.01 blckstone2009-7-111 基本运行环境1.1 硬件平台 1.1.1 Linksys WRT54G V4CPU 200MHz Broadcom BCM5352 chip rev0SDRAM: 16MFlash: 4M具体说明:/products/Wireless-LAN/802.11-Wireless-LAN-Solutions/BCM5352ELThe BCM5352EL integrates a high-performance MIPS32 processor, IEEE 802.11 b/g MAC/PHY, SDRAM controller, and a configurable five-port Fast Ethernet (FE) switch. The BCM5352EL provides wireless LAN connectivity supporting data rates of up to 125 Mbps that is backward-compatible with standard 802.11 b/g. The BCM5352EL supports a WAN connection via its configurable media interfaces. The per-port programmable four-level priority queues enable QoS (IEEE 802.1p) for guaranteed bandwidth applications, DiffServ/TOS, and L2/L3 IGMP snooping. The IEEE 802.1Q VLAN allows flexible implementation of VLAN grouping and WAN port segregation.特征200-MHz MIPS32 CPU core with 16-KB instruction cache, 8-KB data cache, and 256-B prefetch cache and a Memory Management Unit (MMU) for high-level Real-Time Operating System (RTOS) support Interfaces to BCM2050, a 2.4-GHz direct conversion radio The BCM5352EL is a low-cost, high performance system-on-chip (SoC) for residential and small office, home office (SOHO) markets. Time-to-market is significantly reduced through stable Linux and VxWorks kernels, board support packages (BSPs), drivers, and toolchains.1.2 软件平台1.2.1 DD-WRT版本号:DD-WRT V24 (05/24/08) std build 9526登录时默认的用户名密码:root/admin/dd-wrtv3/dd-wrt/about.htmlDD-WRT is a Linux based alternative OpenSource firmware suitable for a great variety of WLAN routers and embedded systems. The main emphasis lies on providing the easiest possible handling while at the same time supporting a great number of functionalities within the framework of the respective hardware platform used. The graphical user interface is logically structured, and it is operated via a standard Web browser, so even non-technicians can configure the system in only a few simple steps. Apart from the simple handling, speed and stability are also in the focus of our development work. Compared to the software preinstalled on many WLAN routers, DD-WRT allows a reliable operation with a clearly larger functionality that also fulfills the demands of professional deployment. The huge user community gives support to DD-WRT developers and the users themselves in various ways. Thanks to this, potential flaws in the system can be detected very quickly and can thus be corrected without delay. DD-WRT users can find help and suggestions from other users in the user forums, and the Wiki containing further information and how-to guides is being expanded and maintained by the DD-WRT community as well. For devices mainly used for private purposes, DD-WRT is freely available. Platforms used for commercial purposes require a paid license. Compared to the freely available version, the professional version also allows for configuration of the WLAN parameters, thus opening up the opportunity of creating e.g. reliable and powerful network infrastructures. Special demands can be fulfilled by specifically tailored versions of DD-WRT. Main characteristics: supports more than 200 different devicescomprehensive functionalitysupports all current WLAN standards (802.11a/b/g/n*)supports outdoor deployment*supports enhanced frequencies *VPN integrationsupports various Hotspot systemsbandwidth managementmultilingual user interface*appropriate WLAN hardware requiredDD-WRT is: Sebastian Gottschall (BrainSlayer, founder, maindeveloper)Christian Scheele (Chris, CEO)Peter Steinhuser (CEO)Ankush Malhotra (Maksat)Ales Majdic (Eko, Developer)Sylvain Bothorel (Botho, router webdesign)Felix Fietkau (nbd/openwrt, madwifi)Elke Scheele (Online Shop)Markus Quint (support) . and alot of supporters around the world交叉编译:编译器和所用头文件和库文件对此,我写好了一个makefile专门用来进行交叉编译。但是目前只能进行静态编译,即将所有的库文件链接成一个可执行文件,而不能使用动态链接!原因可能是因为目标机器上的运行的系统中所包含的动态库与交叉编译环境中的动态库版本不同,应该考虑将版本换成同样的动态库后,再次进行编译!此外为了方便调试,可以让目标机器挂载编译环境中的samba服务提供的共享文件,从而方便目标机器与交叉编译机器之间共享文件!在目标机器上,编译的内核使用的版本是2.4.35,gcc版本是3.4.6, openwrt-2.0目标机器类型是:mipsel架构(LIL_ENDIAN)假设交叉编译环境安装在/opt/openwrt/目录下CC=/opt/openwrt/bin/mipsel-linux-gccCFLAGS=-I /opt/openwrt/includeLDFLAGS=-L /opt/openwrt/lib-Host=mipsel-linux-prefix=/opt/openwrt1.2.2 OpenWrtOpenWrt是用于嵌入式设备的Linux发行版。比起试图创建单一的、静态固件,OpenWrt则是提供一个包含有包管理功能的全套可写的文件系统。这就可以使用用户从产品选择和配置中解放出来,使得用户自己可以定制其所需的软件。对于开发人员来说,OpenWrt是一种编译程序的框架,其不需要有完整的固件。对用户来说,这就意味着完全的可定制,其可按照自己的想法来随意使用设备。1.3 配置路由器1.3.1 通过web界面管理路由器路由器默认的网络参数如下:Lan IP: Mask: web管理入口: 用户名密码:root/admin通过web界面可进行常规的参数配置。建议所以配置均通过web界面进行,因为其可以自动保存有关参数。1.3.2 通过telnet管理路由器可通过如下命令登录到路由器的telnet服务:telnet 用户名密码与web管理界面相同。通过telnet登录到路由器后,就获得了一个shell,通过该shell就可以像使用普通linux系统一样操作该路由器了。1.4 特色功能列举1.4.1 挂载samba共享目录要以通过web管理界面或telnetl界面,设定路由器挂载网络中的共享文件目录。从而在路由器中就可以像使用本地目录一样使用远程目录。2 编译运行新程序2.1 寻找OpenWrt-2.0编译环境2.1.1 为什么要找OpenWrt-2.0通过登录到路由器查看内核的版本号发现:cat /proc/version发现当前路由器所使用的固件的编译器版本是gcc-3.4.6,对应openwrt-2.0。为了使新编译的程序可以使用路由器上的动态库。我们需要使用openwrt-2.0这样的编译环境。2.1.2 Whiterussian系列发现均是OpenWrt-1.02.1.3 Kamikaze系列找到gcc-3.4.6,即OpenWrt-2.02.2 搭建交叉编译环境2.2.1 搭建可用主机环境安装好可以编译的主机环境,并在上面安装好相应的Apache2服务、samba服务等,方便后继的与路由器的数据交换!2.2.2 获取交叉编译工具链从获取较新交叉编译工具环境。对于本路由器的一可用的较新版本是:openwrt2.0下载地址为:/kamikaze/7.09/brcm-2.4/OpenWrt-SDK-brcm-2.4-for-Linux-i686.tar.bz2解压后即可获得所需要交流编译工具集。一般可形成如下目录结构:Opt/openwrt2/binOpt/openwrt2/includeOpt/openwrt2/libOpt/openwrt2/etc等等。其中openwrt2目录中包含的就是对应交叉编译工具链(编译工具、标准库等)。2.2.3 交叉编译的标准的Makefile对于将要进行交叉编译的源代码来说,可将对应源代友目录复制到opt目录中,然后修改其Makefile。 #指明opt目录的相对位置:ROOT=.#指明最后要生成的目标:TARGET= target#指明生成最终目标所需的中间文件:OBJS= file1.o file2.o file3.o #指定用的交叉编译工具链:CC=$(ROOT)/openwrt2/bin/mipsel-inux-gccLD=$(ROOT)/openwrt2/bin/mipsel-linux-gccCFLAGS = -I $(ROOT)/openwrt2/includeLDFLAGS = -L $(ROOT)/openwrt2/lib指定编译:.c.o: $(CC) $(CFLAGS) c o $ $(TARGET):$(OBJS)$(LD) $(LDFLAGS) o $ $#指定常用的依赖:.phoney: all clean installAll: $(TARGET)Clean:Rm rf $(TARGET) $(OBJS)Install: $(TARGET)Sudo cp $(TARGET) /var/wwwSudo chmod 644 /var/www/$(TARGET)2.2.4 编译安装运行在目标路由器上可以使用:#wget http:/hostname/target将编译好的目标下载到路由器上,从而可以在路由器本地上执行!除使用HTTP服务来传递数据外,还可以在主机系统上建立Samba服务,而在路由器上挂载该samba服务的方式来实现数据共享!2.3 对认证程序进行交叉编译2.3.1 获取认证程序使用我自己写的HustSupplicant认证程序。该认证程序的认证逻辑非常清晰,主要认证机制全部分析清楚透彻。因此对于将来的维护、修改、扩充等非常有利。另外,本HustSupplicant不依赖其它特定的包,一般是只使用标准C函数。这可以降低程序移植的难度和工作量。2.3.2 交叉编译如前一节所提到的,对其Makefile进行交叉编译的改造。2.3.3 运行测试l 问题一:发送了认证主播包,但是无任何响应。在检查网线、代码基本无问题之后,我大概判断原因是来自于认证交换机所使用的组播模式为非标准的802.1x组播模式。我将认证模式由标准模式更换为Shida私有组播模式后,即可出交换机对认证的响应包。这个问题似乎并没有得到解决!因为我在实验室里可以认证成功,而回到寝室里就又出现同样的情况。我把认证模式进行更改也没有作用!这到底是何原因?昨天我回寝室,使用wireshark来监测数据包的发送。发现只要使用的组播地址是标准的802.1x组播地址,则该组播帧似乎就被交换机给屏蔽了。这可能就是原因吧。但新的问题是交换机是如何屏蔽的?怎么关闭此屏蔽?/forum/archiver/tid-19379.html你要真想上 802.1x 认证的话,不是所有的机器都支持的。我手上用的是 Linksys WRT54GS v1.0 手上的另外两个 Buffalo WHR-G125 和 Buffalo WHR-HP-G54都不行。说来话长,Broadcom 的交换机驱动里面有一个 BUG ,导致 802.1x 网络包无法发送。只有使用 ADM6996 交换芯片的机器才能支持 802.1x 认证,否则会失败。据我所知目前使用这个芯片的机器只有 Linksys WRT54G/GS 系列的前两个版本,还有 Moto WR850G v2 ,Dell TrueMobile 2300 的某一个版本,其它的都不行了。包括BCM5325 独立交换芯片或者是像 BCM5354 这样集成交换芯片的,都不行。l 问题二:认证的回馈信息中有中文乱码学校的网络中心对认证请求的反馈中,若含有信息,则一般都是中文的,而且其编码似乎是GB2312。若我们想正确显示这些信息,则可以使用putty来登录目标路由器的Telnet服务,并将putty的选项windows中的translation的字符集输入为CP936。然后再次登录到路由器进行认证,此时可以得到正确的反馈信息。l 问题三:认证客户端版本过低在寝室里一般不会有这相问题,使用较低的2.39版论证程序即可。但是在光电国家实验室这边的网络中,似乎交换机较新,因此其对认证程序的版本就有一定要求。经过测试,发现在实验室里认证的版本至少为3.05可以通过修改hs.conf配置文件,来修改HustSupplicant所模拟的认证版本。l 问题四:无法从主机系统上下载目标二进制文件有几点需要注意:主机系统的web服务文件中需要检测目标文件的权限,特别是对于其它用户需要有读权限。若某个文件的其它人读权限没有打开,则显然通过web是访问不了的。建议文件命名都使用小写文件名称不宜过长。2.3.4 待改进的地方部分算法是采用计算的方式而不是查表的方式,这对于路由器的CPU来说可能是负担。因此在这方面应该进行减负!认证程序不能在路由器上永远保存,一掉电或重启则认证程序就丢掉了。要想再次使用就必须重新从主机系统中下载。另外认证程序还不能自动获得当前运行环境中的指定网卡的IP信息和掩码信息。3 编译配置新固件3.1 介绍OpenWrt Buildroot3.1.1 关于OpenWrt BuildrootOpenWrt Buildroot是一组Makefiles和补丁文件,这些文件可以使用用户很容易的生成交叉编译toolchain以及用于Wireless Router的根文件系统。交叉编译工具链使用的一种小型的C标准库:uClibc,编译工具链是一组工具集,这些工具集可以使你为你的系统编译代码。其一般包括如下几个部分:l 编译器,如gccl 二进制工具,如汇编器、链接器l C标准库,如GNU Libc, uClibc, dietlibc安装在你自己的开发环境中的系统,本身已经带了一组编译工具链,可以编译生成能在你自己的机器架构上运行的二进制文件。如果你使用的是pc,则你的编译工具链是运行在X86处理器,其生成的代码也是基于X86处理器的。在大多数的Linux系统中,编译工具链使用的C标准库是GNU libc。这样的编译工具链系统称为“host compilation toolchain”。编译工具链所运行的系统,就被称之为“host system”。这样主机编译工具链是由你的发行版提供的,openwrt不会对其做任何事情。就像上面说的,运行在你自己系统上的编译工具链生成的二进制可执行文件是运行在你自己主机系统上处理器上的。而对于具有不同处理器结构的嵌入式系统,你就需要交叉编译工具链:运行在你主机系统上的编译工具链,但是其生成的代码是用于目标系统(目标处理器)。比如,如果你的主机系统使用的是X86,而你的目标系统是MIPS,则通常的运行在你主机上的X86编译工具链编译生成的代码是用于X86,而运行于X86的交叉编译工具链则生成用MIPS的代码。在你可以手运编译出gcc,binutils, uClibc及其它一些具时,你或许会问为什么会需要这样的工具链?当然,这样是可行的,不过,处理这样的编译过程和配置过程是非常消耗时间及枯燥的。OpenWrt Buildroot可以使用Makefiles及各种版本的gcc及binutils的补丁文件来自动处理这个过程,使生成的交叉编译工具链可以在Wireless Router的MIPS架构上正常工作。3.1.2 获取OpenWrt Buildroot通过svn可以获取相应的OpenWrt:对于各种OpenWrt开发,可以使用如下命令获取最新的版本:$svn co /openwrt/trunk/如果你只需要创建自定义的固件映像及包,我们推荐你使用稳定版本:$ svn co /openwrt/branches/whiterussian/3.1.3 使用OpenWrt BuildrootOpenWrt的配置界面和Linux内核配置()及busybox()的配置界面类似。特别提醒是编译配置OpenWrt只需要是通常用户就可以了,不需获取root权限。编译的过程如下:(1) 配置$make menuconfig在配置选项中的每一项,你都可以获得相关的帮助来了解对应条目的作用。当配置完成,将自动生成.config文件,以保存配置参数。随后Makefile将会使用到.config中的配置参数。(2) 编译$make该命令将会下载、配置及编译选择的所用的工具,最终生成目标固件以及一些额外的工具包。生成的所有目标文件都可以在bin/子目录中找到。你编译的固件映像可以包含两种不同的文件系统类型。l Jffs2。 Jffs2包含一个可写的根文件系统,它可以扩展你的flash映像的大小。注意:如果你使用通过的固件映像,你需要为你的flash的大小挑选正确的映像,因为其不同的eraseblock大小。l Squashfs。Squashfs包含一个只读的文件系统,其为对使用了LZMA压缩的squashfs文件系统的修改版本。当引导时,你可以创建可写的二级文件系统,它可以保存你对根文件系统的修改,包括你所安装的软件包。3.1.4 定制目标文件系统当前有两种方式可以定制最终的目标文件系统:直接定制目标文件系统,然后重编译映像。目标文件系统所在目录是build_ARCH/root/,这里ARCH是选定的目标板的体系结构,通常是mipsel。你可以在这里做些简单的修改,之后使用make target_install来重新构建目标文件系统。该方法可以目标文件系统做任何事情,不过如果你决定重构我的工具链、工具或包,则这些修改会丢掉。定制目标文件系统的纲要,通过package/base-files/default/.。你可以在这里定制配置文件及其它事情。不过整个文件系统的层次结构还不存在,因为其是在编译过程中生成的。因此你不能对这个目标文件系统纲要进行任意修改,不过若你做了修改,则这些修改在重新编译时不会丢掉。3.1.5 定制Busybox配置Busybox是可定制的,你可以根据自己的需要对其进行定制。其配置界面已经集成到了系统的主配置界面中。你可以在“OpenWrt Package Selection”中的“Busybox Configuration”找到。3.1.6 定制uClibc配置就像BusyBox一样,uClibc也提供了许多的配置选项。你可以根据自己的需要及条件限制,来选择各种各样的功能。修改uClibc最简单的方式如下:(1) 在没有对uClibc进行任何配置的情况下进行一次buildroot编译(2) 改变当前目录到toolchain_build_ARCH/uClibc/目录,然后运行make menuconfig.可以根据配置界面进行配置。(3) 将.config文件复制到toolchain/uClibc/uClibc.conf或者toolchain/uClibc/uClibc.conf-locale。当你在busybox的配置选项中未选择locale时使用前者,若选择了则使用后者。(4) 重新运行编译当然,你也可以直接修改toolchain/uClibc/uClibc.conf或toolchain/uClibc/uClibc.config-locale,而不需要运行配置助理。3.1.7 OpenWrt Buildroot是如何工作的前面提到,OpenWrt基本上是一组Makefiles,其可下载、配置以及使用正确的选项进行编译。它同样包含了一些软件的补丁,主要是用于交叉编译工具链的补丁。每一个软件都有一个Makefile,一般被命名为“Makefile”。每个Makefile有三个小节:l Package小节(在package/目录):包含用于编译用户空间工具的文件及Makefile,这些工具可以被加入到目标文件系统中。每个子目录代表一种工具。l toolchain小节(在toolchain/目录):包含与交叉编译环境相关的Makefiles和文件库。l target小节(在target目录):包含与目标文件系统的映像和Linux内核生成相关的软件和Makefiles。支持两种文件系统:jffs2和squashfs.在每一个目录中,至少包含两个文件:l Makefile:下载、配置、编译及安装软件的Makefiles.l Config.in:配置工具描述文件的一部分。它描述了与当前软件相关的选项。主Makefile按序做如下工作(当配置完成以后):(1) 创建下载目录(默认为dl/)。该目录是压缩包所下载的目录,可以通过将其保存起来以避免再次下载。(2) 创建build目录(默认为build_ARCH/,ARCH是目标端的架构)。该目录用于编译用户空间的工具。(3) 创建toolchain编译目录(默认为toolchain_build_ARCH/)。该目录用于编译交叉工具链。(4) 配置staging目录(默认为staging_dir_ARCH/)。交叉编译工具链将要安装在该目录。如果你需要使用同样的交叉编译工具来编译第三方软件,那么你可以将staging_dir_ARCH/添加到你的PATH环境变量中,然后就可以通过arch-linux-gcc来编译程序了。为了正确的配置该staging目录,该目录会首先被删除,然后再创建里面的子目录和文件、符号链接文件等。(5) 创建target目录(默认为build_ARCH/root/)以及目标文件系统的纲要结构。该目录将会包含最终的目标根文件系统。为了建立该目录,其会首先被删除,将后将target/default/target_skeleton位置的纲要复制过去,最后删除无用的SVN/目录。(6) 调用toolchain, package, target等子目录中的prepare, compile, install等make目标3.1.8 使用uClibc工具链你可能需要交叉编译自己的程序,这时你可使用Buildroot生成的交叉编译工具链。该工具位于staging_dir_ARCH/目录。使用其最简单的方式是将路径staging_dir_ARCH加入到PATH环境变量中,然后使用arch-linux-gcc, arch-linux-objdump, arch-linux-ld等等即可。比如,你可以将如下语句添加到你的.bashrc文件中(假设用于MIPS架构的Buildroot位于/openwrt/):export PATH=$PATH:/openwrt/staging_dir_mipsel/bin/之后就可以简单的使用如下命令进行交叉编译:$ mipsel-linux-uclibc-gcc -o foo foo.c注意:不要将toolchain中工具移出到其它目录,这会使得编译系统不能正常工作。3.1.9 在其它地方使用uClibc工具链默认情况下交叉编译工具链是生成在目录staging_dir_ARCH/目录中。如果你需要将其转换到其它目录,则不可以直接复制,应该通过对Buildroot进行配置,即在“Build options”选项中的“Toolchain and header file location”中指定其位置。3.1.10 下载的软件包的位置默认情况下下载的软件都位于/dl目录中。3.1.11 扩展OpenWrt使用更多的软件本小节主要是考虑你想加入更多的用户空间的软件,以加入软件包foo为例:(1) 创建foo目录在package/目录中创建你的软件包所对应的目录。(2) 创建foo/config.in文件创建config.in文件。该文件将包含对foo软件的配置选项,而这些选项将会显示在配置工具中。其内容应该基本包含:config BR2_PACKAGE_FOO tristate foo - some nice tool default m if CONFIG_DEVEL help This is a comment that explains what foo is.如果该foo软件还依赖于Buildroot中的其它软件或库,则在config.in中自动选择好这些软件将会非常重要。例如,fool依赖于bar库,则:config BR2_PACKAGE_FOO tristate foo - some nice tool default m if CONFIG_DEVELselect BR2_PACKAGE_LIBBAR help This is a comment that explains what foo is.当前用户也可以加入其它一些配置参数。(3) 修改package/config.in为了使你的软件包能加入到配置工具中,你还需要修改package/config.in文件:comment Networkingsource package/foo/Config.in(4) 修改package/Makefile要将你的软件包foo添加到编译的过程中,需要对package/Makefile进行修改:package-$(BR2_PACKAGE_FOO) += foo除了默认的依赖关系外,若你的软件包还依赖于其它软件,则添加:foo-compile: bar-compile(5) ipkg控制文件此外还需要创建一个控制文件用以包含你的软件包的信息,这些信息将被ipkg工具使用。该文件应该以这样的形式:package/foo/ipkg/foo.control文件的内容如下: 1 Package: foo 2 Priority: optional 3 Section: net 4 Maintainer: Foo Software 5 Source: 6 Depends: libbar 7 Description: Package Description你可以忽略通常的Version和Architecture域,因为它们的内容将会由Makefile调用make-ipkg-dir.sh脚本自动创建。其中Depends域非常重要,这样ipkg工具将会在目标系统上自动获取所有依赖软件。(6) Makefile实例最后是最难的部分,创建Makefile。它包含了Makefile的规则,负责处理下载、配置、编译、安装软件,下面是一个例子: 1 # $Id: buildroot-documentation.html 2860 2006-01-08 02:17:18Z wbx $ 2 3 include $(TOPDIR)/rules.mk 4 5 PKG_NAME:=foo 6 PKG_VERSION:=1.0 7 PKG_RELEASE:=1 8 PKG_MD5SUM:=4584f226523776a3cdd2fb6f8212ba8d 9 10 PKG_SOURCE_URL:=/downloads 11 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz 12 PKG_CAT:=zcat 13 14PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) 15PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install 16 17include $(TOPDIR)/package/rules.mk 18 19$(eval $(call PKG_template,FOO,foo,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH) 20 21 $(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared 22 (cd $(PKG_BUILD_DIR); 23 $(TARGET_CONFIGURE_OPTS) 24 CFLAGS=$(TARGET_CFLAGS) 25 ./configure 26 -target=$(GNU_TARGET_NAME) 27 -host=$(GNU_TARGET_NAME) 28 -build=$(GNU_HOST_NAME) 29 -prefix=/usr 30 -sysconfdir=/etc 31 -with-bar=$(STAGING_DIR)/usr 32 ); 33 touch $ 34 35 $(PKG_BUILD_DIR)/.built: 36 rm -rf $(PKG_INSTALL_DIR) 37mkdir -p $(PKG_INSTALL_DIR) 38$(MAKE) -C $(PKG_BUILD_DIR) 39 $(TARGET_CONFIGURE_OPTS) 40 install_prefix=$(PKG_INSTALL_DIR) 41 all install 42touch $ 43 44 $(IPKG_FOO): 46install -d -m0755 $(IDIR_FOO)/usr/sbin 47 cp -fpR $(PKG_INSTALL_DIR)/usr/sbin/foo $(IDIR_FOO)/usr/sbin 49$(RSTRIP) $(IDIR_FOO) 50$(IPKG_BUILD) $(IDIR_FOO) $(PACKAGE_DIR) 51 52mostlyclean: 53 make -C $(PKG_BUILD_DIR) clean 54 rm $(PKG_BUILD_DIR)/.built这个Makefile是用于单个二进制软件的相关工作。对于其它的软件如库或复杂软件系统,则应该参照其它软件包的Makefile进行修改。从515行,定义了一组非常有用的变量:l PKG_NAME:软件包的名字l PKG_VERSION:应该下载的软件包的版本号l PKG_RELEASE:发行号l PKG_MD5SUM:md5较验值l PKG_SOURCE_URL:下载的地址完全路径,可以使用HTTP或FTP。l PKG_SOURCE:下载的软件包的全名l PKG_CAT:提取软件包所需要的工具l PKG_BUILD_DIR:软件将会编译和配置的目录l PKG_INSTALL_DIR:软件将要安装的目录。In Line 3 and 17 we include common variables and routines to simplify the process of ipkg creation. It includes routines to download, verify and extract the software package archives.Line 19 contains the magic line which automatically creates the ipkg for us.Lines 21-33 defines a target and associated rules that configures the software. It depends on the previous target (the hidden .prepared file) so that we are sure the software has been uncompressed. In order to configure it, it basically runs the well-known ./configurescript. As we may be doing cross-compilation, target, host and build arguments are given. The prefix is also set to /usr, not because the software will be installed in /usr on your host system, but in the target filesystem. Finally it creates a .configured file to mark the software as configured.Lines 35-42 defines a target and a rule that compiles the software. This target will create the binary file in the compilation directory, and depends on the software being already configured (hence the reference to the .configured file). Afterwards it installs the resulting binary into the PKG_INSTALL_DIR. It basically runs make install inside the source directory.Lines 44-50 defines a target and associated rules that create the ipkg package, which can optionally be embedded into the resulting firmware image. It manually installs all files you want to integrate in your resulting ipkg. RSTRIP will recursevily strip all binaries and libraries. Finally IPKG_BUILD is called to create the package.3.1.12 OpenWrt 内核模块创建本小节将主要介绍如何进行OpenWrt的内核模块的创建,使其成为安装成为ipkg。(1) 启用内核选项可以通过修改build_mipsel/linux

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论