移植boa

【移植boa】
平台:TQimx6ul
rootfs:rootfs256M_2K_v1.4.img(TQ官方镜像)
----------------------------------------------------------------------------------------------------
一、下载|解压|交叉环境配置

官网:Boa Webserver http://www.boa.org/
下载boa-0.94.13.tar.gz(官网最新版是这个,好像很多年没更新了)
解压:
#tar xvf boa-0.94.13.tar.gz -C / 
在src目录下运行:
#./configure
生成Makefile

检查交叉编译工具链,不要太新,
我选的工具链版本是TQ官网的5.3.1版本


二、修改代码

【注意】源码有几处要修改,虽然此时make只有一个错误,但复制到开发板后运行时会有一些问题。
【修改以下几处:】
【1】修改Makefile:
CC=arm-linux-gnueabihf-gcc
CPP=arm-linux-gnueabihf-gcc –E
(按实际填写)

【2】解决报错:util.c:100:1: error: pasting "t" and "->"does not give a valid preprocessing token make: *** [util.o]

 
修改 src/compat.h

   
找到

   #defineTIMEZONE_OFFSET(foo) foo##->tm_gmtoff

   
修改成

   #defineTIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

【3】修改boa.c 文件
注释掉下面两句话:
#if 0
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
#endif
否则会出现错误: getpwuid: No such file or directory

注释掉下面语句:
#if 0
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
#endif
否则会出现错误: - icky Linux kernel bug!: No such file or directory


【4】修改 src/log.c
注释掉
if (dup2(error_log, STDERR_FILENO) == -1) {
      DIE("unable to dup2 the error log");
}

-----------------------------------------------------------
三、编译
#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
编译成功会生成boa文件


四、移植
【以下步骤在开发板上进行】
挂载NFS:
#mount -t nfs -o nolock 192.168.1.74:/nfsroot /mnt
(1.74为虚拟机ip,/nfsroot为NFS目录)(要先安装好NFS相关工具)

在开发板根目录下创建以下目录:
mkdir /etc/boa
mkdir /var/www/cgi-bin

复制虚拟机里的boa和boa.conf到开发板的/etc/boa目录下:
[root@Embedsky 1022]# cp boa boa.conf /etc/boa

复制mime.types到开发板的/etc目录下:
[root@Embedsky 1022]# cp mime.types /etc/

复制hello.html(自己写一个)到开发板的/var/www目录下:
[root@Embedsky 1022]# cp hello.html /var/www


-------------------------------------------------------------
五、修改开发板的开机自启动脚本(/etc/init.d/rcS)
建议先备份原来的rcS:
#mv rcS rcS-backup

建议在虚拟机下编辑代码,
添加以下几行:
udhcpc -i eth0
        (动态分配ip)    
mkdir /var/log/boa

cd /etc/boa

./boa

修改后注意赋予权限:
chmod 777 /etc/init.d/rcS
否则重启后会:can't run '/etc/init.d/rcS': Permission denied

(注意:/var/log/boa目录重启后会被删除,故写在开机启动脚本里)

----------------------------------------------------------------------------------------------------------
六、说明
【1】[root@Embedsky boa]# ./boa
./boa: line 1: syntax error: unexpected "("
[原因]:没有修改Makefile,是用gcc编译的,应该改成是arm-linux-gcc编译。
【2】
http://192.168.1.224/hello.html(板ip)
hello.html放在板 /var/www下
【3】
在开机自启动脚本设置动态分配ip,boa服务器也设置成开机自启动,开发板上电后主机浏览器即可访问。
若开发板需要修改ip,修改后主机访问的url做相应更改即可。

 

【注:后续还要移植CGI】


附:hello.html
<html>
      <head><title>这是我的第一个html</title></head>
      <body>
        Hello World
      </body>
</html>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值