收藏 分享(赏)

嵌入式ppt第六章.ppt

上传人:bubibi 文档编号:20014200 上传时间:2023-12-02 格式:PPT 页数:66 大小:1.59MB
下载 相关 举报
嵌入式ppt第六章.ppt_第1页
第1页 / 共66页
嵌入式ppt第六章.ppt_第2页
第2页 / 共66页
嵌入式ppt第六章.ppt_第3页
第3页 / 共66页
嵌入式ppt第六章.ppt_第4页
第4页 / 共66页
嵌入式ppt第六章.ppt_第5页
第5页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第第6章章 Linux文件系统文件系统目目 录录 5.1 5.1 ARM-LinuxARM-Linux概述概述5.2 5.2 ARM-LinuxARM-Linux进程管理进程管理5.3 5.3 ARM-LinuxARM-Linux内存管理内存管理5.4 5.4 ARM-LinuxARM-Linux模块模块5.5 5.5 ARM-LinuxARM-Linux中断管理中断管理5.6 5.6 ARM-LinuxARM-Linux系统调用系统调用文件系统是操作系统用于确认磁盘或分区上的文件的方法和数据结构。文件系统是负责存取和管理文件信息的机构,用于对数据、文件以及设备的存取控制,它提供对文件和目录的

2、分层组织形式、数据缓冲以及对文件存取权限的控制功能。文件系统具有以下主要功能:1.对文件存储设备进行管理,分别记录空闲区和被占用区,以便于用户创建、修改以及删除文件时对空间的操作。2.对文件和目录的按名访问、分层组织功能。3.创建、删除及修改文件功能。4.数据保护功能。5.文件共享功能 Linux文件系统概述文件系统概述Part One6.16.1为了支持多种不同的文件系统,采用了虚拟文件系统VFS(VirtualFilesystem)技术。虚拟文件系统是对多多种实际文件系统的共有功能的抽象种实际文件系统的共有功能的抽象,它屏蔽了各种不同屏蔽了各种不同文件系统在实现细节上的差异文件系统在实现细

3、节上的差异,为用户程序提供了统一的、抽象的、标准的接口以便对文件系统进行访问,如打开,读,写等操作。虚拟文件系统VFS确保了对所有文件的访问方式都是完全相同的。虚拟文件系统虚拟文件系统VFS VFS 图6-1VFS的子模块结构图(1)Device Drivers,设备驱动用于控制所有的外部设备及控制器。由于存在大量不能相互兼容的硬件设备(特别是嵌入式产品),所以也必须有众多的设备驱动与之匹配。值得注意的是,Linux内核中将近一半的源码都是设备驱动。(2)Device Independent Interface,该模块定义了描述硬件设备的统一方式(统一设备模型),所有的设备驱动都遵守这个规则,

4、同时可以用一致的形式向上提供接口。这样做可以有效降低开发难度。(3)Logical Systems逻辑文件系统,每一种文件系统都会对应一个逻辑文件系统,它会实现具体的文件系统逻辑。(4)System Independent Interface,该模块主要面向块设备和字符设备,负责以统一的接口表示硬件设备和逻辑文件系统,这样上层软件就不再关心具体的硬件形态了。(5)System Call Interface,系统调用接口,向用户空间提供访问文件系统和硬件设备的统一的接口。VFS是底层文件系统的主要组件(接口)。这个组件导出一组接口,然后将它们抽象到行为可能差异很大的各个文件系统。VFS具有两个针

5、对文件系统对象的缓存:inode索引节点对象和dentry目录项对象,它们缓存最近使用过的文件系统对象。每个文件系统实现(如 ext2、JFFS2等等)可以导出一组通用接口供 VFS 使用。缓冲区缓存会缓存文件系统和相关块设备之间的请求。综合看来,Linux虚拟文件系统采用了面向对象设计思想,文件系统中定义的VFS相当于面向对象系统中的抽象基类,从它出发可以派生出不同的子类,以支持多种具体文件系统,但从效率考虑内核纯粹使用C语言编程,故没有直接利用面向对象的语义。Ext2文件系统格式文件系统格式 Part Two6.26.26.2.1 Ext2文件系统文件系统TheSecondExtended

