(计算机应用技术专业论文)嵌入式linux的裁减及其系统构建的研究与实现.pdf_第1页
(计算机应用技术专业论文)嵌入式linux的裁减及其系统构建的研究与实现.pdf_第2页
(计算机应用技术专业论文)嵌入式linux的裁减及其系统构建的研究与实现.pdf_第3页
(计算机应用技术专业论文)嵌入式linux的裁减及其系统构建的研究与实现.pdf_第4页
(计算机应用技术专业论文)嵌入式linux的裁减及其系统构建的研究与实现.pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硕十学位论文 摘要 摘要 嵌入式l i n u x 是国际上一个研究热点,近年来得到了飞速的发 展。本文首先对l i n u x 与嵌入式系统的融合性方面进行了评述,分 析了l i n u x 用于嵌入式系统后存在的问题,其中l i n u x 的裁减是一 个急待解决的重要问题。到目前为止,裁减嵌入式l i n u x 的方法极 为有限,其原因主要是缺乏有效的标准构建模式和裁减工具。 随后本文在对l i n u x 体系结构进行剖析的基础上,以一个基于 嵌入式l i n u x 的n e t f i l t e r 防火墙为例,实现了一个嵌入式l i n u x 的构建。其主要方法是在对功能进行分析的基础上,减小l i n u x 冗 余组成部分,实现小型化整合。 接着本文对l i n u x 桌面系统与嵌入式系统模型进行了比对,对 l i n u x 源码进行了分析,从中发现了对l i n u x 进行裁减的关键部分: 文件系统、内存分配和函数库,为对l i n u x 进行进一步的裁减提供 了理论支持。 然后基于现有裁减方式,针对嵌入式系统的特性,本文做出了 以下具有创新性的工作:提出采用回溯分析的方法,对文件体积和 数量分布进行统计,确定文件系统格式中各要素。针对嵌入式系统 中原有文件系统映象压缩模式占用内存体积过大的缺陷,采用不完 全解压策略,实现嵌入式l i n u x 压缩文件系统映象的内存解压分配。 改进现有的程序和函数库调用关系分析法,并给出了通过分析函数 级的函数间以及程序和函数间调用关系进行函数库的裁减的实现方 案。 论文最后对嵌入式l i n u x 系统构建和裁减的研究工作做了总结, 并对进一步的工作作出了展望。 关键词l i n u x ,裁减,函数库,嵌入式,文件系统 硕+ 学位论文 a b s t r a c t 1 1 1 er e s e a r c ha b o u te m b e d d e dl i n u xi si nf u l ls w i n g a n dg o tar a p i d p r o g r e s si nr e c e n ty e a r s t h i st h e s i s f i r s t l y , a n a l y z e st h es y n c r e t i s mo f t h ee m b b e do sa n dl i n u x a m o n gt h ei n c o n s i s t e n c i e s ,o n eo ft h em o s t i m p o t a n tp r o b l e m si s t os h r i n kt h es y s t e mi m a g et of kt h ee m b e d d e d m e m o r yc a p a c i t y b u tt h es o l u t i o n st ot h ep r o b l e ma r el i m m i t e df o rt h e p r e s e n t 。t h em a i nr e a s o ni st h a ti t sa b s e n tas t a n d a r ds e t t i n gm o d u l ea n d e f f i c i e n tr e d u c t i o nt o o l s t h i st h e s i st h o r o u g h l ya n a l y z e st h es t r u c t u r eo fl i n u x d i s c u s s e s a n df i g u r e do u th o wt ob u i l dan e t f i l t e rf i r e w a l lb a s eo ne m b e d d e dl i n u x 1 1 1 em i n m i z e dl i n u xi se s t a b l e i s h e db ya n a l y z i n gt h ef u n c t i o n st os h r i n k t h es u p e r a b u n d a n c eo fd a t a t l l i sf i r e w a l li sa no b j e c ti nt h er e d u c t i o n r e s e a r c h s u c c e s s i o n a l l y , a f t e rc o m p a r e sl i n u xd e s k t o ps y s t e mw i t he m b e d d e d s y s t e mm o d u l e ,t h r e ek e yp o r t i o n sa r ef o u n di nl i n u xr e d u c t i o n : f i l e s y s t e m ,m e m o r ya r r a n g e m e n ta n dl i b i tp r o v i d e st h e o r e t i c ss u s t a i n s f o rf a r t h e rr e s e a r c h a f t e r w a r d sb a s e d0 1 1t h ee x i s t e n c eo fr e d u c t i o nm o d e ,c o n t r a p o s e s t h ec h a r a c t e r i s t i co fe m b e d d e ds y s t e m , t h i st h e s i sf u l f i l l e st h ei n n o v a t i v e t a s k sh e r e i n a f t e r :a d o p tt h em e t h o do fr e t r o s p e c t i n gt oo o n f k r mt h e f i l e s y s t e mf a c t o r sb ys t a t i n gt h ed i s t r i b u t i n go ff i l e v o l i m e sa n d q u a n t i t i e s 。i na l l u s i o nt ot h e1 i m i t a t i o no f t h a tt h ef i l e s y s t e mi m a g ei st o o b i g , a ni n c o m p l e t es t m t e 岛 i sa d o p t e dt ou n c o m p r e s st h ed a t ai n t o a m d i s lt h ea n a l y t i c a lm e t h o do ff u n c t i o nc a l l si so p t i m i z e d b r e a k t h eb a c ko fl i br e d u c t i o nb ya n a l y z i n gt h ec a l lr e l a t i o n s h i pa m o n g e p r o g r a m sa n df u n c t i o n s f i n a l l yt h i st h e s i ss u m m a r i z e st h er e s e a r c hw o r ko fe m b e d d e d l i n u x sc o n f o r m a t i o na n dr e d u c t i o n s e v e r a li m p o r t a n ti s s u e sn e e dt ob e r e s e a r c h e da tn e x ts t a g eh a v e b e e np u tf o r w a r di nt h i sd i s s e r t a t i o n k e yw o r d sl i n u x ,r e d u c t i o n ,l i b ,e m b e d d e d ,f i l e s y s t e m n 原创性声明 本人声明,所呈交的学位论文是本人在导师指导下进行的研究 工作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不 包含为获得中南大学或其他单位的学位或证书而使用过的材料。与我 共同工作的同志对本研究所作的贡献均已在在论文中作了明确的说 明。 作者签名:逻塞日期:逝年月五日 关于学位论文使用授权说明 本人了解中南大学有关保留、使用学位论文的规定,即:学校 有权保留学位论文,允许学位论文被查阅和借阅;学校可以公布学位 论文的全部或部分内容,可以采用复印、缩印或其它手段保存学位论 文;学校可根据国家或湖南省有关部门规定送交学位论文。 作者签名:季盐导师签礅日期:避年至月上l 日 硕士学位论文 第一章概述 1 1 引言 第一章概述 嵌入式操作系统系统是基于嵌入式设备的操作系统“1 ,其设计是基于嵌入 式应用的功能特定性和硬件特定性的。随着嵌入式设备的普及,面向嵌入式应 用的操作系统,得到了广泛的应用。 随着对嵌入式体系研究的深入,人们发现,嵌入式设备的存储容量有限性 要求和操作系统功能完备性要求之间存在着矛盾;这种矛盾的解决成为了嵌入 式系统构建过程中一个至关重要的问题。由于系统体积直接决定了嵌入式设备 的成本,对嵌入式操作系统进行裁减的研究,不仅具有相当重要的现实意义, 同时也是人们迫切需要解决的问题之一。因此,近年来嵌入式操作系统的裁减 逐渐成为了嵌入式研究领域内的一个热点 1 1 1 嵌入式操作系统的发展 嵌入式系统经过了四个发展阶段嘲: 1 、以单芯片为核心的可编程控制器形式的系统,没有操作系统的支持。 2 、以嵌入式c p u 为基础、以简单操作系统为核心的嵌入式系统。 3 、以嵌入式操作系统为标志的嵌入式系统。 4 、以i n t e r n e t 为标志的嵌入式系统。 经过数十年的发展,国际市场上出现了以v x w o r k s 、p s o s 、w i n d o w s c e 、 p a l m o s 啪等为代表的大量成熟的嵌入式操作系统,支持数百种处理器,广泛的 应用于各个领域。 随着嵌入式软件的开发方法和技术的进一步发展,嵌入式操作系统的发展 重点由支持编码任务逐渐转向为如何为用户提供可高度配置的操作系统,友好 的系统开发环境,有效的开发工具提供规范的系统构建模式伽。 此外有大批学者进行了嵌入式操作系统的构建研究,但很少有学者专门就操 作系统的裁减或小型化构建的概念,( 如构建模型,体系结构,辅助工具等) 加 以定义或研究。由于不同的研究所针对的应用背景有所不同,因而并不具有普遍 的内涵。 大多数计算机构建技术是在大型操作系统的支持下进行应用程序的装配的 硕士学位论文 第一章概述 嵌入式操作系统与之不同之处在于需要从功能出发尽量缩减系统体积嘲。在这一 点上嵌入式操作系统没有现成的经验可以借鉴,因此嵌入式系统的发展现状迫切 需要一种创新的操作系统构建模式。 事实上将对嵌入式0 s 的研究缩小到系统裁减的范围,其研究内涵已经缩小了 很多,即使如此,要建立一个完整的小型化的嵌入式操作系统还必须能够解决以 下几个方面的问题: l 、在支持特定的硬件的驱动基础上,支持特定的系统功能嘲 2 、在支持特定的功能的基础上,尽可能的确定一个最小的系统模型。 3 、系统模型要提供完整的操作系统功能。 4 、操作系统模块化和构件化的实现。 5 、操作系统可以根据用户的需要进行配置。 6 、操作系统提供系统裁减的辅助工具嘲。 、 要很好的解决这些问题,目前的研究工作还有待进一步的深入为了建立一 个实用的嵌入式操作系统,作者通过概括已有的研究工作,提出嵌入式操作系统 裁减应具有如下研究内容及特点: 小型化系统构建模式的确定 函数库中有用函数的提取( 有用函数即被调用的函数) “1 。 针对嵌入式系统存储器的文件系统格式的优化。 针对嵌入式系统的特点如何进行内存分配和文件解压( 在大多数情况 下,压缩的文件系统解压到内存中使用) 州。 嵌入式操作系统裁减及其系统构建是基于功能分析的。在功能确定的情况 下,通过系统裁减实现函数库、文件系统和内核的小型化,以取得最大的压缩效 率 i i 2 嵌入式系统裁减问题的研究意义 嵌入式系统的种类繁多,特性各异,使得对嵌入式操作系统进行面向应用 的定制比通用系统更为必要。因此,研究嵌入式操作系统的构建和系统裁减技 术,使其能够适应于功能特定的嵌入式系统的要求,并开发相应的裁减工具, 就显得非常必要。 嵌入式系统的裁减有着广泛的应用范围和应用价值。作者通过综合他人已 有的研究工作,总结得出嵌入式系统裁减的应用主要包括以下几个方面: 1 、降低嵌入式设备的成本嘲 2 、减少嵌入式系统的开发周期 3 、满足嵌入式设备的多样性对操作系统高度可配置性的要求“” 2 硕士学位论文 第一章概述 4 、降低嵌入式系统的构建难度 将l i n u x 作为研究对象也具有现实的意义,l i n u x 在小型化嵌入式系统构 建方面的优势主要在于以下几个方面m ”: 1 、良好的可裁减性 2 、高度的模块化 3 、源代码的开放 4 、有效的配置工具 l i n u x 作为一种成熟的操作系统,适于进行嵌入式操作系统的开发。而 l i n u x 作为一种桌面操作系统,体积较大,功能完备,不适合于体积小的片上 系统。嵌入式设备资源有限,对软件的体积有比较苛刻的要求。l i n u x 是单一 模块结构,体积较大,不适合直接在嵌入式设备中应用。 开发符合原l i n u x 接口标准的小体积的l i n u x 内核,并加强其可裁减性和 可配置性。对l i n u x 进行裁减,将l i n u x 移植到存储容量小的设备中去成为了 嵌入式系统的研究热点之一。 1 2 嵌入式l i n u x 裁减及其构建的研究现状评述 在早期的嵌入式设备构建中,人们通常手工搭建交叉编译工具链“”,使用编 译链接程序,从无到有搭建嵌入式操作系统,这种方法存在着工作量大,更新困 难、成本高昂、开发周期长等缺点。为了解决这个问题,提高系统的可重用性, 各个商用嵌入式操作系统提出了其系统构建方案。如w i n c e 的开发平台主要为 w i n c ep l a t f o r mb u i l d e r “”,它向提供大家熟悉的v c + + 环境,在微软的强大技术 支持下,开发环境方便快速。而由于w i n c e 的内部源码与模块不公开,用户难以 做出高质量的裁减。 而对于开放源码的l i n u x ,也有许多学者提出了构建小型化系统的方案。由 于了解了操作系统的内部源码,深度的裁减操作系统成为了可能。利用一些现成 的源码的分析工具,可以找到程序和函数之间的调用关系。b r y d e r 等人提出, 通过使用源码分析软件c a l lg r a g h 对l i n u x 内核源码的调用关系进行分析“o 。改 方法可以直观的显示函数间调用关系,有针对性的找出孤立节点。但是由于对于 嵌入式系统的源码裁减不仅限于内核,而更重要的是文件系统和函数库,有必要 将对源码分析的研究扩展到文件系统和函数库。 在对文件系统进行压缩的研究过程中,l i n u st o r v a l d s 亲自设计了用于缩减 系统体积的文件系统c r a m f s “”。该文件系统采用t z l i b 程序“”对文件进行压缩, 通过使用压缩算法d e f l a t e “”使文件的体积减少为原来的一半。然而c r a m f s 仍然 3 硕士学位论文第一章概述 是基于桌面系统的存储器来进行设计的,使之适用于嵌入式系统,还要对其内部 结构进行进一步的优化,使之得到更好的压缩效果。 对于函数库的裁减是效率最高的部分。g n u 本身也提供了初步裁减的工具, 以去除目标文件中的调试符号“”。白衡在他的论文中提到,在对函数库进行 裁减时,提出了基于目标文件( - - 进制) 的裁减技术。即通过扫描应用程序符 号表,确定应用程序库函数,根据库函数找到目标文件,然后对目标文件进行 重新链接,产生新的库。根据这种裁减思路,实现了对g l i b c 的裁减,效果良 好。而在裁减过程中,需要多次的重新编译,对于需要的所有函数库,难以一 次确定 裁减l i n u x 的主要目的是构建一个与应用软件和嵌入式硬件的独特需求相 匹配的操作系统。l i n u x 系统支持的计算机应用领域相当广泛。目前最流行的 小型化的嵌入式的l i n u x 有:u c l i n u x 、e m b e d i x 、x l i n u x 、p o k e t l i n u x 、 m i d o r i l i n u x m l 、红旗嵌入式l i n u x 等。 。 纵观嵌入式l i n u x 的裁减,采用的方法可以分为如下几类。 l 、内核小型化改造:重新书写内核、构造内核配置分析工具。 2 、文件系统小型化改造:建立专用文件系统、文件系统压缩。 3 、函数库小型化改造;重新书写专用函数库、构造函数关系分析工具。 这些小型l i n u x 的构建方法普遍存在着开发周期长、实现过程复杂、不具 有通用性的缺点。 1 3 本文主要工作 鉴于实现l i n u x 的小型化和配置优化,对降低嵌入式相系统成本和减少开 发周期有者至观重要的现实意义,嵌入式l i n u x 裁减技术要解决的主要问题是 如何根据系统功能有效的定制l i n u x 系统,这一技术有着十分广泛的应用领域、 可观的应用前景和巨大的经济价值。 本文主要对如何重新构建l i n u x 系统以及l i n u x 系统中能有效缩减体积的 部分进行了研究。通过对嵌入式系统的具体特征分析及源码分析相结合,论文 作者构建了一个具体的小型l i n u x 系统,并对其进行了进一步裁减。 论文首先研究了嵌入式的操作系统裁减的技术体系,随后讨论了目前主流 的裁减技术的发展前景及面临挑战。对传统的嵌入式系统进行了深入研究分析 指出其不足之处,并提出了莸的嵌入式l i n u x 裁减的实现方案。论文作者在源 码结构分析的和裁减技术研究方面做了较为扎实的工作。 论文选题的背景来源于嵌入式系统小型化的现实需求,属于应用研究领 4 硕七学位论文第一章概述 域。选题的意义一方面在于拓宽了源码分析技术的应用领域,将过去传统的函 数分析应用推广至嵌入式l i n u x 环境下的裁减应用研究:另一方面,借助嵌入 式和操作系统存储管理原理的合理融合,并运用目前比较成熟的存储管理技术, 在应用于r a r d ) i s k 中的文件系统的压缩等方面做出了有益的尝试。 1 4 论文结构 本论文结构安排如下: 第一章简述了论文中的研究对象,研究目的和所完成的工作等基本情况。 第二章以一个防火墙系统为实例,提出了从现有l i 叫x 版本出发,构建嵌 入式l i n u x 的实现方案,为迸一步研究文件系统的优化和裁减提供 了一个实体。 第三章剖析了l i n u x 的特征及体系结构,并将其与嵌入式系统的要求做了 比对分析,重点分析了l i n u x 中与裁减相关的关键模块一文件系统、 内存分配和函数库,为进一步裁减了理论基础。 第四章研究了嵌入式l i n u x 裁减和优化的主要方法。提出了采用回溯分析 的方确定文件系统格式的要素的方案;采用了一种用于减小文件系 统在r a m d i s k 中内存分配的不完全解压策略;采用了对函数库和应 用程序进行源码分析,找出函数间调用关系,实现函数级函数库裁 减的方案,讨论了其实现细节。 , 第五章对论文所做工作进行总结,并对下一步的工作进行了展望。 1 5 小结 本章作者首先阐述了嵌入式操作系统的发展过程及其主要研究内容,然后 就嵌入式操作系统的目前的研究现状,从其研究热点和构建方法两方面做了评 述,最后提出了嵌入式操作系统目前存在的问题,提出了本文的研究任务。 5 硕士学位论文第二章l i n u x 裁减的研究实例一n e t f i l t e r 的实现 第二章l i n u x 裁减的研究实例1 l e t f i l t e r 防火墙的实现 裁减必须基于对功能的分析,因此对l i n u x 进行裁减研究必须基于一个应 用实例。由于l i n u x 价格便宜,同时网络功能强大,并提供免费的t c p i p 协议 栈,十分适合于网络相关应用。l i n u x 操作系统常常用于以下嵌入式设备:路 由器、防火墙、p d a 、服务器等。一般情况下嵌入式l i n u x 辅存的体积为1 8 m , 主存体积为2 1 6 m 。现有的l i n u x 桌面系统安装防火墙软件后经过配置,就可 以充当防火墙,而其体积过大,并不适用于嵌入式系统。 本章将以一个n e t f i l t e r 防火墙作为l i n u x 裁减的研究实例,通过对l i n u x 体系结构的分析,对l i n u x 进行定制,构建出一个基本适用于嵌入式设备的 l i n u x 系统,并将其作为进行进一步小型化研究的基础。 2 1u n u x 防火墙系统基本原理 l i n u x 可作为主机式防火墙,位于i n t e r n e t 与局域网边界。l i n u x 系统支 持多种防火墙程序,包括商用的和免费的。包过滤是一种内置于l i n u x 核心的防 火墙类型,工作在网络层,数据只有在防火墙规定允许的情况下才能发出去, 同时根据到达包的类型、源地址、目的地址和每个包中包含的端口进行过滤。 l i n u x 内核中已经包含有优秀的防火墙程序其对应的版本号和程序如下。 2 0 x :i p f w a d m 。 2 2 x - i p c h a i n s 2 4 x 以上:n e t f i l t e r i p t a b l e s 最新的l i n u x 内核集成了n e t f i l t e ri p 包过滤系统的防火墙程序乜1 。 该防火墙程序由n e t f i l t e r 和i p t a b l e s 两部份组成。 n e t f i l t e r 组件是内核的一部分,由一些信息包过滤表组成,这些表 包含了内核用来控制信息包过滤处理的规则集。 i p t a b l e s 组件是一种工具,也称为用户空间,用于插入、修改和除去 信息包过滤表中的规则。 防火墙按照用户设定的规则检查数据包,确定数据包是否可以进入,离开 或通过。用户需要根据网络的实际情况和对安全要求来设置规则。n e t f i l t e r 具有功能强大,成本低,扩展性强,性价比较高的特点 6 硕十学位论文第一二章l i n u x 裁减的研究实例一n e t f i l t e r 的文现 2 2 基于嵌入式l i n u x 的n e f f il t e r 防火墙设计概要 建立一个基于n e t f i l t e r 的嵌入式l i n u x 防火墙,即实现一个小型化的具 有防火墙功能的l i n u x 系统。构建嵌入式l i n u x 的关键,就是从应用程序的功 能出发确定m n u x 所要提供的服务。 我们构建的n e t f i l t e r 防火墙的主要功能主要有: 1 、建立i n t e r n e t 防火墙和基于状态的包过滤 2 、用n a t 和地址伪装共享上网 3 、用n a t 实现透明代理 要支持这些功能,l i n u x 必须向n e t f i l t e r 提供相应的服务。根据对 n e t f i l t e r 的分析,我们可以得出l i n u x 至少要对n e t f i l t e r 防火墙程序提供 以下的服务: 1 、硬件驱动支持:包括网卡和嵌入式设备 2 、内核网络功能的支持:包括t c p i p 协议的支持、以太网的支持等 3 、包过滤功能的支持 4 、n e t f i l t e r 的配置工具:i p t a b l e s 图2 - 1l i n u x 为n c t f i l t e r 防火墙提供的服务层次图 7 硕十学侥论文第_ 二章l i n u x 裁减的研究实例一n e t f i l t e r 的实现 我们构建的l i n u x 应该包含所有n e t f i l t e r 需要的服务,l i n u x 为 n e t f i l t e r 防火墙提供的服务如图2 一l 所示 嵌入式l i n u x 操作系统可以存储在一个磁盘、闪存或其它介质中。个小 的存储器常常存放着一个完整的操作系统系统,它大致由以下4 个部分组成1 : 1 、引导块:存放了c p u 上电后运行的第一个程序,一般是引导程序。 2 、内核:操作系统内核,应用程序的基础。 3 、初始化程序:完成系统初始化的程序和脚本。 4 、文件系统:根目录下的各个目录以及必要的文件。 我们分别构建这四个部分,并使之能为n e t f i l t e r 提供它的要求的服务。 为了缩减系统体积,将内核和文件系统都进行了压缩,存储在辅存中,启动后 再解压到r m n i s k 中。 嵌入式l i n u x 防火墙的四个组成部分工作的流程如图争2 所示。 加电,启动辅存m b r 上的 引导程序,进行初始化, 找到内核和文件系统位置 il 加馥内核和文件系统 上 内核启动,初始化外设, 启动网络服务 j 上 运行应用程序( n 硎- m 盯) 图2 - 2 嵌入式l i n u x 工作流程 通过对以上服务的分析,支持一个基于防火墙的l i n u x 系统需要以下具体 的服务支持: l 、引导块:在这里存放引导程序( 如l i n u xl o a d e r ,比g r a n du n i f i e d b o o t l o a d e r 简单而更适合于小系统) 。 2 、内核:重新编译内核,使内核具有网络功能、包过滤功能、网络设备 驱动支持;删除与防火墙功能无关的,系统运行也不需要的功能,节省内核体 积。基于n e t f i l t e r 的嵌入式l i n u x 内核结构如图2 - 3 所示。 3 、文件系统:构建系统启动所需要的基本文件和目录;构建实现网络功 能需要的程序和文件;构建n e t f i l t e r 应用程序;配置相关配置文件。 8 硕十学位论文 第_ 二章l i n u x 裁减的研究实例一n e t f i l t e r 的实现 ii 基奉网络支持 i 罄翟逐耍瑟觋 e x t 2 l 目 髓络协议 文件l 函滋瑟蕊蕊匿瑟 系统il 其它必要模块 j 矗曩嗣翻圈盔赣墨四 卜几五i 蔚i 翮 设备驱动支持 动 态 链 接 库 图2 - 3 基于嵌入式的n e t f i l t e r 的l i n u x 内核结构 2 3 嵌入式l i n u x 防火墙软件系统的实现 2 3 1 引导程序的创建 l i n u x 的引导过程和其它操作系统样从b i o s 开始。启动以后,启动盘的 m b r 中的b o o t 程序启动l i n u x 的内核。l i n u x 的b o o t 程序可以在l i l o 、s y s l i n u x 、 l o a d i n g 等程序中选择,这些程序的配置文件中设置了l i n u x 启动所需要的参 数,其中和嵌入式l i n u x 构建相关的重要参数有嘲: b o o t :启动磁盘设备名;启动分区的分区名。 i m a g e :内核的位置。 r o o t :根文件系统的位置。 i n i t r & 启动程序的目录。 1 除此之外还有一些系统启动相关提示、启动形式和启动口令的设置参数。 通过启动程序的引导,l i n u x 开始启动。内核载入内存以后开始检查硬件, 挂载文件系统。随后启动l i n u x 的第一个进程i n i t i n i t 查找并执行 e t c i n i t t a b 文件咖i n i t 程序按照e t c i n i t t a b 文件中的设置来执行 e t c r c 目录下相应的启动脚本。 e t c i n i t t a b 文件中设定了系统的各个运行级脚本,以及缺省的运行级。 当某一运行级启动时,此文件将启动运行e t e r c d r e 和s b i n u 【p d a t e 。 s b i n u p d a t e 用来清空、还原磁盘缓冲区。一旦运行级改变,e t c r c d r e 就 会启动或终止各类服务。 l i n u x 的运行级别有7 个,各个级别的说明以及系统需求关系如表2 - 1 所 示 9 硕+ 学位论文第_ 二章l i n u x 裁减的研究实例一n e t f i l t e r 的实现 表2 - 1l i n u x 的运行级别 运行级别功能一般应用必要性防火墙系统必要性 o关闭必要必要 l 单用户模式,用于系统管理必要必要 2 多用户模式,不允许使用网络由用户需求决定不必要 3多用户模式,允许使用网络由用户需求决定不必要 4 保留,给用户自定义模式一般不必要 不必要 5 多用户模式,允许使用网络,有图形化要求的不必要 图形模式嵌入式需要 6 重新引导一般必要必要 初始化工作完成以后,i n i t t a b 设置启动g e t t y 程序,实现用户的登陆。 g e t t y 程序将启动b i n l o g i n 程序,屏幕出现提示符由用户输入用户名登陆, 根据e t c p a s s w d 文件,检验用户输入的密码,登入用户默认的s h e l l 。用户退 出s h e l l 以后,i n i t 进程将重新运行g e t t y 程序嘲。 针对嵌入式系统的应用特殊性,我们可以对启动过程做一些改进。 1 、启动程序的选择 在嵌入式l i n u x 中,有内核和一个经过压缩的根文件系统。启动系统的启 动程序可以选择l i l o 或g r u b ,由于l i l o 更简单,对系统的要求较低,所以比 g r u b 更符合嵌入式系统的要求。 使用l i l o 程序将一些位置、大小等参数传递给内核,这些参数对初始化硬 件是必要的。选择使用启动程序的缺点是建造的系统更为复杂,占用的空间较 大,还需要创建一个独立的文件系统一内核文件系统,在其中传递内核和l i l o 需要的一些资料。 可以选择不使用启动程序,直接启动内核。而因为l i l o 可以通过脚本处理 网络和系统服务的初始化,我们在这里保留了l i l o 2 、启动级别的选择 防火墙只由系统管理员一人使用即可,那么我们可以只保留单用户模式, 使用运行级别0 、1 和6 。如果要供其它用户使用,则添加级别3 其它运行级别 的r c 目录下的启动程序可以删除。同时对i n i t t a b 文件进行相应的修改。 3 、启动参数修改 如果嵌入式l i n u x 的内核是从r a m d i s k 设备中启动,则需要对启动程序中 的参数进行一些相应的修改。如果使用l i l o 启动,修改l i l o c o n f 文件;如果 使用自启动,通过r d e v 命令设置内核启动的设备和启动的位置。 1 0 硕七学位论文第_ 二章l i n u x 裁减的研究实例- n e t f i l t e r 的实现 4 、安全性考虑 有些嵌入式系统由于不涉及到安全问题,在启动时为了节约系统空间屏蔽 了系统认证的g e t t y ,或者在l i l o 中直接调用b a s h 。而由于防火墙本身对于安 全性的要求较高,在这个实例中,我们并没有为了裁减体积而屏蔽认证的过程。 2 3 2 内核的创建 l i n u x 的内核完成进程调度,内存管理,虚拟文件系统,网络接口,进程 间通信等操作系统的基本功能。内核是整个操作系统的基础,其它的软件都运 行于内核之上膪1 。 l i n u x 开放源代码并提供了一套编译内核的工具,很方便完成配置和编译 内核的工作。编译内核的命令如下汹1 : c d u s r s r e l i n u x m a k ex c o n f i g( 配置内核) m a k ec l e a n( 清除以前编译留下的中间文件) m a k ed e p( 创建模块问的依赖关系) m a k ez i m a g e( 编译内核) 其中最关键的内容是进行内核的配置。 x c o n f i g 是l i n u x 内核配置的工具之一,方便有效的选择内核的选项,配 置出稳定、有效的模块化的l i n u x 内核。 针对嵌入式l i n u x 防火墙系统的应用特殊性,我们从功能分析出发配置系 统内核,其要点如下: l 、内核中不需要的功能模块都可以排除在内核之外。 2 、选择适合系统的文件系统:一个防火墙只需要一种适合的文件系统,多 余的文件支持不用编译进入内核当系统运行于r a m d i s k 中的时候选择c r a m f s 等适合的文件系统n 帕 3 、选择需要的硬件设备驱动:选择支持r a m n i s k 设备。对于一些特殊的嵌 入式设备,要下载该设备的驱动的源代码,给内核打上补丁,重新编译内核。 4 、根据2 2 节分析的内核功能配置网络功能。 硕十学位论文第- 二章l i n u x 裁减的研究实例- n e t f ilt e r 的实现 在配置过程中需要编译进内核的主要模块名层次如图2 - 4 所示。 i 。 c o n f i gi pn ft a r g e tl o g ic o n f i g _ n e t f i l t e r 2 ij o n i gi=p聂nf_ta弛roet_maxsquje冀rade_itconfig_ipn f w t a b l e si 赫“躺“”黼“鲻”翰”一。”“ 目c o w 刚u 一一蘸 岛习c o n f i gf i r e w a l l j ,; l 习c 洲h g i p n f f ,l t e r 雕 鞫c o n 腿p a c l ( e ti c o n f i gi p x 蘸 ; c o w a 。观一蘸 i c o n f t gi n e t 目c o n f i ga t a l k 隧 i ,i 竺竺竺:黪8 # _ # i 试勰0 盘0 如扎一w 盎t 一池“k 一 蠡毒嗣网卡驱动憋i c 咖,o 则邺盯匪 鹾互妻 f 一。e l l 11 塑坚i t i n e t w o r k i n go p t i 。n s i n e t w o r kd e v i c e 铷p p o r t 卜 t r a m d i s k 初始化支持 固 网络功能支持t c o n f i gn e t 黜n n d i s k 支持 图2 - 4l i n u x 防火墙的内核模块层次图 其具体功能说明如表2 - 2 所示。 在编译内核过程中可以不编译进内核的模块主要有以下几类: 1 、没有用的设备驱动。 2 、没有用的文件系统,包括网络文件系统。 3 、没有用的功能:如s o u n d ,s c s is u p p o r t ,p a r t i t i o nt y p e s ,k e r n e l h a c k i n g ,u s bs u p p o r t ,b l u e t o o t hs u p p o r t 等。 表2 - 2l i n u x 防火墙的内核模块功能 模块名功能 c o n f i g _ p a c k e t应用程序和程序直接使用某些网络设备 c o n f i g - f i 唧a l l支持防火墙 c o n f i g _ i n e t 支持t c p i p 协议 c o n f i gi p x 支持i p x 协议 c 0 n f i ga t a l k 支持a p p l e t a l kd d p 协议 c o n f i g _ n e t i ) e v i c e s提供对网络驱动程序的支持 c o n f i g ;n e t f i l t e r 允许计算机支持n e t f i l t e r 1 2 硕士学位论文第一二章l i n u x 裁减的研究实例一n e t f i l t e r 的实现 续表2 - 2 模块名功能 c o n f i g i p 受一i p t a b l e s 支持n e t f i l t e r i p t a b l e s c o n f i g i pn fm a t c h _ s t a t e支持有状态的防火墙的配置 c o n f i g i p 姆j i l t e r 提供一个基本的信息包过滤框架 c o n f i g i p n ft a r g e t _ r e j e c t用i c l 4 p 错误信息来回应接收到的数据包 c o n f i g i p n f c o n n t r a c i ( n a t 和地址伪装 c i f i g - i p _ - n f _ f t p提供针对f t p 连接进行连接跟踪的功能 c o n f i g i p 受一i r c i r c 支持模块,允许d c c 和n a t 、连接跟踪一起工作 c o n f i g - i p _ n f _ n a t 提供n a t 功能 c o n f i g _ i pn ft a r g e tl o g为i p t a b l e s 增加l o g 日志操作 c o n f i g i p 受3 a r g e t _ r a s o e r a d ew a s q u e 跳o e 伪装操作 对l i n u x 内核2 4 2 0 进行配置、编译、链接并压缩,得到内核映象 k e r n e l i m g 。 通过对内核的重新配置,缩减了内核映象的体积,原内核与新内核的体积 比较如表2 - 3 所示。 表2 - 3 原内核与新内核的体积比较 i内核体积压缩后的映象体积 l 原内核 3 0 m b1 1 船 i 新内核 1 0 鹏0 3 m b 2 3 3 创建r a m d i s k 文件系统映象 有了内核映象和启动程序,系统就有了启动内核的功能,而仅仅只是启动 内核是不够的,还需要可执行应用程序和读写文件,即需要文件系统。创建一 个完整的文件系统,包含l i n u x 需要的目录和文件,将其保存为一个文件系统 映象,并加以压缩,实现步骤如下:在开发主机中的一个目录r o o t f s 中保存 新系统的所有目录和文件;创建一个文件r o o t f s i m g 作为回环设备,将回环设 备挂载到m n t 目录下;拷贝r o o t f s 中所有的目录文件到m n t 下回环设备中; 卸载回环设备;压缩r o o t f s i m g 为r o o t f s g z 准备送入辅存。 r o o t f s 中目录和文件创建的具体步骤见2 4 节。 l i n u x 启动时,引导程序通过配置好的数据找到内核和文件系统映象的位 置,将其解压到r a m o i s k 中,然后将系统的控制权交给r a m o i s k 中的内核由 内核完成系统的初始化压缩过的文件系统映象应该包括以下内容: l 、文件系统基本目录结构 2 、必要的可执行二进制文件( 如s h e l l 和应用程序) 硕十学位论文第一二章l i n u x 裁减的研究实例一n e t f i l t e r 的实现 3 、配置文件( 如r e s y s i n i t ) 4 、设备文件 5 、程序运行需要的函数库 要构建一个小型的l i n u x 文件系统,就需要决定文件系统中哪些部分要保 留,哪些部分可以裁减。首先应该保留那些保证系统运行的最基本的文件和目 录;再通过对系统功能的分析,决定哪些模块是可以裁减的。 一个最小的文件系统必须包括以下的内容:程序函数库、库函数文件的链 接、b i n s h ( s h e l1 ) 、最基本的设备文件。 以上的文件目录组成的最基本的文件系统只能运行s h e l l ,不能完成其它 任何的应用程序。要完成一些基本的功能还需要以下的一些文件:i n i t 程序、 系统启动设置、基本的应用程序、设备文件、显示系统信息的虚拟文件系统、 其它文件系统挂载目录、系统启动时执行的脚本、压缩工具等。 在建立r a m d i s k 映象的过程中,需要使用回环设备。回环设备可以将一个 固定大小的文件作为l i n u x 的一个虚拟设备,在该设备中可以建立映象文件。 在安装好的l i n u x 上创建一个子目录r o o t f s ,建立基本目录拷贝基本文件。 创建文件系统映像的脚本如下。 # ! b i n s h d di f = d e v z e r oo f = r o o t f s i m gb s = l kc o u n t = 4 0 0 m k f s m i n i x cr o o t f s i m g m o u n t ol o o p tm i n i xr o o t f s i m g m n t c p 一8 vr o o t f s * m n t u m o u n t r o t g z i p v 9 一cr o o t f s i m g r o o t f s g z 得到了一个压缩了的映象文件r o o t f s g z 。 嵌入式系统在功能相同的情况下越小就越有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论