摘要:介绍uClinux操作系统的御,实现uClinux下的Boa Web Server;讨论如何通过编写CGI程序来最终实现uClinux下的动态Web页面技术。
关键词:uClinux 动态Web技术 CGI(通用网关接口) Web Server
随着 计算 机技术 发展 ,嵌入式系统已成为计算机领域的一个重要组成部分。所谓嵌入式系统,是以 应用 中为心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它具有计算机的功能,但又不称为计算机,包括机顶盒、微波炉、电梯、数控系统、医疗仪器等。
当今的信息 时代 ,是一个构筑在 网络 基础之睥时代,互联网已经渗透到了人们工作和生活的各个角落。嵌入式Internet是近几年发展起来一项新兴概念和技术,不仅通过PC机能上网,通过各种各样的嵌入式设备也能上网,使用浏览Web已经成为 现代 人的习惯。21世纪的 电子 信息产品,如果不能适应这个发展的方向和要求,将很难有强劲的竞争力。而 目前 正在开发的嵌入式系统中,49%的项目选择Linux作为嵌入式操作系统,因此对uClinux操作系统下嵌入式Web技术的 研究 具有较高的现实意义,本文就此作些讨论。
1 uClinux嵌入式操作系统
Linux是一种优秀的自由软件。由于源代码公开,功能强大,具有良好的网络支持,又易于睛,近几年成为了最有潜力的嵌入式操作系统。UClinux是一个完全符合GNU/GPL(通用公共许可证)公约的项目和完全开发代码。它是标准Linux的一个分支,现在由Lineo公司支持维护。它专门针对没有MMU的CPU,并且为嵌放式系统做了许多小型化的工作。现在已经成为使用uClinux的安例包括:基于ColdFire的CISCO 2500/3000/4000路由器;基于ARM7TDMI的Aplio公司的voice-over-IP电话;Axis公司的AXIS2001网络数码相机;Adomo公司的机顶盒以及各种开发板。
UClinux经过对标准Linux内核的改动,形成了一个高度优化的、代码紧凑的嵌入式Linux,虽然它的体积很小,但uClinux仍然保留了Linux的大多数的优点:稳定、良好的移植性、优秀的网络功能、对各种文件系统完备的支持,以及标准丰富的API。它的主要特征如下:①通用Linux API;②内核体积小于512KB,内核加上文件系统小于900KB;③完整体积小于512KB,内核加上文件系统小于900KB;④支持其它大量网络协议;⑤支持各种文件系统,包括NFS、ext2、romfs and JFFS、MS-DOS和FAT16;⑥支持各种典型的处理器构架,包括ARM、PowerPC、X86等。
2 基于uClinux的动态Web实现技术
2.1 uClinux下Web Server的实现
uClinux下,主要有三个Web Server:httpd、thttpd和Boa。Httpd是最简单的一个Web Server,它的功能最弱,不支持认证,不支持CGI。Thttpd和Boa都支持认证、CGI等,功能都比较全。为了实现动态Web技术,这里我们选择实现一个支持CGI的、非常适合于嵌入式系统的Boa Web Server。
Boa是一个单任务的http服务器,源代码开放、性能高。目前,uClinux的代码中已经包含boa的源代码,在uClinux下实现Boa,需要对Boa做一些配置和修改。这主要通过对boa.conf和mime.types文件进行修改来实现,需要改动的配置有以下几项。
(1)建目录
由于uClinux默认的根文件系统romfs是只读的,不能用mkdir等命令来新建目录,故应在编译内核前先建好要用到的目录,这通过修改/uclinux-samsung/vendors/Samsung/4510b/makefile文件来实现。在ROMFS_DIRS=bin dev etc home lib mnt proc usr var的后边增加home/web home/web/cgi-bin,这样修改后编译内核,编译好的根文件系统romfs中就包含这些目录了。
(2)指定Web服务器的根目录路径(SERVER_ROOT)
进入/uclinux-samsung/user/boa/src/目录,通过修改define.h文件中#define ERVER_ROOT“/home”语句 来指定SERVER_ROOT。另外,还可以通过命令行来指定,例如:boa-c/home/&。而且命令行 指定的SERVER_ROOT可以覆盖define.h文件所指定的。




