Boa的下载、编译、配置
ARM嵌入式Web服务器Boa的软、硬件设计 毕业设计
摘要论文主要介绍了基于ARM9的嵌入式Web服务器Boa的软、硬件设计及其实现,其中硬件部分的核心是三星的S3C2410X为处理器。
最后成果形式为可以远程访问的WebServer嵌入式服务器。
Boa是一款单任务的HTTP服务器。
与其他传统的Web服务器不同的是当有连接请求到来时,它并不为每个连接单独创建进程, 也不通过复制自身进程来处理多链接。
而是通过建立HTTP请求列表来处理多路HTTP连接请求。
同时它只为CGI程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要。
同时它还具有自动生成目录、自动解压文件等功能。
因此, Boa在嵌入式系统中具有很高的应用价值。
关键词:ARM;Linux;嵌入式Web服务器;CGIThis 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摘要 (1)Abstract (2)目录 (3)第一章引言 (5)第二章课题背景 (6)2.1 嵌入式系统简介 (6)2.2 嵌入式系统和Linux (6)2.3 ARM9硬件平台 (7)2.3.1 ARM简介 (7)2.3.2 JXARM9-2410 ARM嵌入式教学实验系统 (8)第三章嵌入式Web服务器 (9)3.1 概述 (9)3.2 Web服务器原理 (9)3.3 嵌入式Web服务器实现原理 (9)3.3.1 TCP/IP协议 (9)3.4 嵌入式Web服务器Boa (10)3.4.1 Boa概述 (10)3.4.2 Boa的功能实现 (11)第四章CGI技术 (12)4.1 CGI概述 (12)4.2 CGI工作原理 (12)第五章建立嵌入式系统开发环境 (14)5.1 在Vmware下安装Redhat 9.0 (14)5.2 编译配置主机开发环境 (18)5.2.1 配置以太网 (18)5.2.2 安装配置tftp服务器 (19)5.2.3 配置防火墙 (21)5.2.4 配置NFS服务器 (22)5.3 JXARM9-2410中U-boot烧写 (22)5.3.1 u-boot的功能 (22)5.3.2 使用ADT IDE烧写u-boot (23)第六章系统功能的实现 (25)6.1 GCC简介 (25)6.1.1 GCC概述 (25)6.1.2 GCC基本用法 (25)6.2 Linux内核移植 (26)6.2.1 Linux内核源代码的安装 (26)6.2.2 Linux交叉编译环境的建立和使用 (27)6.2.3 Linux内核的配置和编译 (27)6.3 加载Linux内核映像 (30)6.4 Boa Web服务器的移植 (31)6.4.1 Boa Web服务器的建立 (31)6.5 Linux下动态Web页面的实现 (32)6.5.1 CGI程序分析 (32)6.5.2 Form输入的分析和解码 (34)第七章系统功能的测试 (36)7.1 测试Web服务器 (36)7.2 动态Web页面测试 (37)结束语 (40)致谢 (41)参考文献 (42)附录 (43)第一章引言随着计算机技术的发展,嵌入式系统已成为计算机领域的一格重要组成部分。
BOA架构资料
针对当前MTK WEB机制进行代码分析总结,总体来说当前机制的重点及难点涉及两个部分,一个是请求处理的核心状态机变迁过程,另一个就是ASP动态解析器的实现,这里分为三部分进行描述,分别对核心状态机变迁、ASP词法解析、语法解析、语法树动作的总结,以及当前服务器的源码分析笔记。
一、核心状态机变迁二、词法解析、语法解析、语法树动作。
这部分算是当前WEB服务器比较难的一块,如果理解了这部分的实现机制,基本上理解当前WEB 服务器的代码也就没有什么障碍了,鉴于个人对编译原理也并不了解,这部分也不太容易详细的解释,这里会涉及很大一部分lex、yacc(或GNU flex、GNU bison)工具的使用以及它们的语法编写,所以偷懒一下,仅仅分析针对我们当前项目,利用这些工具及语法文件为我们生成了什么东西,如果对这些机制感兴趣,可以自学这块的技术,再结合当前分析结果,会对WEB服务器整套机制有更清晰的认识。
1、基本原理a、当用户通过浏览器访问WEB服务器,此时WEB服务器通过请求URL了解到用户希望浏览的页面文件名(假设是test.asp),WEB服务器通过文件扩展名知道了用户在请求一个ASP类型的文件,WEB服务器在本地找到该文件并打开,调用语法解析器。
b、语法解析器的实现代码在我们当前项目中是使用yacc(或GNU bison)工具生成,当然前提是需要一个根据当前语法需求编写的一个特定yacc语法文件(比如当前项目为grammar.y),语法解析器的输入对象除了需要yacc语法文件外,还需要调用词法解析器,通常词法解析器可以使用lex (或GNU flex)生成,但当前项目并没有使用lex,而是自己用C代码写了一个词法解析器(gb-lex.c)供语法解析器使用。
c、WEB服务器调用语法解析器时,语法解析器不断调用词法解析器获取标记及标记值,词法解析器通过读取请求URL指定的ASP文件进行分析,找出符合条件的标记及标记值,并提供给语法解析器使用,语法解析器在根据之前用户提供的语法描述进行语法归约,同时对每一个匹配的语法项执行对应的语法动作,这些语法动作创建了一棵关联的语法树。
嵌入式Web服务器的实现
嵌入式Web服务器的实现1Boa程序1.1Boa简介boa是最受人喜爱的嵌入式web服务器,功能较为强大,支持认证,cgi等。
Boa 是一个单任务的HTTP SERVER,它不像传统的web服务器那样为每个访问连接开启一个进程,也不会为多个连接开启多个自身的拷贝。
Boa对所有的活动的http连接在内部进行处理,而且只为每个CGI连接(独立的进程)开启新的进程。
因此,boa在同等硬件条件下显示出更快的速度。
测试表明boa在Pentium 300MHZ下能够每秒钟处理几千次点击,在20 MHz 386/SX 下能够每秒钟处理几十次点击访问。
Boa和thttpd等,与apache等高性能的web服务器主要区别是,它们一般是单进程的服务器,只有在完成一个用户请求后才能响应另一个用户的请求,无法并发响应,但这在嵌入式设备的应用场合里已经足够了。
Boa设计主要出于速度和安全,是指不被恶意用户暗中破坏,而不是指它有很好的访问控制和通信加密。
可以添加SSL来保证数据传输中的保密和安全。
1.2Boa的功能、特点1)支持HTTP/1.0(实验性的、有条件的支持HTTP/1.1)1.12)支持CGI/1.1,编程语言除了C语言外,还支持Python, Perl, PHP,但对PHP没有直接支持,没有mod_perl, mod_snake/mod_python等。
3)Boa支持HTTP认证,但不支持多用户认证。
4)它可以配置成SSL/HTTPS和IPv6。
5)支持虚拟主机功能。
Boa服务器与其它服务器的不同:为了追求速度和简单性,boa服务器在一些方面不同于一些流行的web服务器。
1)CGI程序的REMOTE_HOST环境变量没有设置2)Boa不具有ssi(server side includes)3)Boa不具有访问控制4)没有chroot选项1.3Boa的工作原理BOA是一款非常小巧的Web服务器,源代码开放、性能优秀、支持CGI通用网关接口技术,特别适合应用在嵌入式系统中。
boa搭建Web服务器详细教程
摘要:在详细介绍一种嵌入式Web服务器BOA的实现与配置方法的基础上,以一个Web 在线远程监控GPIO(通用输入/输出)的程序为实例,介绍嵌入式Linux系统下CPU程序设计技术。
关键词:嵌入式系统Linux BOA CGI GPIO1 概述随着互联网应用的普及,越来越多的信息化产品需要接入互联网通过Web页面进行远程访问。
嵌入式Web系统提供了一种经济、实用的互联网嵌入式接入方案。
这里结合一种嵌入式Web Server BOA来介绍嵌入式Linux系统下的CGI程序设计技术。
2 Web Server BOA的实现与配置2.1 uClinux下,主要有三个Web Server:HTTPD、THTTPD和BOA。
HTTPD是最简单的一个Web Server,它的功能最弱,不支持认证,不支持CGI。
THTTPD和BOA都支持认证、CGI等,功能都比较全。
BOA是一个单任务的小型HTTP服务器,源代码开放、性能优秀,特别适合应用在嵌入式系统中。
目前的uClinux的代码中已经包含BOA的源代码。
在uClinux下实现BOA,只需要对BOA做一些配置和修改。
以下是配置的过程。
(1)编译BOA到内核首先,需要把BOA编译到内核,即执行make menuconfig,在应用程序选单中network application项下面选择boa。
该操作需要重新编译内核。
(2)编制配置文件boa.conf在Linux操作系统下,应用程序的配置都是以配置文件的形式提供的,一般都是放在目标板/etc/目录下或者/etc/config目录下。
但boa的配置文件boa.cont一般都旋转在目标板/home/httpd/目录下。
例如,一个典型的boa.conf文件格式如下:ServerName Samsung-ARMDocumentRoot/home/httpdScriptAlias/cgi-bin/home/httpd/cgi-bin/ScriptAlias/index.html/home/httpd/index.html它指定了HTML页面必须放到/home/httpd目录下,cgi外部扩展程序必须放到/home/httpd/cgi-bin目录下。
web服务器Boa移植手册
Boa服务器的移植可分成两部分,一个是在x86平台上移植,即在虚拟机的linux下,另一个是 在arm平台上移植,即在开发板上的linux下,本手册的前四步,都是在虚拟机上做移植,第五步 是移植到发开板上。
一、编译 boa 程序
1、下载boa-0.94.13.tar.gz。 2、解压 3、#./configure 4、#make 编译会出错: util.c: 100: 1: pasting “t” and “->” does not give a valid preprocessing token make: [util.o] Error1 解决方法,修改compat.h中的 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 为: #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
3
MimeTypes /etc/mime.types 将网页文件放在/var/www 目录下,cgi 脚本放在/var/www/cgi-bin 目录下。在开发板上运行 boa, 在主机 IE 上输入开发板 IP,可看到网页。
六、常见错误
这些错误内容可查看/var/log/boa/error_log 文件 1、gethostbyname:: No such file or directory 解决办法: 修改 boa.conf 去掉 ServerName .here 前的注释符号(#)。 2、util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] 解决办法: 修改 src/compat.h 找到 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 修改成 #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff 3、boa.c:211 - getpwuid: No such file or directory 解决办法: 修改 src/boa.c 注释掉下面这段程序: if (passwdbuf == NULL) { DIE(”getpwuid”); } if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”); } 即修改为: #if 0 if (passwdbuf == NULL) { DIE(”getpwuid”); } if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”); } #endif 4、boa.c:228 - icky Linux kernel bug!: No such file or directory 解决办法: 修改 src/boa.c 注释掉下面语句: if (setuid(0) != -1) { DIE(”icky Linux kernel bug!”);
Boa服务器的配置
mkdir /www/cgi-bin
以下步骤在ubuntu下进行:
将boa.conf拷贝到开发板根文件系统的/etc/boa下
#cp boa.conf /source/rootfs/etc/boa
将boa拷贝到开发板根文件系统的/etc/boa下
#cp src/boa /source/rootfs/etc/boa
修改CPP = gcc -E 为 CC = arm-softfloat-linux-gnu-gcc -E
6、编译
make
ls -l boa
-rwxr-xr-x 1 david david 189223 2009-05-31 13:44 boa
然后为生成的二进制文件boa瘦身
为DoucmentRoot /www
(6)ServerName的设置
修改#ServerName .here
为 ServerName .here
否则会出现错误“gethostbyname::No such file or directory”
下载地址:
最新发行版本: .13.tar.gz
解压:# tar xzf boa-0.94.13.tar.gz
2.安装需要工具bison,flex
sudo apt-get install bison flex
否则会出现如下错误
make: yacc:命令未找到
这一步的工作也在电脑主机上完成。
在boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。如下:
#vi boa.conf
(1)Group的修改
修改 Group nogroup
移植boa的问题
boa成功移植到S3C2410开发板上ARM-LINUX学习整理交流2009-06-06 16:14:27 阅读277 评论0字号:大中小2009 05 11一:下载源码:/[root@localhost ~]# cd /usr/src[root@localhost src]# tar zxvf boa-0.94.13.tar.tar[root@localhost src]# cd boa-0.94.13[root@localhost boa-0.94.13]# cd src[root@localhost src]# ./configure二:编译前修改的文件:1. 修改Makefile文件,找到CC=gcc和CPP=gcc -E,分别将其改为交叉编译器安装的路径:CC=/usr/local/arm/2.95.3/bin/arm-linux-gccCPP=/usr/local/arm/2.95.3/bin/arm-linux-gcc –E保存退出。
2. 修改编译方式:LDFLAGS = -g –static注: 使用静态编译可以让目标文件自动的包含所需要的库文件,而动态编译需要手工拷贝库文件。
3.修改/src/defines.h文件:#define SERVER_ROOT "/etc/boa"4 修改boa-0.94/src/ util.c文件修改char *get_commonlog_time(void)函数。
time_offset = 0;5. 修改src/config.c:加Current_uid=16. 修改compat.h:把第120 行的#defineTIMEZONE_OFFSET(foo)foo##->tm_gmtoff修改为:#defineTIMEZONE_OFFSET(foo)foo->tm_gmtoff7.修改/src/boa.c,注释掉下面两行:/* if (setuid(0) != -1) {DIE("icky Linux kernel bug!");} *//*if (passwdbuf == NULL) {DIE("getpwuid");}*/8 gethostbyname:: Resource temporarily unavailable这个问题我也遇到过,我只是把src文件夹下的config.c里的if(!server_name){..........}(大概在266行到286行之间)注释掉,就能运行在板子上运行boa,到现在为止没有遇到过是么问题。
HI3512开发板移植web server(boa 0.94.13)
6、将编译好的程序放入根文件系统的/bin 目录下。 #: cp boa /bin 7、修改配置文件 boa.conf(配置的时候,配置文件的目录可以根据 自己的情况设置路径,主要考虑到可写问题)。boa.conf 文件具体参 数的详细介绍看《嵌入式 WEB 服务器 BOA 和 CGI.pdf》中的相关 介绍。boa.conf 存放目录是在 boa 源代码的 define.h 中指定的,可以 在编译 boa 之前修改 define.h。其他配置相关目录由 boa.conf 配置指 定。 A、在/etc 目录下建立一个 boa 目录,cp boa.conf 到该文件夹。 etc#: mkdir boa etc#: chmod 777 boa/ etc#: cd boa boa#: cp boa.conf /etc/boa B、修改访问权限:修改 User nobody 为 User 0;修改 Group nogroup 为 Group 0 C、设定日志目录:boa 日志有两部分,Errorlog 和 Accesslog 一般情 况下为/var/log/boa/error_log 和/var/log/boa/access_log 两个文件。根据 自己的情况设置日志目录: ErrorLog /var/log/boa/error_log AccessLog /var/log/boa/access_log (注意:/var/log/boa 目录必须为可写,否则会出现错误:log.c:73 – Unable to dup2 the error log: Bad file r.)
boa配置和测试
主机:Redhat 9.0交叉编译工具:arm-linux-gcc 2.95.3一、Boa移植1、下载Boa源码下载地址: /目前最新发行版本:0.94.13 (几年没更新版本了)下载 boa-0.94.13.tar.gz(注意:若从boa上下载的是boa-0.94.13.tar.tar,解压方式一样)解压:tar xzvf boa-0.94.13.tar.gz2、生成Makefile文件进入boa-0.94.13,直接运行src/configure文件cd src./configure3、修改Makefile文件(注意:必须用cross-2.95.3)CC = /usr/local/arm/2.95.3/bin/arm-linux-gccCPP = /usr/local/arm/2.95.3/bin/arm-linux-gcc -E4、交叉编译make5、去除调试信息,减小体积。
(可选)/usr/local/arm/2.95.3/bin/arm-linux-strip boa6将编译好的程序放入根文件系统的/bin目录下cp boa /bin二、配置BoaBoa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。
在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改。
cd /etcmkdir boachmod 755 boa/cp /home/admina/boa-0.94.13/boa.conf /etc//boa/boa.confvi boa.conf1、Group的修改修改 Group nogroup 为 Group 0(开发板上有的组,或者为0)修改 User nobody (user组中有这个成员,不修改也可以)根据你的开发板的情况设定。
一定要存在的组和用户。
2、ScriptAlias的修改修改 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 为 ScriptAlias /cgi-bin/ /var/www/cgi-bin/这是在设置CGI的目录,你也可以设置成别的目录。
BOA服务器与CGI程序
新
创 3>.CGI程序
CGI(Common Gateway Interface) 通用网关接口的简称.
风 主要用来处理用户请求,实现用户与服务器之间的交互.
实际上就是一段程序,运行在Server上,提供同客户端 Html页面的接口.
可以用下图来说明:
飓
色
红
服务器提供了客户端(浏览器)和CGI扩展程式之问的信息交换的通道。客户通过浏览器 发出请求,经过服务器的解释发出标准输出传送给CGI,或是说调用CGI程序,CGI对信息 进行处理后,会将结果以标准输出的形式发回,服务器将处理结果以HTML的形式发送给 客户端。 CGI程序可以用多种语言去写,比如Shell Script, C ,VB ,Perl,Fortran等, 但在uClinux下只能用C语言完成. 通常在Web网页中调用CGI程序有三种方法,表单,超链接或是SSI调用. 我们这里主要采用表单的调用方法 .
台 平
3.3 CGI 程序
新
创 由于 CGI 程序是一个外部程序,所以系统要想运行它,
风 首先是 CGI 程序进行编译链接,生成一个可执行文件,存放于 ROMFS 文件夹中,最后与内
核一起生成镜像.
飓 修改位于 /uClinux-dist/user/cgi_generic 下的 CGI 相关程序,
主要修改 cgi.c 和 template.c 下面主要解释其中重要的 C 语句:
风
飓
色
红
Index.html 就是首面,当浏览器访问服务器时,首先显示的页面. 新建一个首页,主要加入可搜集信息的 FORM,则可以根据 FORM 所得到的数据,调用 CGI 程序,实现动态网页的功能. 参考 FORM 表单格式,这个是 Test2 的参考表单:
嵌入式平台下3G网络服务器(3G+PPP+BOA+ARM)
嵌入式linux平台下网络服务器(3G+PPP+BOA+ARM)you_set@一、华为3G模块EM770W在LINUX下的驱动1.EM770W为华为3G WCDMA模块,支持HSPA(HSPA data rate -7.2 Mbps DL / 2 Mbps UL),更适合于无线视频服务器和监控器。
EM770W接口为mini PCIE,52个引脚,引脚中对外数据接口包含一个全串口UART1,一个四线串口UART2,一个USB2.0。
EM770W与ARM芯片连接有两种方式:一种是通过UART1,速度只能达到115.200KBPS,这与HSPA速率明显跟不上,一般不用此方式进行连接,如果和MCU连接进行小量数据传输可以用此方式。
第二种方式是通过USB和ARM芯片连接,此方式适合大量数据传输,速率更快。
2.EM770W在LINUX下的驱动在较新版本的LINUX内核(LINUX-2.6.18以上)里已经有了EM770W的驱动,需在内核增加支持,修改配置如下:在linux内核目录下:make ARCH=arm menuconfig然后重新编译内核,增加驱动后在ARM开发板上通过USB接入EM770W,系统识别出USB设备,将EM770W虚拟成三个串口设备,节点为/dev/ttyUSB0,/dev/ttyUSB1,/dev/ttyUSB2。
如果使用较早的内核而不支持“USB driver for GSM and CDMA modems”的话,可以选择Usb Generic Serial Driver,但是需要把Usb Driver的PID和VID设置成华为的ID(EM700/EM770W的VID: 0x12d1 PID: 0x1001)ID更改步骤:在linux内核目录下vi drivers/usb/serial/option.c在里面定义两个宏(EM770W的VID: 0x12d1 PID: 0x1001):#define EM770W_OPTION_VENDOR_ID 0x12d1#define EM770W_OPTION_PRODUCT_COLT 0x1001增加到结构体中static struct usb_device_id option_ids[] = {{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },…{ USB_DEVICE(EM770W_OPTION_VENDOR_ID , EM770W_ OPTION_PRODUCT_COLT) },}修改完成后重新编译内核就可以驱动EM770W了。
boa移植步骤
BOA在ARM9上的移植在开发板上移植boa,首先需要下载boa源码包boa-0.94.13.tar.gz并解压,然后进入src 目录执行configure命令,生成编译所需要的makefile文件。
接着修改makefile,使其make 生成的boa可执行文件可以在arm板上运行。
CC=arm-linux-gcc CPP=arm-linux-gcc-E生成boa可执行程序以后,需要配置boa服务器。
而这其中涉及到一个很重要的配置文件boa.conf,该文件的缺省目录是/etc/boa,由src/define.h文件的SERVER_ROOT定义,也可以在启动的时候通过“-c”指定。
我们需要对其进行修改:Boa.conf的修改1、修改Group nogroup为Group 0 由于在/etc/group文件中没有nogroup组,所以设成0。
另外在/etc/passwd中有nobody用户,所以User nobody不用修改2、注释AccessLog /var/log/boa/access_log语句3、修改DocumentRoot为DocumentRoot /home/www 该目录为默认的开发板网页服务器文件所在目录4、修改mime.types文件所在的目录位置MimeTypes /home/mime.types mime.types文件从宿主机linux系统中的/etc目录中拷贝到开发板文件系统的home目录下5、打开ServerName 该项默认为未打开,执行boa会异常退出ServerName .here《基于ARM9的远程临近系统研究与实现》Boa Web Server的搭建1)下载Boa源码现在boa最新的版本是0.94.14rc21,这里我们使用的是0.94.13这个版本,boa-0.94.13.tar.gz.解压:#tar zxvf boa-0.94.13.tar.gz2)生成Makefile文件#cd boa-94.13/src#./configure3)修改Makefile找到CC=gcc并改为:CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc找到CPP=gcc –E 并改为:CPP=/usr/local/arm/2.95.3/bin/arm-linux-gcc –E4)编译#make#/usr/local/arm/2.95.3/bin/arm-linux-strip boa5)Boa的配置在/etc/boa/boa/conf里修改:*将user nobodyGroup nogroup改为User 0Group 0;*将DocumentRoot /var/www改为DocumentRoot /www,这样web服务器的文档根目录为/www;*将MimeTypes /etc/mime.types改为MimeTypes /www/mime.types;定义默认首页和CGI程序所在目录,即DirectoryIndex index.htmlScriptAlias /cgi-bin /www这样指定后,index.html为远程浏览客房访问WebServer所看到的首页默认值,用C编写的CGI程序编译成二进制文件,放到/www目录下,CGI程序能被正确地执行。
BOA CGI 技术简介
嵌入式Linux操作系统CGI程序设计技术1概述随着互联网应用的普及,越来越多的信息化产品需要接入互联网通过Web页面进行远程访问。
嵌入式Web系统提供了一种经济、实用的互联网嵌入式接入方案。
这里结合一种嵌入式Web Server BOA来介绍嵌入式Linux系统下的CGI程序设计技术。
2Web Server BOA的实现与配置2.1uClinux下,主要有三个Web Server:HTTPD、THTTPD和BOA.HTTPD是最简单的一个Web Server,它的功能最弱,不支持认证,不支持CGI.THTTPD 和BOA都支持认证、CGI等,功能都比较全。
BOA是一个单任务的小型HTTP服务器,源代码开放、性能优秀,特别适合应用在嵌入式系统中。
目前的uClinux的代码中已经包含BOA的源代码。
在uClinux下实现BOA,只需要对BOA做一些配置和修改。
以下是配置的过程。
(1)编译BOA到内核首先,需要把BOA编译到内核,即执行make menuconfig,在应用程序选单中network application项下面选择boa.该操作需要重新编译内核。
(2)编制配置文件boa.conf在Linux操作系统下,应用程序的配置都是以配置文件的形式提供的,一般都是放在目标板/etc/目录下或者/etc/config目录下。
但boa的配置文件boa.cont一般都旋转在目标板/home/httpd/目录下。
例如,一个典型的boa.conf文件格式如下:它指定了HTML页面必须放到/home/httpd目录下,cgi外部扩展程序必须放到/home/httpd/cgi-bin目录下。
(3)编译烧写内核重新编译内核后,通过烧写工具烧写内核,就可以在PC上通过IE浏览器访问开发板上的Web Server.例如,输入开发板的IP地址http://192.168.0.101/,即可访问到自己做的网页index.html了。
四种嵌入式web服务器介绍
mm net security
内存管理代码 网络支持代码,每个子目录对应网络的一个方面 安全、密钥相关的代码
sound usr
document ation scripts
音频设备的驱动程序 用来制作一个压缩的cpio归档文件
内核文档 用于配置、编译内核的脚本文件
内核的源代码可以从获取: 1. 首先解压缩内核源代码,修改顶层的Makefile文件 ARCH?= arm CROSS_COMPILE ?= arm-linux这里需要指定目标平台的体系结构和交叉编译工具链的路径。 2. 修改linux-2.6.26.8/arch/arm/mach-s3c2440/mach-smdk2440.c文件 s3c24xx_init_clocks(16934400)修改为s3c24xx_init_clocks(12000000) 指定开发板的晶振频率为12MHz。
第12章 嵌入式BOA服务器的构建
12.1
概述 嵌入式Linux系统移植 嵌入式Linux的BOA服务器移植
12.2
12.3
12.1 概述
下面简介下嵌入式web服务器。由于嵌入式 设备资源一般都比较有限,并且也不需要能同时 处理很多用户的请求,因此不会使用Linux下最 常用的如Apache等服务器,而需要使用一些专 门为嵌入式设备设计的Web服务器,这些Web 服务器在存贮空间和运行时所占有的内存空间上 都会非常适合于嵌入式应用场合。常见的嵌入式 Web服务器主要有:lighttpd、thttpd、shttpd 和BOA等等。
4.BOA BOA是一个非常小巧的Web服务器,可执行代码只有约60KB。它是 一个单任务Web服务器,只能依次完成用户的请求,而不会fork出新的进 程来处理并发连接请求。但BOA支持CGI,能够为CGI程序fork出一个进 程来执行。BOA的设计目标是速度和安全,在其站点公布的性能测试中, BOA的性能要好于Apache服务器。
BOA修改文档
1.BOA的编译配置编译环境:1.将6475相关的make.def 以及/define文件夹放在指定的目录2.编辑src目录下Makefile文件,将20行至22行的include目录指定到刚才放那些文件的路径。
3.如同修改Makefile文件一样,修改src目录下的Makefile-tools文件,将第1,2行指定的include路径指定到有效的对应路径。
4.同样方法修改src目录下的文件,将include目录指定到有效的位置。
运行DoIt.sh clean/make2.BOA增加FLASH值Mibtbl.c 文件1406行增加{MIB_SMB_NAME, "SMB_NAME", STRING_T, _OFFSET(smbName), _SIZE(smbName)},{MIB_SMB_WORKGROUP, "SMB_WORKGROUP", STRING_T, _OFFSET(smbWorkgroup), _SIZE(smbWorkgroup)}, {MIB_SMB_DESCRIPTION, "SMB_DESCRIPTION", STRING_T, _OFFSET(smbDescription), _SIZE(smbDescription)},APMIB.H文件1581行增加MIB_SMB_NAME,MIB_SMB_WORKGROUP,MIB_SMB_DESCRIPTION,3707行增加unsigned char smbName[21];unsigned char smbWorkgroup[21];unsigned char smbDescription[51];3834行修改为unsigned char Reserved[16094 - _FLASH_RESERVED_];3838行修改为unsigned char Reserved[23553 -_FLASH_RESERVED_];APFORM.H文件3160行增加extern int showSambaName(int eid, webs_t wp, int argc, char_t **argv);APFORM.C文件278行增加websAspDefine(T("showSambaName"), showSambaName);ASP_FORM.c文件295行增加websAspDefine(T("showSambaName"), showSambaName);Fmget.c文件文件头部增加#include "nassetyork.c"。
boa_流程分析
boa 流程分析默认分类2010-01-19 19:10:38 阅读291 评论0 字号:大中小订阅引言随着企业安全意识的增强以及现代化管理水平的提高,对设备的远程监控在工业控制系统中得到了越来越广泛的应用。
近年来,Web技术广泛普及,把Web 技术应用在这种监控系统中,可以让操作者通过浏览器维护和管理监测点,查看监测数据。
同时,监测中心的服务程序也可以很方便地通过Web把监测数据取回来,进行进一步的处理,十分方便。
μClinux是应用于微控制领域的一种嵌入式Linux操作系统,它源码开放,移植性好,支持多种硬件平台和几乎所有常见网络通信协议,支持文件系统丰富,是一个功能完整的嵌入式操作系统。
并且有大量优秀的开放源代码的应用软件和开发工具可用,因此,采用μClinux作为操作平台,使用Web技术进行远程在线监测系统的开发。
1 嵌入式Web服务器为了能够通过Web来维护和管理远程在线监控系统,必须选择一个恰当的Web服务器,不但要求所选择的Web服务器支持动态Web技术,也要求它能够在嵌入式系统中稳定地工作。
1.1 Web服务器原理和功能嵌入式Web服务器以TCP/IP协议栈为基础构建,需要实现HTTP,TCP和UDP等协议。
任何一个客户机,都可以通过HTTP协议与嵌入式Web Server建立连接。
嵌入式Web服务器在Web浏览器和设备之间提供了统一的GUI接口,使得客户端可以像在本地一样透明地监控管理设备状况。
嵌入式Web服务器的主要功能有:响应多个客户的实时HTTP请求,并为每个客户建立连接,这是嵌入式Web服务器的首要功能;对设备的实时监控管理,参数的在线查看与配置等;对设备访问的安全控制机制,包括SSL、用户口令等;实现设备的故障智能报警。
1.2 Boa的特点在μClinux中常用的Web服务器有:Boa,thttpd,httpd,其中httpd只支持静态页面,显然不适合高级应用,thttpd和Boa所提供的功能基本一样,但是thttpd在运行过程中所需要的资源要远大于Boa,因此使用Boa作为该嵌入式系统的Web服务器。
boa移植boa交叉编译
boa移植boa交叉编译BOA 服务器是⼀个⼩巧⾼效的web服务器,是⼀个运⾏于unix或linux下的,⽀持CGI的、适合于嵌⼊式系统的单任务的http服务器,源代码开放、性能⾼配置boa-0.94.13 # ./configure修改MakefileCC = arm-linux-gccCPP = arm-linux-gcc -E编译boa-0.94.13 # make出现如下错误出现错误:yacc -d boa_grammar.ymake: yacc: Command not foundmake: *** [y.tab.c] Error 127解决办法:# sudo apt-get install bison出现错误:lex boa_lexer.lmake: lex: Command not foundmake: *** [lex.yy.c] Error 127解决办法:# sudo apt-get install flex出现错误:arm-none-eabi-gcc -g -O2 -pipe -Wall -I. -c -o alias.o alias.cIn file included from alias.c:26:0:boa.h:41:19: fatal error: netdb.h: No such file or directorycompilation terminated.<builtin>: recipe for target 'alias.o' failedmake: *** [alias.o] Error 1解决办法://将交叉编译⼯具链换成gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)出现错误:arm-linux-gcc -g -O2 -pipe -Wall -I. -c -o util.o util.cutil.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing tokenmake: *** [util.o] Error 1解决办法:# vi compat.h //修改120⾏#ifdef HAVE_TM_GMTOFF#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff#else制作cgi页⾯交叉编译出⼀个cig脚本,供boa使⽤。
padavan 编译技巧,适配及汉化
padavan 编译技巧,适配及汉化标题:Padavan编译技巧、适配及汉化导言:Padavan是一款基于RT-N56U固件的开源固件,具有丰富的功能和强大的稳定性。
本文将介绍Padavan的编译技巧、适配方法以及汉化步骤,以帮助读者更好地理解和使用Padavan。
一、编译技巧1. 了解编译环境:在开始编译之前,确保你熟悉所使用的编译环境,例如安装好必要的编译工具和依赖库。
2. 下载源代码:Padavan的源代码可以在官方的GitHub仓库中获取。
使用git命令克隆代码库,并切换到最新的稳定版本。
3. 修改默认配置:Padavan提供了丰富的配置选项,可以根据需要进行修改。
修改配置文件之前,建议先备份原始的配置文件,以防止配置丢失。
4. 编译固件:在编译之前,确保你已经正确配置了编译环境和相关选项。
运行make命令开始编译固件,在编译过程中可能会遇到一些依赖或错误提示,根据提示进行相应的处理。
二、适配方法1. 了解硬件平台:在适配Padavan固件时,首先要了解硬件平台的相关信息,包括芯片型号、CPU架构等。
这些信息将决定你选择的适配方法和相关设置。
2. 查找适配资料:在适配Padavan固件时,可以通过搜索相关的资料和论坛帖子,了解其他人的适配经验和方法。
这些资料可以帮助你更好地理解适配过程中可能遇到的问题和解决方法。
3. 进行适配调试:在适配过程中,可能会遇到一些问题,例如硬件驱动不匹配、功能不完全等。
通过调试和修改相关配置文件,可以解决这些问题并完成适配工作。
三、汉化步骤1. 下载语言包:Padavan提供了多种语言包供用户选择。
在汉化之前,首先要下载所需的汉化语言包。
2. 备份原始文件:在进行汉化之前,建议先备份原始的语言文件,以防止汉化过程中出现错误或丢失原始文件。
3. 替换语言文件:将下载的汉化语言文件替换原始文件,然后重新编译固件。
在编译过程中,系统将使用新的语言文件生成汉化版本的固件。
移动互联应用技术《嵌入式Webcam网络视频监控实训项目文档》
网络视频监控实训案例实验环境♦硬件:U 500以上, 硬盘40G以上,内存大于256M♦软件:Vmware Worstation RHEL4 MiniCom/Xshell ARM-LINUX交叉编译开发环境实验内容♦内容描述-dev src]# vi Maefile修改第31行和32行如下:CC = arm-linu-gccC-linu-gcc -E修改完成后,保存文件,运行Mae进行编译:# mae编译完成后,会在该目录下生成我们需要的可执行文件boa。
1、配置BOA效劳器Boa运行时需要在文件系统的/etc/boa目录下有一个文件,该文件的全部内容如下:e /var/DirectoryIndeKeeeout 10MimeTyl文件存放的目录/var//cgi-bin 这个是CGI程序存放的目录/var/log/boa/error_log 这个是boa效劳器存放错误日志的地方1)进入解压后源文件目录,修改Maefile文件int/yaffs/web]/sera found: Generic Vimicro 303bVIDIOCG504C9Ceframe 0StreamId: 0 Cameratry ned second try failtry ned second try failtry ned second try failtry ned second try failat ased 21 chec 8VIDIOCSethod READ asedVIDIOCSWIN height 240 width 32021########init ########## deg目录下给出,用户只需将压缩包解压至Uagic开发板开发板的/root/目录下即可。
解下载解压方法参见开发板烧写文档。
重新启动系统,程序会按照/root目录下的脚本自动执行。
有兴趣的用户可以参考脚本的实现。
本次实验使用的环境可能与用户实验环境不尽相同,用户需要根据具体实验环境进行设置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
默认分类 2008-06-10 13:52 阅读126 评论0 字号: 大大 中中 小小 Boa的下载、编译、配置
1、 进入linux中/home目录下,用wget /boa-0.94.13.tar.gz 下载boa源文件包。
2、 解压boa-0.94.13.tar.gz ,用tar zxvf boa-0.94.13/src命令进入到src目录。
4、 在命令行中输入 ./configure 生成Makefile文件。
5、 在命令行中输入make编译boa。
8、 vi /etc/boa/boa.conf 编辑配置boa,A、port 监视的端口号(一般不修改),port 80。B、user 设置为nobody最好设置为root ,user nobody。C、listen 监视的ip,一般注释掉,通配于服务器的IP地址,#listen 192.168.0.20。D、Group 设置,要在/etc/group文件内容中有的组才行,也可以设为Group 0,则表示没有Group。E、Errorlog 设为Errorlog /var/log/error_log,Accesslog设为Accesslog /var/log/boa/access_log, (前两个选项也可以设为/dev/null表示不要错误信息,或者注释了),目录在6项已经设建好。F、uselocaltime 是否使用本地时间,若注释掉的话就使用UTC时间。G、VerboseCGILogs 是否使用CGI错误信息记录,注释掉表示不记录。H、DocumentRoot 非常重要,html文本文档的目录,我设为DocumentRoot /var/www/。I、Directoryhtml html目录文件名的索引,我设为Directoryhtml index.html,也可以设为Directoryhtml index.asp。J、Defaluttype text/plain 文件扩展名没有或未知的话,使用缺省的MIME类型。K、CGIpath /bin:/usr/bin:/local/bin提供cgi程序的path环境变量(用cgi开发才用到)。L、scriptAlias /cgi-bin/ /var/www/cgi-bin,指明cgi脚本的虚路径对应的实际路径,一般所有的CGI程序都放在实际路径中
9、 /home/ boa-0.94.13/boa启用BOA服务,可以用ps –ef 察看一下是否启动成功。看见boa字样表示启动成功。
10、 设置linux 中IP为192.168.1.235,编写一个index.html放在/var/www/下,
11、 在windows 的ie地址栏输入http://192.168.1.235就可以成功看到相应的网页。
6、 编译完成后,在命令行中依次键入/var/、mkdir log、mkdir log/boa、mkdir www、mkdir www/cgi-bin(下面会提及到)。
7、 在命令行中依次键入/etc、mkdir boa、cd boa、cp /home/ boa-0.94.13/boa.conf ./(拷贝配置文件到/etc/boa/目录下)。
