移植BOA到mini2440

一.编译BOA

1.从 www.boa.org 下载 Boa 服务器的最新版:boa-0.94.13.tar.gz

2.通过smb服务器拷贝到linux文件系统

3.解压该文件 tar xvzf boa-0.94.13.tar.gz

4.进入加压后boa-0.94.13文件夹下的src目录中,执行./configure生成Makefile文件

5.编译源码: make
注意在此处可能会出现下面错误:
(1)错误一

    yacc -d boa_grammar.y
    make: yacc: Command not found
    make: *** [y.tab.c]Error 127

错误原因: 一个源程序要变成一个可执行文件,要经过 词法分析–> 语法分析 –> 语义分析 –> 中间代码生成 –> 对中间代码优化–>生成目标文件,编译一个linux下的c系统,也是这样的,包含词法和语法分析模块,不过Linux上用的是bison和flex。yacc是一个文法分析器的生成器,bison即是yacc的GNU版本。Lex和YACC是用于构造词法分析机和语法解释器的工具,利用Lex和YACC你可以轻松的构造一个语法解释器。

解决方法:安装bison和flex后重新执行./configure生成Makefile文件。
(2)错误二
再次执行make后会出现如下错误:

util.c : 1001error:pasting “t”and“->”does not give a valid preprocessing to ken
make: *** [util.o] Error 1

解决方法:
方法一:
修改 src/compat.h
找到#defineTIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改#defineTIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

方法二:修改util.c中的第100行

将time_offset = TIMEZONE_OFFSET(t); 修改为 time_offset = 0; 

二. 将Boa移植到MINI2440开发板

  1. 修改boa.conf配置文件:
1.修改4849行:
User nobody
Group nogroup
将这两行注释掉

2.修改62行:
将ErrorLog /var/log/boa/error_log修改为ErrorLog /dev/console
即将错误输出到终端

3.修改74行:
将AccessLog /var/log/boa/access_log修改为
AccessLog /dev/null

4.修改94行:
将#ServerName www.your.org.here修改为ServerName www.your.org.here

5.修改111行:
将DocumentRoot /var/www的目录改为index.html你文件存放的文件目录

6.修改155行:
将MimeTypes /etc/mime.types改为MimeTypes /dev/null

2.将修改后的配置文件boa.config复制到开发板/etc/boa文件下(如果/etc下没有boa目录则创建一个boa目录)。

3.复制编译后生成boa可执行文件到开发板/sbin目录下,并更改脚本文件 /etc/init.d/rcS, 新增一行: /sbin/boa ,确保boa服务器随系统上电自启动。

4.运行boa,如果出现下面错误:

boa.c:211 - getpwuid: No such file or directory
则注释掉src/boa.c中210~227行代码,即改为
if 0
        if (passwdbuf == NULL) {
            DIE("getpwuid");
        }
        if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
            DIE("initgroups");
        }
        if (setgid(server_gid) == -1) {
            DIE("setgid");
        }
        if (setuid(server_uid) == -1) {
            DIE("setuid");
        }
        /* test for failed-but-return-was-successful setuid * http://www.securityportal.com/list-archive/bugtraq/2000/Jun/0101.html */
        if (setuid(0) != -1) {
            DIE("icky Linux kernel bug!");
        }
#endif

再次编译boa,并将其复制到开发板/sbin目录下,运行boa,通过ps命令查看其是否运行,如果有该进程,则说明移植成功。

三.测试boa

在你的浏览器中输入你的开发板的ip地址,回车就可以看到你的存放在DocumentRoot /var/www网页了。
注意:测试boa时,一定要保证开发板与pc机之间的网路是通的。

你可能感兴趣的:(移植)