内核编译核心部分 1、文件系统分析 文件系统是uClinux操作系统的重要组成部分,uClinux文件系统是操作运行的基请看如下
内核编译核心部分
1、文件系统分析
文件系统是uClinux操作系统的重要组成部分,uClinux文件系统是操作运行的基础。许多嵌入式系统在不存在磁盘的情况下也可以运行。文件系统可以随同内核一起被打包并在启动时作为一个文件系统的映像被加载。对一个简单的应用系统来说,这己足够了。文件系统可以存放在一个传统磁盘中,但也可以存放在非易失性的存储介质—闪存中。闪存有一个引导块,它存放了CPU上电后运行的第一个软件,这个软件可以是uclinux的引导程序,也可以是自己编的bootloader。uClinux的内核可以被引导程序从闪存中拷贝到RAM中全速运行。闪存也可以作为文件的存储介质,必要时写入一些需要保存的数据。
uClinux支持NFS(NetworkFileSystem),它允许通过网络加载各种应用程序。由于用在每一个嵌入式系统上的软件可以从一个公用的服务器上加载,这在控制软件的修订或升级中是很重要的.在系统运行的过程中,导入和导出数据、配置、状态信息的备份也很重要。对用户而言,这是一个非常强大的功能。例如,一个嵌入式系统可能装配了一个RAMDISK,它包含着与系统当前状态的更新维持一致的(状态)文件。那么别的嵌入式系统仅需通过网络把这个RAMDISK作为远程磁盘mount过来便可以访问那些位于远端RAMDISK中的状态文件。这也允许在另一台机器上的WEB服务器借助简单的CGI脚本来访问那些状态信息。运行在其他机器上的应用程序包能够很容易地访问这些数据。uClinux操作系统根据不同的安装选择可以生成不同的文件系统。系统中提供了十分丰富的文件系统以供不同需要的用户选择。每种类型的文件系统的基本块大小、优化分配策略、一次传送的数据长度等等都是相互匹配的,使得本类文件系统均有相应的最佳性能。
2、嵌入式Web服务器
对uClinux操作系统下嵌入式Web技术的实现主要用于用户可以通过网
页方式来管理路由器。
⑴uClinux下WebServer的实现
uClinux下,主要有三个WebServer:htpd,thttpd和Boa。Httpd是最简单的一个WebServer,它的功能最弱,不支持认证,不支持CGI。Thttpd和Boa都支持认证、CGI等,功能都比较全。为了实现动态Web技术,这里我们选择实现一个支持CGI的、非常适合于嵌入式系统的BoaWebServer。Boa是一个单任务的http服务器,源代码、性能高。目前,uClinux的代码中已经包含boa的源代码,在uClinux下实现Boa,需要对Boa做一些配置和修改。这主要通过对boa.conf和mime.types文件进行修改来实现,需要改动的配置有以下几项:
①建目录
由于uClinux默认的根文件系统romfs是只读的,不能用mkdir等命令来新建目录,故应在编译内核前先建好要用到的目录,这通过修改
/uclinux-samsung/vendors/Samsung/4510b/makefile文件来实现。在ROWFS_DIRS=bindevetchomelibmntprocusrvar的后边增加home/webhome/web/cgi-bin,这样修改后编译内核,编译好的根文件系统romfs中就包含这些目录了。
②指定Web服务器的根目录路径(SERVERROOT)
进入/uclinux-samsung/user/boa/src/目录,通过修改define.h文件中#defineERVERROOT/home”语句来指定SERVERROOT。另外,还可以通过命令行来指定,例如:boa-c/home/&。而且命令行指定的SERVERROOT可以覆盖define.h文件所指定的。
③修改boa.conf文件
在./uclinux-samsung/user/boa/src/boa.conf里修改:
将userobody和Groupogroup改为User0和Group0;
将DocumentRoot/var/www改为DocumentRoot/home/web,这样web服务器的文档根目录为/home/web;
将MimeTypes/eWmime.types改为MimeTypes/home/web/mime.types;
定义默认首页和CGI程序所在目录,即
DirectoyIndexindex.html
ScriptAlias/cgi-bin//home/web/cgi-bin/
这样指定后,.index.htm为远程浏览客户访问WebServer所看到的首页默认值,用C编写的CGI程序编译成二进制文件,放到/c192.168.0.101gi-bin/目录下,CGI程序能被正确地执行。
Boa.conf文件和mime.types文件必须放到Web服务器根目录下,所以把修改后的bao.conf和mime.types拷贝到“./uclinux-samsung/romfs/home/”目录下。然后在/uclinux-samsung/Vendors/Samsung/4510b/initab里修改,在:inet:unknown:/bin/inetd后加入:boa:unknown:/bin/boac/homeo
配置过程后,重新编译内核,编译时选中Boa选项。把编译好的内核下载到硬件板,启动uclinux,完成IP配置,启动BoaWebServer,然后就可以通过lE访问你的网页了。如果想启动uclinux时自动启动BoaWebServer,可以修改re文件,进入uclinux-samsung/vendors/Samsung/4510B目录,在运行脚本rc中增加两行:
ifconfigeth0192.168.0.101up
boa-c/home/&
修改后重新编译内核,再下载到硬件板运行.运行uclinux后,不需要配置就可以直接通过IE来访问,看到你的网页了。
⑵uclinux下实现动态Web页面的CGI技术
到目前为止,实现动态Web页面有4种技术可供选择:CGI(CommonGatewayIntece),ASP(ActiveXServerPage),PHP(PersonalHomePage)和JSP(JavaServerPage).在uclinux下如果要实现动态网页,只能采用CGI,因此目前uclinux还不支持ASP,PHP等动态Web页面技术。CGI(通用网关接口)提供Web服务器一个执行外部程序的通道,这种服务端技术使得浏览器和服务器之间具有交互性。CGI程序属于一个外部程序,需要编译成可执行文件,以便在服务端运行。浏览器将用户输入的数据送到Web服务器,Web服务器将数据使用STDIN送给CGI程序,在执行CGI程序后,可能会访问存储数据的一些文档,最后使用STDOUT输出HTML形式的结构文件,经Web服务器送回浏览器显示给用户。CGI程序可以用任何程序设计语言编写,如Shell脚本语言、Perl,Fortran,Pascal,C语言等。但目前uclinux不支持Pert,Fortran等语言,而且C语言在平台无关性上表示不错,所以我们选择用C来编写CGI程序。另外,uClinux也不支持数据库,所以需要保存的数据只能保存到文件中,CGI查询数据时也是查询这些文件,而不是访问数据库。
⑶uClinux下动态Web页面的实现
下面通过一个例子来说明如何实现uClinux下的动态Web页面技术。此例子的目的是使用户能够通过Web页面内嵌表单提交数据,并能把用户提交的数据通过Web浏览器正确地返回给用户。实现动态Web页面的第一步是用HTML语言编写Web页及内建表单。编写Web页面时,要由ACTION属性来指定相关的CGI程序,如ACTION=cgi-bin/demo;由MOTHOD属性来指明所用的提交数据的方法,即MOTHOD=POST(GET)。
tags:192.168.0.10