基于ARM9的嵌入式Web服务器Boa的软硬件设计及其实现.doc
毕业设计论文基于ARM9的嵌入式Web服务器Boa的软硬件设计及其实现摘 要论文主要介绍了基于ARM9的嵌入式Web服务器Boa的软、硬件设计及其实现,其中硬件部分的核心是三星的S3C2410X为处理器。最后成果形式为可以远程访问的WebServer嵌入式服务器。Boa是一款单任务的HTTP服务器。与其他传统的Web服务器不同的是当有连接请求到来时,它并不为每个连接单独创建进程, 也不通过复制自身进程来处理多链接。而是通过建立HTTP请求列表来处理多路HTTP连接请求。同时它只为CGI程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要。同时它还具有自动生成目录、自动解压文件等功能。因此, Boa在嵌入式系统中具有很高的应用价值。关键词:ARM;Linux;嵌入式Web服务器;CGIAbstractThis paper has mainly developed the software hardware design and realization of the embedded Web server Boa based on ARM. And the core of the hardware part is S3C2410X microprocessor produced by Samsung . The final achievement is the embedded webserver which can remote visit. Boa is a single-tasking HTTP server. That means that unlike traditional webservers, it does not fork for each incoming connection, nor does it fork many copies of itself to handle multiple connections. It internally multiplexes all of the ongoing HTTP connections. And forks only for CGI programs, this is very important to embedded system. At the same time, it also has the function of automatic directory generation、automatic file gunzipping and so on. So Boa is of highly value in the embedded system application. Keywords: ARM;Linux;Embedded Web server;CGI目 录摘 要1Abstract2目 录3第一章 引言5第二章 课题背景62.1 嵌入式系统简介62.2 嵌入式系统和Linux62.3 ARM9硬件平台72.3.1 ARM简介72.3.2 JXARM9-2410 ARM嵌入式教学实验系统8第三章 嵌入式Web服务器93.1 概述93.2 Web服务器原理93.3 嵌入式Web服务器实现原理93.3.1 TCP/IP协议93.4 嵌入式Web服务器Boa103.4.1 Boa概述103.4.2 Boa的功能实现11第四章 CGI技术124.1 CGI概述124.2 CGI工作原理12第五章 建立嵌入式系统开发环境145.1 在Vmware下安装Redhat 9.0145.2 编译配置主机开发环境185.2.1 配置以太网185.2.2 安装配置tftp服务器195.2.3 配置防火墙215.2.4 配置NFS服务器225.3 JXARM9-2410中U-boot烧写225.3.1 u-boot的功能225.3.2 使用ADT IDE烧写u-boot23第六章 系统功能的实现256.1 GCC简介256.1.1 GCC概述256.1.2 GCC基本用法256.2 Linux内核移植266.2.1 Linux内核源代码的安装266.2.2 Linux交叉编译环境的建立和使用276.2.3 Linux内核的配置和编译276.3 加载Linux内核映像306.4 Boa Web服务器的移植316.4.1 Boa Web服务器的建立316.5 Linux下动态Web页面的实现326.5.1 CGI程序分析326.5.2 Form输入的分析和解码34第七章 系统功能的测试367.1 测试Web服务器367.2 动态Web页面测试37结束语40致谢41参考文献42附录43第一章 引言随着计算机技术的发展,嵌入式系统已成为计算机领域的一格重要组成部分。以ARM体系结构设计的微处理器具有高性能、低功耗和低成本的特点,它广泛应用于嵌入式系统设计领域,是目前最广泛的32位微处理器。以前设备控制系统一般是通过通信线路进行的,其通信介质、通信协议、相关软件和硬件都是专用的,而Internet 技术的发展使嵌入式设备的远程控制和管理方式有了改变。不需要专用的通信线路,并且传输的信息不局限于数据信号,还有声音和图像。最终要的是其通信协议是标准且公开的。随着Web技术的发展,几乎改变了现在的信息表达形式,很多应用都是基于Web技术的。由于HTML语言的标准统一性,只要在嵌入式设备中有一个微型服务器,就可以使用任意一种Web浏览器接收和发送信息。所以如何设计这种特别的Web服务器,如何在嵌入式设备中安装Web服务器,就成了嵌入式Web服务器的发展和研究方向。对于嵌入式Web服务器的研究和应用,其意义是重大的,它为我们管理、控制和监测各种各样的设备提供了一个很好的途径。这种设备可以是具有有限内存资源的8位或16位系统,已足够提供一个用户界面,而且这种方式是基于Internet的。这种设备可以在世界任何一个地方,只要它连入Internet就能够控制它。如今国内外有大量嵌入式应用软件已广泛用于各类嵌入式系统中。但是国内现状对于嵌入式Web服务器方面的研究不容乐观,而国外的相关研究则相对较多。如Pharlap公司的MicroWeb,AgranatSystem公司的EmWeb、emWare公司的emMicro,Allegro公司的RomPager,WindRiver公司的Wind等等,国内的有Webit。面对国内外嵌入式Web服务器技术发展的差距,考虑到其广泛的应用前景,这一技术的研究和开发具有一定的迫切性和必要性2。第二章 课题背景这章对嵌入式系统作了定义,详细介绍了嵌入式Linux以及嵌入式Linux在现代嵌入式系统中的地位,最后介绍了本次课题的硬件平台。2.1 嵌入式系统简介嵌入式系统被定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。在制造工业、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域。嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。2.2 嵌入式系统和Linux随着微处理器的产生,价格低廉、结构小巧的CPU和外设连接提供了稳定可靠的硬件架构,那么限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末开始,陆续出现了一些嵌入式操作系统,比较著名的有Vxwork、pSOS、Nucleus和Windows CE。但这些专用操作系统都是商业化产品,其高昂的价格使许多生产低端产品的小公司望而却步;而且源代码封闭性也大大限制了开发者的积极性。另外结合国内实情,当前国家对自主操作系统的大力支持,也为源码开放的Linux的推广提供的广阔的发展前景。还有,对上层应用开发者而言,嵌入式系统需要的是一套高度简练、界面友善、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统。在不久的将来,从冰箱到收音机都会内置处理器。因为Linux的开放性,许多人认为Linux非常适合多数Internet设备。他们认为Linux可以支持不同的设备,支持不同的配置。Linux对厂商不偏不倚而且成本极低,能够很快成为用于各种设备的操作系统。如今,业界已经达成共识:即嵌入式Linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix相似、以核心为基础的、完全内存保护、多任务多进程的操作系统。支持广泛的计算机硬件,包括X86,Alpha,Sparc,MIPS,PPC,ARM,NEC,MOTOROLA等现有的大部分芯片。程式源码全部公开,任何人可以修改并在GNU通用公共许可证(GNU General Public License)下发行,这样,开发人员可以对操作系统进行定制,再也不必担心像MS windows操作系统中"后门"的威胁。同时由于有GPL的控制,大家开发的东西大都相互兼容,不会走向分裂之路。Linux用户遇到问题时可以通过Internet向网上成千上万的Linux开发者请教,这使最困难的问题也有办法解决。Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。Linux还提供了强大的网络功能,有多种可选择窗口管理器(X windows)。其强大的语言编译器gcc、g+等也可以很容易得到。不但成熟完善、而且使用方便7。选择Linux的原因:1.可应用于多种硬件平台。Linux已经被移植到多种硬件平台,这对受开销、时间限制的研究与开发项目是很有吸引力的。原型可以在标准平台上开发然后移植到具体的硬件上,加快了软件与硬件的开发过程。2.Linux可以随意地配置不需要任何的许可证或商家的合作关系。3.它是免费的,源代码可以得到。这是最吸引人的。毫无疑问,这会节省大量的开发费用。4.它本身内置网络支持。5.Linux的高度模块化使添加部件非常容易。6.Linux在台式机上的成功,使大家看到了Linux在嵌入式系统中的辉煌前景。2.3 ARM9硬件平台2.3.1 ARM简介广义地讲,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。它是嵌入到对象体系中的专用计算机系统,以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。ARM作为嵌入式系统得核心,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字,目前非常流行的ARM内核有ARM7TDM1、StrongARM、ARM720T、ARM9TDM1、ARM920T、ARM940T、ARM946T、ARM966T、ARM10TDM1等。本文所讨论的目标板的CPU为ARM920T内核的三星S3C2410芯片。下面介绍该微处理器的特点及其应用领域。ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。它具有以下特点:l 提供1.1MIPS/MHz的5级流水线结构;l 支持32位ARM指令集和16位Thumb指令集;l 支持32位高速AMBA总线接口;l 全性能MMU,支持Windows CE、Linux、Palm OS等主流嵌入式操作系统;l MPU支持实时操作系统;l 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。它包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。S3C2410X是一款由Samsung公司设计的低功耗、高集成度的基于ARM920T核的微处理器。这款芯片集成了以下部件:16KB指令Cache、16KB数据Cache、MMU、外部存储控制器、LCD控制器(STN和TFT)、NAND Flash控制器、4个DMA通道、3个URT通道、一个I2C总线控制器、一个I2S总线控制器,以及4个PWN和1个内部定时器、通用I/O口、实时时钟、8通道10位ADC和触摸屏接口、USB主、USB从、SD/MMC卡接口等。现在它广泛应用于PDA、移动通信、路由器、工业控制等领域3 。2.3.2 JXARM9-2410 ARM嵌入式教学实验系统JXARM9-2410教学实验系统是一套硬软件集成的、基于ARM的完整教学实验系统,该系统包含丰富的硬件资源、完善而优越的调试手段和详尽的教学实验教程9。JXARM9-2410目标处理器采用Samsung公司的S3C2410X微处理器,开发平台采用武汉创维特信息技术有限公司的ADT集成开发环境,嵌入式开发的所有过程都可在该环境下完成。系统有以下组成部分:u ADT IDE集成开发环境;u ADT Emulator for ARM JTAG仿真器;u JXARM9-2410系列教学实验箱;u 各种连接线、电源适配器以及实验指导书等;u 教学实验系统配套光盘。JXARM9-2410 ARM教学实验系统基本实验模型如图1所示:图1.实验模型示意图第三章 嵌入式Web服务器3.1 概述随着计算机技术的发展,嵌入式系统已成为计算机领域的一格重要组成部分。随着网络技术的发展,使得B/S(客户端/服务器)应用方式已成为一种潮流。它的基础是客户端要有一个浏览器程序,服务器端要有一个对应的Web服务器。一般网站都采用大型的通用Web服务器,但对于一般的管理信息系统或中小型应用系统,所需的功能比较简单,如仍采用通用Web服务器,无疑是资源的浪费。解决方法是使用功能相对简单,体积更小、消耗资源更少的简单Web服务器,于是嵌入式Web服务器就应运而生了。3.2 Web服务器原理从功能上来讲,Web服务器监听用户机的服务请求,根据用户请求的类型提供相应得服务。用户端使用Web浏览器和Web服务器进行通信。Web服务器在接受到用户端的请求后,处理用户请求并返回需要的数据。这些数据通常以格式固定、含有文本和图片的页面出现在用户端浏览器。3.3 嵌入式Web服务器实现原理嵌入式Web服务器是指将Web服务器引入到现场嵌入式设备中,并驻留其中有限的代码空间内。与传统的Web应用相比,简化了系统结构,并将信息采集和信息发布都集成到现场的嵌入式设备中。在相应得软硬件平台支持下,利用标准的接口形式和通信协议,内嵌于嵌入式设备的Web服务器可以向任何接入到它所在网络的合法用户提供统一的基于浏览器方式的操作和控制界面,此时浏览器成了设备的前端控制板。当前在嵌入式应用领域,嵌入式系统转变为嵌入式WebServer,大体可分为2种实现方案1:(1)基于网关服务器的嵌入式设备Internet接入;(2)直接实现TCP/IP的嵌入式设备Internet接入。本课题中采用第二种实现方案。3.3.1 TCP/IP协议TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是Internet的基础协议,也是一种电脑数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在Internet中几乎可以无差错地传送数据。在TCP/IP协议基础上建立的HTTP超文本传输协议、FTP文件传输协议、Telnet远程登录协议以及SMTP邮件协议等协议簇构成了Web技术的核心。同时,Web服务器同Web浏览器之间的通信是通过HTTP协议进行的,这一通用的、无状态的、面向对象的协议HTTP协议是Web浏览器和Web服务器之间的应用层协议,也是基于TCP/IP协议的。为了勾勒TCP/IP在现实网络世界中所扮演的角色,请考虑当使用HTTP的Web浏览器从连接在Internet上的Web服务器上获取一页HTML数据时所发生的情况。为形成同Web服务器的虚链路,浏览器使用一种被抽象地称为称为套接口(socket)的高层软件。为了获取Web页,它通过向套接口写入HTTPGET命令来向Web服务器发出该指令。接下来套接口软件使用TCP协议向Web服务器发出包含GET命令的字节流和位流,TCP将数据分段并将各独立段传到IP模块,该模块将数据段转换成数据报并发送给Web服务器。嵌入式系统TCP/IP协议选择时遵循的原则是:首先,嵌入式系统中实现的协议要根据系统自身的特点以及功能来设计自己的协议簇,实现与需要有关的部分,不使用的协议一概不考虑;其次,对于要使用的协议也根据实际应用情况做取舍。考虑到嵌入式Web服务器的硬件处理速度慢并且存储容量相对较小的条件限制,在TCP/IP协议栈中主要能够实现ARP,IP,ICMP,TCP,HTTP协议即可6。3.4 嵌入式Web服务器Boa3.4.1 Boa概述目前有很多功能强大的Web服务器,主要包括Apache, httpd, thttpd和Boa5等几种。其中httpd最小,只需几千字节的空间,功能简单,但不支持CGI;Apache,thttpd和Boa支持CGI。其中Boa是一个单任务的小型HTTP服务器,源代码开放、性能优秀,运行所需空间仅为140 KB 左右,特别适合应用在嵌入式系统中。虽然本文中所用到的嵌入式Linux的Web服务器也可以通过自行裁剪Apache服务器得到,但是Apache服务器是采用传统的生成子进程的方式来提供服务的形式,这种形式比较适合服务比较复杂的情况,性能上并没有但进程的服务器高,尤其在高负载的情况下更是如此。Boa与Apache等高性能的Web服务器主要的区别在于它们是单进程服务器,只有在完成一个用户请求后才能响应另一个用户的请求,而无法并发响应,但这在嵌入式设备的应用场合里已经足够了。而且从对CGI支持的性能指标15可知,Boa对CGI的支持效果最佳。除此之外,Boa与其他Web服务器相比主要有以下几个优点: 对CGI程序无需设置REMOTE- HOST环境变量,在REMOTE-ADDR变量中已经提供了IP 地址,可以直接使用gethostbyaddr函数或变量,从而使Boa较其他Web服务器更易于使用; 在Boa中对Server2side模块可以剪裁,以提高系统运行速度,其内部的“字节流执行引擎”采用了非完全的图灵机方式实现; 不存在访问控制特征,采用符号连接方式进行控制,可以对任何可以读取的文件提供服务,因此速度更快。所以,本课题中选择Boa作为嵌入式Linux系统的Web服务器.3.4.2 Boa的功能实现嵌入式Web服务器Boa和普通Web服务器一样, 能够完成接收客户端请求、分析请求、响应请求、向客端返回请求结果等任务。它的工作过程主要包括:(a) 完成Web服务器的初始化工作, 如创建环境变量、创建TCP套接字、绑定端口、开始侦听、进入循环结构,以及等待接收客户浏览器的连接请求;(b)当有客户端连接请求时,Web服务器负责接收客户端请求,并保存相关请求信息;(c)在接收到客户端的连接请求之后,分析客户端请求,解析出请求的方法、URL目标、可选的查询信息及表单信息,同时根据请求做出相应的处理;(d)Web服务器完成相应处理后,向客户端浏览器发送响应信息,关闭与客户机的TCP连接5。嵌入式Web服务器Boa根据请求方法的不同,做出不同的响应。如果请求方法为HEAD, 则直接向浏览器返回响应首部;如果请求方法为GET,则在返回响应首部的同时, 将客户端请求的URL目标文件从服务器上读出,并且发送给客户端浏览器;如果请求方法为POST,则将客户发送过来的表单信息传送给相应的CGI程序,作为CGI的参数来执行CGI程序,并将执行结果发送给客户端浏览器。Boa的功能实现也是通过建立连接、绑定端口、进行侦听、请求处理等来实现的。本课题中BOA整体工作流程如图2所示:NYYN有Request请求否接收Request请求根据执行结果,发送数据到Web浏览器返回侦听端口请求CGI否?创建套接字设置CGI环境变量初始化设置信号量绑定端口分析Request请求执行CGI程序读取指定数据到Web浏览器图2.Web服务器Boa的执行流程第四章 CGI技术4.1 CGI概述CGI(通用网关接口)是用于Web服务器和外部应用程序之间信息交互的标准接口。Web服务器原本是为静态HTML文档以及其他相关静态文件而设计的。如果一个Web服务器的功能只限于提供静态页面的花,那么与之通信的Web浏览器就只能显示在页面请求和显示过程之间文档内容不变化的页面。CGI规范在Web服务器和浏览器(又称客户机)之间建立了标准的信息交换方式。使用它使得信息在浏览器或服务器与外部程序之间流动,外部程序在处理之后将处理结果送回用户端浏览器。外部程序通常称为CGI程序、CGI脚本、CGI应用程序或简称网关,因为它运用了CGI规范并为实现Web平台的功能而专门设计。在HTML中,当客户填写了表单,并按下了发送(submit)按钮后,表单的内容被发送到了服务器端,一般的,这时就需要有一个服务器端脚本来对表单的内容进行一些处理。没有了CGI,Web的世界就完全失去了它的交互性,所有的信息都变成单向的了,而不能够有任何的反馈。4.2 CGI工作原理系统嵌入式Web服务器通过CGI程序来获取用户的请求、查询条件,使用HTML方式描述结果并直接回送到客户端的浏览器上,此过程中浏览器将用户输入的数据送到Web服务器,Web服务器将数据使用STDIN(标准输入)送到CGI程序。在执行CGI程序后,会访问数据库的记录,最后使用STDOUT输出HTML形式的结果文件,经Web服务器送回浏览器显示给用户。使用CGI实现客户与服务器的交互分以下几个标准步骤:(1) Web客户(浏览器)通过URL与Web服务器相连;(2) 服务发送HTML(和别的组成请求页面的文件)给客户,一旦页面内容传完,这个连接自动断开;(3) 在客户方,HTML脚本提示用户做动作或输入,当用户响应后客户请求Web服务器建立一个新的连接;(4) 一旦连接建立,客户把用户输入的数据传给Web服务器;(5) Web服务器把这些信息和别的进程变量传给由HTML以URL形式提交的CGI程序;(6)CGI程序根据输入作出相应的操作,产生对客户的响应(一般以一个HTML文档的形式),并将其传给Web服务器;(7) Web服务器把应答数据传给客户,并关闭连接;在客户方,用HTML标记的方式来触发处理过程,该标记和其它标记的解释方式一样。在服务器下,Linux环境变量、命令执行参数和标准输入输出文件都可用于Web服务器与CGI程序之间的通讯。CGI工作过程图3所示:运行结果POST用STDIN输入数据GET用QUERY-STRING输入数据用STDOUT输出数据Web浏览器Web服务器CGI脚本启动CGI图3. CGI工作原理其中CGI与表单之间的信息交互方法有两种模式:“GET”和“POST”。选择哪一种模式取决于表单( FORM)的“METHOD”字段的设置,如果METHOD设定为GET,CGI程序从环境变量QUER_STRING中获取数据.为了解释数据和执行需要的动作,CGI程序必须要分析(处理)此字符串;如果METHOD设定为POST,数据会以STDIN方式送入CGI接口。服务器在数据的最后没有使用EOF字符标记,因此程序为了正确地读取STDIN,必须使用CONTENT_LENGTH值。在本课题中CGI程序采用的是POST方法。如果想从服务器获得数据并且不改变服务器上的数据时,应该选用GET方法;也有例外,当传输的数据很长时,选用POST方法较好;使用GET方式编写CGI程序会更加简单,但是POST方式则更先进;当发送的数据将改变Web服务器端的数据时,或者想给CGI程序传输大量数据(一般地,超过1024字节,这是URL的极限长度)时,应该选用POST方法14。第五章 建立嵌入式系统开发环境本章详细介绍了嵌入式系统开发环境的建立,Linux的安装配置,目标板中U-boot的烧写等。 5.1 在Vmware下安装Redhat 9.01) 安装Vmware,版本为VMware-workstation-5.5.3-34685。2) 在Vmware下创建虚拟主机。a) 运行Vmware,点击“新建虚拟机”,进入新建虚拟机的向导,如图4所示。图4.新建虚拟机界面b) 选择“自定义”,点击下一步。c) 操作系统类型。选择“Linux”,版本选择“Red Hat Linux”,如图5所示,点击下一步。d) 虚拟机命名。虚拟机名字下面是存放虚拟机配置文件的位置信息,选择程序默认的即可,点击下一步。图5.操作系统选择界面e) 选择虚拟机所用的硬盘。选择“使用物理硬盘”。点击下一步继续时程序会给出了一个警告,表示使用物理硬盘创建虚拟机会有风险,如图6,点下OK继续。图6.选择硬盘界面f) 选择硬盘。选择一个并点击使用整个硬盘(entire disk),点击下一步。g) 指定存储虚拟机配置信息的文件名,选择默认。点击“完成”,界面如图7。图7.虚拟机界面3) 修改虚拟机的设置。Redhat9.0的安装包是从网上下载的三个镜像文件。在虚拟主机管理界面上双击CDROM,在CDROM配置窗口上修改,使用ISO镜像文件(Use ISO image)作为CDROM,如图8所示。图8.修改CD-ROM界面4) 启动虚拟机安装Linux。点击窗口中的绿色箭头“启动该虚拟机”。在虚拟机启动的时候,根据提示,按下F2 键进入setup,再BOOT里修改启动顺序,将 CD-ROM(光盘)的位置放到第一个,保存退出。Vmware自动重新启动虚拟机,这时就会从虚拟机的光盘引导了,即从Linux 操作系统的ISO安装文件引导。此时可以看到相应Linux操作系统安装的启动画面。5) 安装Linux。如果要以文本界面方式安装,在boot:后输入linuxtext,再键入回车。在选择语言鼠标等后,安装程序询问是否要自动分区(Aotumatic Partitioning),直接点击"Next"。下一个界面中有关于Aotumatic Partitioning的3种选择,本课题中选择的是第3个“保持所有分区并使用已有的未使用空间”(keep all partitions and use existing free space)。在安装过程中将显示安装进度界面。安装过程中,不再需要人工干预。当安装完成后,将出现提示界面。安装完成会设定显示卡之类,最后Vmware内系统重新启动。重启后,系统提示你可以设定一个个人帐号(personal account)和密码。注意,虽然这里不开帐号也能通过,但实际上是不行的,必须在这里设定一个用户名和密码。因为再启动时必须提供用户名和密码,否则开机失败。启动后,系统询问用户名和密码,输入用户名和密码即可。最后出现Redhat9的界面,如图9所示。图9.Redhat9界面6) 安装Vmware Tools。a) Vmware Tools可以使得主机与虚拟机通信,并且能自动识别鼠标光标的位置,不用再使用CTRL+ALT切换鼠标。点击“设置”“安装Vmware工具”,点击“设备”菜单,光驱的菜单项由IDE:0变成IDE:0>C:program FilesVMwareVmware WorkstationProgramsLinux.ISO,表示Vmware将Linux的ISO映像文件作为了虚拟机的光盘。b) 进入文本登录界面中,输入管理员用户名(ROOT)和密码进入ROOTLOCALHOST ROOT 。在命令行后面输入如下命令:#mount /dev/cdrom /mnt/cdrom (将虚拟光盘挂上)#cd /mnt/cdrom#ls(显示虚拟光盘的内容)此时将vmware-linux-tools.tar.gz拷贝到/tmp目录下。#cp /mnt/vmware-linux-tools.tar.gz/tmp#tar zxf vmware-linux-tools.tar.gz (解压该软件包) #cd vmware-linux-tools (进入解压后的目录)#./install.pl (运行安装命令,系统开始安装vmware tools) 5.2 编译配置主机开发环境5.2.1 配置以太网此项的前提必须是以太网卡已经配置正确,对于一般常见的RTL8139网卡,REDHAT 7.2及更高版本可以自动识别并自动装好,不要用户参与,因此建议使用该网卡。 1. 配置宿主机IP,本课题中宿主机的IP地址为192.168.1.180,如图10。图10.配置宿主机IP2. 验证网络是否配置成功。按照如下步骤进行: a) 首先连接网络,将宿主机使用普通网线接入局域网或者使用直连网线与另外一台计算机进行连接。 b) 在局域网内另外一台计算机上,将其IP地址设为192.168.1.xxx,其中xxx不能为180。如果该计算机为Windows操作系统,在该计算机上输入如下命令,如图11所示。如果为Linux操作系统,在终端中输入: #ping 192.168.1.180 ,如果ping通,表示网络连接已经建立。图11.Windows下命令键入5.2.2 安装配置tftp服务器Tftp是用来下载远程文件的最简单网络协议,它基于UDP协议而实现。它可以看作是一个FTP协议的简化版本,与FTP协议相比,它的最大区别在于没有用户管理功能。它的传输速度快,可以通过防火墙,使用方便快捷,因此在嵌入式的文件传输中广泛使用。同FTP一样, tftp分为客户端和服务器端两种。通常,在宿主机上开启tftp服务器端服务,设置好tftp的根目录内容;在目标板上开启tftp的客户端程序;把目标板和宿主机相连,此时就可以通过 tftp协议传输可执行文件了。嵌入式linux的tftp开发环境包括两个方面:一是嵌入式linux宿主机的 tftp-server支持;二是嵌入式linux目标机的tftp-client支持。因为u-boot本身内置支持tftp-client,所以嵌入式目标机就不用配置了。下面将详细介绍linux宿主机tftp-server的安装配置。在Redhat9.0的ISO镜像CD3中,有tftp-server的rpm安装包。(1)安装 #mount -o loop < Red.Hat.Linux.9.0.Install.CD3> /mnt/cdrom (挂载光盘)#rpm -ivh tftp-0.32-4.i386.rpm (安装tftp-client)编译安装tftp-hpa-0.48.tar.gaz#tar vxfz tftp-hpa-0.48.tar.gz()#cd tftp-hpa-0.48#make#make install这样tftp客户端命令就可以使用了。#rpm -ivh tftp-server-0.32-4.i386.rpm (安装tftp-server)#umount /mnt/cdrom (卸载光盘) (2)修改文件在linux 下,无论使用的是哪一种super-server、inetd或者xinetd,默认情况下tftp服务是禁用的,所以要修改文件来开启服务。根据(1)的安装方法,可以修改文件/etc/xinetd.d/tftp:设置tftp服务器的根目录,开启服务。修改后的文件如下:service tftp socket_type = dgram protocol = udp wait = yes user = rootserver = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps = 100 2flags = IPv4 说明:修改项server_args= -s <path> -c,其中<path>处可以改为用户的tftp-server的根目录,参数-s指定chroot。 (3)创建tftp根目录,启动tftp-server。 #mkdir /tftpboot #chmod o+w /tftpboot #service xinetd restart配置完成后,简单测试一下tftp服务器是否可用,即自己tftp自己,例如在宿主机上执行:#cp /home/cvtech/jx2410/images/zImage /tftpboot/ #tftp 192.168.1.188 tftp>get zImage 正确的结果如图12所示: 图12.测试tftp服务器此时表示tftp服务器配置成功了。若弹出信息:Timed out,则表明未成功,或者用如下命令查看tftp服务是否开通:#netstat -a|grep tftp 若tftp服务器没有配置成功,需要按照上述步骤重新检查一遍。 5.2.3 配置防火墙 Tftp (Trivial File Transfer Protocol),中译简单文件传输协议或小型文件传输协议.在2003年8月12日全球爆发冲击波(Worm.Blaster)病毒,这种病毒会监听端口69,模拟出一个tftp服务器,并启动一个攻击传播线程,不断地随机生成攻击地址,进行入侵。另外tftp被认为是一种不安全的协议而将