6、FileSystem(ext2)文件系统是Linux系统中的标准文件系统,主要包括普通文件、目录文件、特殊文件和符号链接文件。Ext2文件系统是通过对Minix的文件系统进行扩展而得到的,其存取文件的性能良好,可以管理特大磁盘分区,文件系统最大可达4TB。早期Linux都使用ext2文件系统。在ext2文件系统中,文件由包含有文件所有信息的节点inode进行唯一标识。Ext2文件系统采用三级间接块来存储数据块指针,并以块(默认为1KB)为单位分配空间。在ext2系统中,所有元数据结构的大小均基于“块”,而不是“扇区”。块的大小随文件系统的大小而有所不同。而一定数量的块又组成一个块组,每个块组的

7、起始部分有多种描述该块组各种属性的元数据结构。每个块组依次包括超级块、块组描述符、块位图和节点inode位图、inode表及数据块区。1 超级块超级块每个ext2文件系统都必须包含一个超级块,其中存储了该文件系统的大量基本信息,如块的大小、每块组中包含的块数等。同时系统会对超级块进行备份,备份被存放在块组的第一个块中。超级块的起始位置为其所在分区的第1024个字节,占用1KB的空间,2 块组描述符块组描述符一个块组描述符用以描述一个块组的属性。块组描述符组由若干块组描述符组成,描述了文件系统中所有块组的属性,存放于超级块所在块的下一个块中。3 块块位图位图和节点和节点inode位图位图块位图和

8、inode位图的每一位分别指出块组中对应的哪个块或inode是否被使用。:5 数据块数据块数据块中存放文件的内容,包括目录表、扩展属性、符号链接等4 节点节点inode表表节点inode表用于跟踪定位每个文件,包括位置、大小等,不包括文件名。一个块组只有一个节点inode表。6.2.2 目录结构目录结构 在ext2文件系统中,目录是作为文件存储的。根目录总是在inode表的第二项,而其子目录则在根目录文件的内容中定义。目录项在include/linux/ext2_fs.h文件中定义,其结构如下:structext2_dir_entry_2_le32inode;/*Inodenumber*/_l

9、e16rec_len;/*Directoryentrylength*/_u8 name_len;/*Namelength*/_u8 file_type;charnameEXT2_NAME_LEN;/*Filename*/;EXT3和和EXT4文件系统文件系统Part Three6.36.36.3.1 EXT3文件系统文件系统EXT3是第三代扩展文件系统(Thirdextendedfilesystem),EXT3是在EXT2基础上增加日志形成的一个日志文件系统,常用于Linux操作系统。日志文件系统最大的特点是会将整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回溯追踪。除开日志文

10、件系统所具有的优点,Ext3的特点还主要有:(1)ext3文件系统在非正常关机状况下,系统无需检查文件系统,而且ext3的恢复时间也极短。(2)ext3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。(3)ext3文件系统可以不经任何更改,而直接加载成为ext2文件系统。由ext2文件系统转换成ext3文件系统也非常容易。(4)3种日志模式可选:日记、顺序、回写。可适应不同场合对日志模式的要求。(5)便于移植,无论是硬件体系或是内核修改,其移植工作均较容易。6.3.2 EXT4文件系文件系统第四代扩展文件系统EXT4(Fourthextendedfilesystem)是

11、Linux系统下的日志文件系统,是ext3文件系统的后继版本。2008年12月25日,LinuxKernel2.6.28的正式版本发布。随着这一新内核的发布,Ext4文件系统也结束实验期,成为稳定版。Ext4文件系统的特点主要包括:1.Ext4的文件系统容量达到1EB,而文件容量则达到16TB;2.Ext4理论上支持无限数量的子目录;3.Ext4文件系统具有64位空间记录块数量;4.Ext4在文件系统层面实现了持久预分配并提供相应的API,比应用软件自己实现更有效率;5.Ext4支持更大的i-节点和支持快速扩展属性和i-节点保留;6.Ext4给日志数据添加了校验功能,日志校验功能可以很方便地判

