花了几天的业余时间终于把boa的移植完成了,最近每天加班都到夜里十一二点,实在是累死了。今天清明节,睡了一上午,下午终于移植OK了,记录一下。
现在看来移植boa还是总的来说还是比较简单的,主要是我之前制作根文件系统的时候没有拷贝全库文件导致移植出现莫名其妙的问题。
由于移植的部分在网上多得是,而且也教简单,先说说问题吧,供其他出现同样问题的同学参考:
问题1:配置 User 时,使用 User root 或者其他存在的用户名,都会提示no such user ,使用User 0时,又会提示boa.c:248 (drop_privs) - getpwuid: No such file or directory;
查看源代码和百度 getpwuid是linux中根据用户id获取用户密码的一个函数,查看/etc/passwd中是有root用户的,切id=0,自己编写一个测试函数,getpwuid也是返回null。不解,在百度上搜了很长时间也没有结果,都是搜到的linux中账户管理的内容,后来突然来了灵感,为啥不问问谷歌呢,呵呵 这一问,才问出来,是由于缺少了一个库文件 libnss_files.so.2 。由于当时在使用busybox制作根文件系统的时候,没有找到arm-linux-gcc 的共享库,所以没有拷贝,后来找到了一部分,只靠背了lib下的,还有一部分在usr/lib下面。拷贝完,boa终于运行成功了。调试时可以将错误日志和运行日志都定向到 /dev/console 中方便查看错误信息,成功后再改回。
问题2:在运行后,添加cgi程序调试,发现cgi程序无法成功运行,会直接被下载,在对脚本虚拟目录搞清楚以后,重新配置了脚本的虚拟路径,肯定配置没问题之后,将cgi程序拷贝到相应目录,仍然直接将cgi程序下载下来了,后来直接重启开发板,刷新页面,页面正常显示了,这步说明,在修改了boa的部分配置之后需要重启boa以重新读取配置或者重启设备。
配置CGI目录脚本:
ScriptAlias /cgi-bin/ /usr/local/boa/cgi-bin/
说明,/cgi-bin/ 为虚拟路径, /usr/local/boa/cgi-bin/为系统的实际路径,即在访问 http://域名/cgi-bin/test.cgi的时候,boa实际访问的是开发板上的路径 /usr/local/boa/cgi-bin/test.cgi
即配置后,添加的cgi脚本需要防止在/usr/local/boa/cgi-bin下才能被访问到。