1、嵌入式Web的應用。在嵌入式設備的管理與交互中,基于Web方式的應用成為目前的主流,這種程序結構也就是大家非常熟悉的C/S結構,即在嵌入式設備上運行一個支持腳本或CGI功能的Web服務器,能夠生成動態頁面,在用戶端只需要通過Web瀏覽器就可以對嵌入式設備進行管理和監控,非常方便實用。
2、嵌入式服務器的選擇。由于嵌入式設備資源一般都比較有限,并且也不需要能同時處理很多用戶的請求,因此不會使用Linux下最常用的如Apache等服務器,而需要使用一些專門為嵌入式設備設計的Web服務器,這些Web服務器在存貯空間和運行時所占有的內存空間上都會非常適合于嵌入式應用場合。常見的嵌入式Web服務器主要有:lighttpd、thttpd、shttpd和BOA等。
3、Boa是一個非常小巧的web服務器,其可執行代碼只有約60Kb,它是一個單任務的服務器,只能依次完成用戶的請求,而不會fork出新的進程處理并發的連接請求。但Boa支持CGI,能夠為CGI程序fork出一個進程來執行,Boa設計目標是速度與安全。
硬件環境:SBC-S2416單板機
軟件環境:
1、PC端:win7下VirtualBox虛擬機+xubuntu系統。具備基本的GCC編譯環境,能夠執行configure產生Makefile;系統中已搭建好交叉編譯環境。
相比于普通的PC機,嵌入式的硬件資源相當的有限,不可能進行本地的開發。因而,嵌入式的軟件開發和調試過程通常是在PC機上實現的。這樣就形成了一套在PC機上交叉編譯,然后生成目標機平臺的格式,最后在目標機上執行的開發流程,也就是所謂的交叉編譯環境。
2、移植嵌入式Linux系統到開發板上。
Boa搭建過程:
1、下載boa-0.94.13.tar,執行tar解壓命令
2、在解壓后的src目錄下,執行./configure生成MakeFile
3、MakeFile中31、32行,路徑改成交叉編譯路徑。
CC = /usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc?
CPP = /usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc -E
4、執行Make編譯命令,生成可執行文件boa,可以用file boa查看。
出現的錯誤:
(1)提示:make: yacc: 命令未找到 ? ? ? ? ? ? ? ?make: *** [y.tab.c] 錯誤127
原因:沒有安裝yacc
解決方法:執行apt-get install bison命令(可能需要管理員權限sudo)?;蛘呦螺dbyacc-1.9.tar.gz,編譯生成yacc,拷貝到/usr/local/bin/下。
(2)提示:make: lex: 命令未找到 ? ? ? ? ? ? ? ? ? make: *** [lex.yy.c] 錯誤 127
原因:沒有安裝lex程序
解決方法:執行apt-get install flex命令?;蛘呦螺dflex-2.5.37.tar.gz,編譯生成flex,然后改名為lex,將lex拷貝到 /usr/local/bin/下。
(3)提示:make ***[util.0] 錯誤1
解決方法:編輯src下的compat.h文件,大概120行處的
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 改為
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
(4)提示:
解決方法:編輯src下的boa.c文件,注釋掉225-227行
#if 0
if (setuid(0) != -1) {
DIE("icky Linux kernel bug!");
}
#endif
5、將boa拷貝到目標板的/bin下。(etc/boa下?)
6、配置。參考鏈接。修改boa-0.94.13文件夾下的boa.conf,放入etc/boa下(此目錄在src下difines.h文件中指定#define SERVER_ROOT "/etc/boa"),常見參數:
Port端口
User(48行)默認nobody,改為root?
Group(49行)默認nogroup,改為root?
ErrorLog(62行)默認/var/log/boa/error_log,需要手動建立/var/log/boa目錄
AccessLog(74行)默認/var/log/boa/access_log,需要手動建立/var/log/boa目錄
(94行)ServerName www.your.org.here前注解#去掉 ?
DocumentRoot(111行)默認/var/www,需手動建立目錄
DirectoryIndex(123行)默認index.html
MimeTypes(155行)默認/etc/mime.types,需將虛擬機中該文件拷貝至目標機相同路徑下
ScriptAlias(193行)默認/cgi-bin/ /usr/lib/cgi-bin/,需手動建立目錄,本文中修改至/var/www/cgi-bin
7、程序運行。(如果boa搭建在虛擬機中,即非交叉編譯,本文中要在目標板上搭建,執行$ ./boa?-c `pwd`,-c表示指定boa.conf的路徑,默認的路徑是/etc/boa/,`pwd`得到的是當前路徑。參見鏈接。)
目標機執行 boa&
8、相關命令。
fdisk -l 顯示掛載的存儲設備,本文用來找U盤
mount /dev/‘U盤名’ /mnt 復制U盤內容到mnt
cp ‘文件’ ‘路徑’ 復制
mv ’文件’ ‘路徑’ 移動文件,本文用來重命名
后記:想繼續探索的問題:1、需要管理員權限的命令,前面加sudo后,輸入密碼可執行。Linux的用戶名和用戶組權限是怎么回事。
?
評論