12、断日志数据是否损坏;7.Ext4支持在线碎片整理,并将提供e4defrag工具进行个别文件或整个文件系统的碎片整理。嵌入式文件系统嵌入式文件系统JFFS2Part Foue6.46.46.4.1 嵌入式文件系统嵌入式文件系统嵌入式文件系统是指嵌入式系统中实现文件存取、管理等功能的模块,这些模块提供一系列文件输入输出等文件管理功能,为嵌入式系统和设备提供文件系统支持。在嵌入式系统中,文件系统是嵌入式系统的一个组成模块。它是作为系统的一个可加载选项提供给用户,由用户决定是否需要加载它。嵌入式文件系统具有结构紧凑、使用简单便捷、安全可靠及支持多种存储设备、可伸缩、可剪裁、可移植等特点。主流的嵌入式操

13、作系统的文件系统QNX提供多种资源管理器,包括各种文件系统和设备管理,支持多个文件系统同时运行;包括提供完全的POSIX以及UNIX语法的文件系统,支持多种闪存设备的嵌入式文件系统,支持对多种文件服务器WINDOWS、LANManager等的透明访问的SMB文件系统、FAT文件系统、CD一ROM文件系统等,并支持多种外部设备。QNXVxWorks的文件系统提供的组件一FFS“快速文件系统”非常适合于实时系统的应用。它包括几种支持使用块设备(如磁盘)的本地文件系统,这些设备都使用一个标准的接口从而使得文件系统能够被灵活的在设备驱动程序上移植。另外,也支持SCSI磁带设备的本地文件系统。VXWOR

14、KS的I/O的体系结构甚至还支持一个单独的从系统上同时并存几个不同的文件系统,支持四种文件系统FAT、RT11FS、RAWFS、TAPES。VxWorksYaffs(YetAnotherFlashFileSystem)/yaffs2是专为嵌入式系统使用NAND型闪存而设计的日志型文件系统。速度快,挂载时间很短,对内存的占用较小。另外它还是跨平台的文件系统,除了Linux和eCos,还支持WinCE,pSOS和ThreadX等。Yaffs/yaffs2自带NAND芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD与VFS,直接对文件系统操作。当然,ya

15、ffs也可与MTD驱动程序配合使用。yaffs与yaffs2的主要区别在于,前者仅支持小页(512Bytes)NAND闪存,后者则可支持大页(2KB)NAND闪存。同时,yaffs2在内存空间占用、垃圾回收速度、读/写速度等方面均有大幅提升。Yaffs/yaffs2Cramfs(CompressedROMFileSystem)是Linux的创始人LinusTorvalds参与开发的一种只读的压缩文件系统。在cramfs文件系统中,每一页(4KB)被单独压缩,可以随机页访问,其压缩比高达2:1,为嵌入式系统节省大量的Flash存储空间,使系统可通过更低容量的FLASH存储相同的文件,从而降低系统

16、成本。Cramfs网络文件系统NFS(NetworkFileSystem)是由Sun开发并发展起来的一项在不同机器、不同操作系统之间通过网络共享文件的技术。在嵌入式Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。NFS图6-2嵌入式Linux文件系统框架Nor Flash通常容量较小,其主要特点是程序代码可以直接在Flash 内运行。Nor Flash 具有RAM 接口,易于访问,缺点是擦除电路复杂,写速度和擦除速度都比较慢,最大擦写次数约10万次,典型的块大小是128kB。Nand Flash通常容量较大,具

17、有很高的存储密度,从而降低了单位价格。Nand Flash 的块尺寸较小,典型大小为8kB,擦除速度快,使用寿命也更长,最大擦写次数可以达到100 万次,但是其访问接口是复杂的I/O 口,并且坏块和位反转现象较多,对驱动程序的要求较高。一般结论:一般结论:由于由于Nor Flash和和Nand Flash各具特色,各具特色,因此它们的因此它们的用途也各不相同,用途也各不相同,Nor Flash 一般用来存储体积较小的代码,一般用来存储体积较小的代码,而而Nand Flash 则用来存放大体积的数据。则用来存放大体积的数据。NorFlash和NandFlash的对比为了延长Flash 的整体寿命

18、需要均匀地使用各个块,这就需要磨损均衡的功能;为了提高Flash 存储器的利用率,还应该有对存储空间的碎片收集功能;在嵌入式系统中,要考虑出现系统意外掉电的情况,所以文件系统还应该有掉电保护的功能,保证系统在出现意外掉电时也不会丢失数据。因此在因此在Flash 存储设备上,目前主要采用了专门存储设备上,目前主要采用了专门针对针对Flash 存储器的要求而设计的存储器的要求而设计的JFFS26.4.2 JFFS2嵌入式文件系统嵌入式文件系统 1.JFFS2 文件系统简介文件系统简介JFFS(JournalingFlashFileSystem)是瑞典的AxisCommunications公司专门针

19、对嵌入式系统中的Flash存储器的特性而设计的一种日志文件系统。Redhat公司的DavidWoodhouse在JFFS的基础上进行了改进,从而发布了JFFS2(JournalingFlashFileSystemVersion2)。和JFFS相比,JFFS2 支持更多节点类型,提高了磨损均衡和碎片收集的能力,增加了对硬链接的支持。JFFS2 还增加了数据压缩功能,这更利于在容量较小的Flash 中使用。和传统的Linux 文件系统如ext2 相比,JFFS2 处理擦除和读写操作的效率更高,并且具有完善的掉电保护功能,使存储的数据更加安全。2JFFS2 文件系统有关原理文件系统有关原理图6-3J

20、FFS文件系统层次JFFS2在Flash上只存储两种类型的数据实体,分别为用于描述数据节点的jffs2_raw_inode和描述目录项jffs2_raw_dirent。Jffs2_raw_dirent主要包括文件名、节点ino号、父节点ino号、版本号、校验码等信息,它用来形成整个文件系统的层次目录结构。Jffs2_raw_inode主要包括文件ino号、版本号、访问权限、修改时间、本节点所包含的数据文件中的起始位置及本节点所包含的数据大小等信息,它用来管理文件的所有数据。一个目录文件由多个jffs2_raw_dirent组成。而普通文件,符号链接文件,设备文件,FIFO文件等都由一个或多个j

21、ffs2_raw_inode数据实体组成。JFFS2的主要设计思想,包括JFFS2的操作实现方法、垃圾收集机制和平均磨损技术。(1)操作实现当进行写入操作时,在块还未被填满之前,仍然按顺序进行写操作,系统从free_list取得一个新块,而且从新块的开始部分不断地进行写操作,一旦free_list大小不够时,系统将会触发“碎片收集”功能回收废弃节点。JFFS2的碎片收集技术与JFFS有很多类似的地方,但JFFS2对JFFS的碎片收集技术做了一些改进:如在JFFS2中,所有的存储节点都不可以跨越Flash的块界限,这样就可以在回收空间时按照Flash的各个块为单位进行选择,将最应擦除的块擦除之后

22、作为新的空闲块,这样可以提高效率与利用率。(2)垃圾收集(3)数据压缩JFFS2提供了数据压缩技术,数据存入Flash之前,JFFS2会自动对其进行压缩。目前,内嵌JFFS2的压缩算法很多,最常见的是zlib算法,这种算法仅对ASCII和二进制数据文件进行压缩。在嵌入式文件系统中引入数据压缩技术,使其数据能够得到最大限度的压缩,可以提高资源的利用率,有利于提高性能和节省开发成本。4)平均磨损由前文可知,Flash有NOR和NAND两种类型,他们在使用寿命方面存在很大的差异。用擦除循环周期度量来看,NOR的寿命限定每块大约可擦除10万次,而NAND的每块擦除次数约为100万次。为了提高Flash

23、芯片的使用寿命,用户希望擦除循环周期在Flash上均衡分布,这种处理技术称为“平均磨损”。在JFFS中,碎片收集总是对文件系统队列头所指节点的块进行回收。如果该块填满了数据就将该数据后移,这样该块就成为空闲块。通过这种处理方式可以保证Flash中每块的擦除次数相同,从而提高了整个Flash芯片的使用寿命。(5)断电保护技术JFFS2是一个稳定性高,一致性强的文件系统,不论电源以何种方式在哪个时刻停止供电,JFFS2都能保持其完整性,即不需要为JFFS2配备像Ext2拥有的那些文件系统。断电保护技术的实现依赖于JFFS2的日志式存储结构,当系统遭受不正常断电后重新启动时,JFFS2自动将系统恢复

24、到断电前最后一个稳定状态,由于省去了启动时的检查工作,所以JFFS2的启动速度相当快。3.JFFS2的不足之处的不足之处(1)挂载时间过长。JFFS2的挂载过程需要对闪存从头到尾的扫描,这个过程比较花费时间。(2)磨损平衡具有较大随意性。JFFS2对磨损平衡是用概率的方法来解决的,这很难保证磨损平衡的确定性。在某些情况下,可能造成对擦写块不必要的擦写操作;在某些情况下,又会引起对磨损平衡调整的不及时。(3)扩展性很差。首先,闪存越大,闪存上节点数目越多挂载时间就越长。其次,虽然JFFS2尽可能的减少内存的占用,但实际上对内存的占用量是同i节点数和闪存上的节点数成正比的。YAFFS与与YAFSS

25、2文件系统简介文件系统简介Part Five6.56.56.5.1 YAFFS文件系统文件系统YAFFS(YetAnotherFlashFileSystem)是第一个专门为NANDFlash存储器设计的嵌入式文件系统,适用于大容量的存储设备。YAFFS遵守GPL(GeneralPublicLicense)协议并且可以免费使用。YAFFS是基于日志的文件系统,提供磨损平衡和掉电恢复的健壮性。它还为大容量的Flash芯片进行了优化设计,针对启动时间和RAM的使用做了改进。YAFFS适用于大容量的存储设备,已经在Linux和WinCE商业产品中使用。YAFFS中,文件是以固定大小的数据块进行存储的,

26、块的大小可以是512字节、1024字节或者2048字节。这种实现取决于它能够将一个数据块头和每个数据块关联起来。每个文件都有一个数据块头与之相对应,数据块头中保存了ECC(纠错码)和文件系统的组织信息,用于错误检测和坏块处理。YAFFS充分考虑了NANDFlash的特点,YAFFS把这个数据块头存储在Flash的16字节备用空间中。当文件系统被挂载时,只须扫描存储器的备用空间就能将文件系统信息读入内存,并且驻留在内存中,不仅加快了文件系统的加载速度,也提高了文件的访问速度,但是增加了内存的消耗。6.5.2 YAFFS2 文件系统简介文件系统简介和YAFFS文件系统一样,YAFFS2用yaffs

27、_objectHeader(文件头)结构统一描述了文件系统中的文件、目录、链接、设备文件等,其中包括了这个文件的类型、模式、所有者、创建时间、父目录的ID等。YAFFS2文件系统分区内的所有文件用objectID来惟一标识,每个文件头存放在NandFLASH某页的数据区内,而文件的数据被组织成固定的大小(512B或2kB)并存放在某页中。NandFLASH每页的oob区存放一些文件系统组织信息(如文件ID、页ID、有效字节数等)。YAFFS2文件组织结构及其存储组织与YAFFS基本相同,YAFFS2的两点重要改进(1)垃圾回收策略(2)checkdata的引入由于YAFFS在安装时要扫描整个N

28、andFLASH的oob区得到设备上所有文件的信息,这可能使他的安装时间比其他使用超级块的文件系统慢。针对此问题,YAFFS2提供一种机制解决这个问题,即在卸载YAFFS2或执行yaffs_sync_fs(Linux2.6内核后使用)时将内存中的一些结构组织成相应的checkdata的形式写入NandFLASH。这样,下次安装时只要读出这些内容所在块的oob区,而不需读所有的块便在内存中可完整建立相应数据结构,从而完成扫描。根文件系统根文件系统Part Six6.66.66.6.1 根文件系统概述根文件系统概述根文件系统是一种特殊的文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,

29、它还是内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本和服务加载到内存中去运行。Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。成功之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。在 Linux 中将一个文件系统与一个存储设备关联起来的过程称为挂载(mount)。使用 mount 命令将一个文件系统附着到当前文件系统层次结构中。在执行挂装时,要提供文件系统类型、文件系统和一个挂装点。根文件系统被挂载到根目

30、录下“/”上后,在根目录下就有根文件系统的各个目录和文件:/bin、/sbin、/mnt等,再将其他分区挂接到/mnt目录上,/mnt目录下就有这个分区的各个目录和文件。Linux根文件系统中一般有如下的几个目录:(1)/bin目录该目录下的命令可以被root与一般账号所使用,由于这些命令在挂接其它文件系统之前就可以使用,所以/bin目录必须和根文件系统在同一个分区中。/bin目录下常用的命令有:cat、chgrp、chmod、cp、ls、sh、kill、mount、umount、mkdir、test等。其中“”命令就是test命令,在利用Busybox制作根文件系统时,在生成的bin目录下,

31、可以看到一些可执行的文件,也就是可用的一些命令。(2)/sbin目录该目录下存放系统命令,即只有系统管理员能够使用的命令,系统命令还可以存放在/usr/sbin,/usr/local/sbin目录下,/sbin目录中存放的是基本的系统命令,它们用于启动系统和修复系统等,与/bin目录相似,在挂接其他文件系统之前就可以使用/sbin,所以/sbin目录必须和根文件系统在同一个分区中。/sbin目录下常用的命令有:shutdown、reboot、fdisk、fsck、init等,本地用户自己安装的系统命令放在/usr/local/sbin目录下。(3)/dev目录该目录下存放的是设备与设备接口的文

32、件,设备文件是Linux中特有的文件类型,在Linux系统下,以文件的方式访问各种设备,即通过读写某个设备文件操作某个具体硬件。比如通过dev/ttySAC0文件可以操作串口0,通过/dev/mtdblock1可以访问MTD设备的第2个分区。比较重要的文件有/dev/null,/dev/zero,/dev/tty,/dev/lp*等。(4)/etc目录该目录下存放着系统主要的配置文件,例如人员的账号密码文件、各种服务的其实文件等。一般来说,此目录的各文件属性是可以让一般用户查阅的,但是只有root有权限修改。对于PC上的Linux系统,/etc目录下的文件和目录非常多,这些目录文件是可选的,它

33、们依赖于系统中所拥有的应用程序,依赖于这些程序是否需要配置文件。在嵌入式系统中,这些内容可以大为精减。(5)/lib目录该目录下存放共享库和可加载驱动程序,共享库用于启动系统。(6)/home目录系统默认的用户文件夹,它是可选的,对于每个普通用户,在/home目录下都有一个以用户名命名的子目录,里面存放用户相关的配置文件。(7)/root目录系统管理员(root)的主文件夹,即是根用户的目录,与此对应,普通用户的目录是/home下的某个子目录。(8)/usr目录/usr目录的内容可以存在另一个分区中,在系统启动后再挂接到根文件系统中的/usr目录下。里面存放的是共享、只读的程序和数据,这表明/

34、usr目录下的内容可以在多个主机间共享,这些主要也符合文件系统层次标准FHS标准的。文件系统层次标准FHS(FilesystemHierarchyStandard,FHS),它规范了在根目录“/”下面各个主要的目录应该放置什么样的文件。/usr目录在嵌入式中可以精减。(9)/var目录与/usr目录相反,/var目录中存放可变的数据,比如spool目录(mail,news),log文件,临时文件。(10)/proc目录这是一个空目录,常作为proc文件系统的挂接点,proc文件系统是个虚拟的文件系统,它没有实际的存储设备,里面的目录,文件都是由内核临时生成的,用来表示系统的运行状态,也可以操作

35、其中的文件控制系统。(11)/mnt目录用于临时挂载某个文件系统的挂接点,通常是空目录,也可以在里面创建一引起空的子目录,比如/mnt/cdram/mnt/hda1。用来临时挂载光盘、移动存储设备等。(12)/tmp目录用于存放临时文件,通常是空目录,一些需要生成临时文件的程序用到的/tmp目录下,所以/tmp目录必须存在并可以访问。对于嵌入式Linux系统的根文件系统来说,一般可能没有上面所列出的那么复杂,比如嵌入式系统通常都不是针对多用户的,所以/home这个目录在一般嵌入式Linux中可能就很少用到。一般说来,只有/bin,/dev,/etc,/lib,/proc,/var,/usr这些

36、需要的,而其他都是可选的。6.6.2 根文件系统的制作工具根文件系统的制作工具-Busybox根文件系统的制作就是生成包含上述各种目录和文件的文件系统的过程,可以通过直接拷贝宿主机上交叉编译器处的文件来制作根文件系统,但是这种方法制作的根文件系统一般过于庞大。也可以通过一些工具如Busybox来制作根文件系统,用Busybox制作的根文件系统可以做到短小精悍并且运行效率较高。Busybox的源码可以从官方网站下载,然后解压源码包进行配置安装,操作如下:#tar-xjvf busybox-1.24.1.tar.bz2#cd busybox-1.24.1#make menuconfig#make#

37、make install6.6.3 YAFFS2 文件系统的创建文件系统的创建创建JFFS2根文件系统的步骤如下:(1)创建根目录myrootfs,把busybox生成的三个文件复制到myrootfs目录下,并在此目录下分别建立dev,lib,mnt,etc,sys,proc,usr,home,tmp,var等目录(只有dev,lib,sys,usr,etc是不可或缺的,其他的目录可根据需要选择)。在etc目录下建立init.d目录。(2)建立系统配置文件inittab,fstab,rcS,其中inittab,fstab放在etc目录下,rcS放在/etc/init.d目录中。(3)创建必须的

38、设备节点,该文件必须在/etc目录下创建。(4)如果Busybox采用动态链接的方式编译,还需要把busybox所需要的动态库:libcrypt.so.1,libc.so.6,ldlinux.so.2放到lib目录中。为了节约嵌入式设备的FLASH空间,通常会采用动态链接方式,而不采用静态链接方式。如目前国内较有名气的厂商“友善之臂”官方提供了动态链接库的下载,直接将库文件拷贝至rootfs/lib目录下即可:#cp-a/tmp/Friendly ARM-lib/*.so.*$ROOTFS/lib 另外,在某些版本的linux系统中还需要为bin/busybox加上SUID和SGID特殊权限,否则某些命令如passwd等命令会出现权限问题:#chmod 675$ROOTFS/bin/busybox(5)改变rcS的属性。(6)上面已经建立了根文件目录myrootfs,然后使用mkyaffs2image-128M工具,把目标文件系统目录制作成yaffs2格式的映像文件,当它被烧写入NandFlash中启动时,整个根目录将会以yaffs2文件系统格式存在,这里假定缺省的Linux内核已经支持该文件系统,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 网络技术 > 前端技术

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报