第5章-嵌入式Linux根文件系统构造要点课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第5章-嵌入式Linux根文件系统构造要点课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux 文件系统 构造 要点 课件
- 资源描述:
-
1、第第5章嵌入式章嵌入式Linux根文件系统构造根文件系统构造岳希岳希2主要内容v根文件系统根文件系统vWindowsWindows文件系统类型文件系统类型vLinuxLinux文件系统类型文件系统类型vBusyBoxv根文件系统目录结构根文件系统目录结构v查看文件查看文件v根文件系统制作要点根文件系统制作要点v根文件系统制作实例根文件系统制作实例v制作根文件系统镜像制作根文件系统镜像3根文件系统根文件系统v理论上说一个嵌入式设备如果内核能够运行起来,理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的。且不需要运行用户进程的话,是不需要文件系统的。v文件系统
2、简单的说就是一种目录结构,由于文件系统简单的说就是一种目录结构,由于 linux操作系统的设备在系统中是以文件的形式存在,将操作系统的设备在系统中是以文件的形式存在,将这些文件进行分类管理以及提供和内核交互的接口,这些文件进行分类管理以及提供和内核交互的接口,就形成一定的目录结构也就是文件系统,文件系统就形成一定的目录结构也就是文件系统,文件系统是为用户反映系统的一种形式,为用户提供一个检是为用户反映系统的一种形式,为用户提供一个检测控制系统的接口。测控制系统的接口。4根文件系统根文件系统vLinux内核在系统启动期间进行的最后操作内核在系统启动期间进行的最后操作之一就是安装根文件系统。之一就
3、是安装根文件系统。v根文件系统一直都是所有类根文件系统一直都是所有类UNIX系统不可或系统不可或缺的组件缺的组件v根文件系统的顶层目录各有其特殊的用法和根文件系统的顶层目录各有其特殊的用法和目的。目的。5根文件系统根文件系统v根文件系统和普通的文件系统有什么区别呢?根文件系统和普通的文件系统有什么区别呢?v由于根文件系统是内核启动时挂载的第一个由于根文件系统是内核启动时挂载的第一个文件系统,那么根文件系统就要包括文件系统,那么根文件系统就要包括Linux启动时所必须的目录和关键性的文件启动时所必须的目录和关键性的文件例如例如Linux启动时都需要有启动时都需要有init目录下的相关文件目录下的
4、相关文件例如在例如在Linux挂载分区时挂载分区时Linux一定会找一定会找/etc/fstab这个挂载文件这个挂载文件6根文件系统根文件系统v若若Linux系统不能从指定设备上挂载根文件系统,系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。在不同的文件系统。Windows支持少量文件系统:支持少量文件系统: FAT16、 FAT32、NTFSLinux支持多种文件系统,包括支持多种文件系统,包括ext2、ext3
5、、vfat、ntfs、jffs、cramfs、ramfs、romfs、yaffs、 ramdisk等等 v为了对各类文件系统进行统一管理,为了对各类文件系统进行统一管理,Linux引入了引入了虚拟文件系统虚拟文件系统VFS(Virtual File System),为各类,为各类文件系统提供一个统一的操作界面和应用编程接口文件系统提供一个统一的操作界面和应用编程接口 7根文件系统根文件系统8根文件系统根文件系统v不同的文件系统类型有不同的特点,因而根据存储不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。设备的硬件特性、系统需求等有不同的应用场合。v基于基
6、于FLASH的文件系统的文件系统 jffs2、yaffs、cramfs、romfs v基于基于RAM的文件系统的文件系统Ramdisk、ramfs/tmpfsv网络文件系统网络文件系统NFS9根文件系统根文件系统vFlash作为嵌入式系统的主要存储媒介,有其自身作为嵌入式系统的主要存储媒介,有其自身的特性。的特性。Flash的写入操作只能把对应位置的的写入操作只能把对应位置的1修改修改为为0,而不能把,而不能把0修改为修改为1(擦擦 除除Flash就是把对应存就是把对应存储块的内容恢复为储块的内容恢复为1),因此,一般情况下,向,因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区
7、间,写入内容时,需要先擦除对应的存储区间,这种擦除是以块这种擦除是以块(block)为为 单位进行的。单位进行的。10WindowsWindows文件系统类型文件系统类型vFATFAT文件系统主要的优点就是它可以允许多种操文件系统主要的优点就是它可以允许多种操作系统访问,如作系统访问,如MS-DOS、Windows9x、Windows NT和和OS/2等。这一文件系统在使用时等。这一文件系统在使用时遵循遵循8.3命名规则命名规则(即文件名最多为即文件名最多为8个字符,扩展个字符,扩展名为名为3个字符个字符)。FAT32与与FAT16区别区别FAT32与与FAT16相比,它的一个簇的大小要相比,
8、它的一个簇的大小要比比FAT16小很多,所以可以节省磁盘空间。小很多,所以可以节省磁盘空间。11WindowsWindows文件系统类型文件系统类型vNTFSNTFS是是Windows 2000之后的高级文件系统,之后的高级文件系统,它支持文件系统故障恢复,尤其是大存储媒体、它支持文件系统故障恢复,尤其是大存储媒体、长文件名。长文件名。NTFS只能被只能被Windows 所识别,虽然它可以读取所识别,虽然它可以读取FAT文件系统,但其文件却不能被文件系统,但其文件却不能被FAT文件系统文件系统所存取。所存取。采用了更小的簇采用了更小的簇文件读取速度更高效文件读取速度更高效磁盘自我修复功能。磁盘
9、自我修复功能。12WindowsWindows文件系统类型文件系统类型vNTFSNTFS是专用于是专用于Windows NT/2000操作系统的高操作系统的高级文件系统,它支持文件系统故障恢复,尤其是级文件系统,它支持文件系统故障恢复,尤其是大存储媒体、长文件名。大存储媒体、长文件名。NTFS的主要弱点是它只能被的主要弱点是它只能被Windows NT/2000所识别,虽然它可以读取所识别,虽然它可以读取FAT文件系统和文件系统和HPFS文件系统的文件,但其文件却不能被文件系统的文件,但其文件却不能被FAT文件系文件系统和统和HPFS文件系统所存取,因此兼容性方面比文件系统所存取,因此兼容性方
10、面比较成问题。较成问题。13LinuxLinux文件系统类型文件系统类型vJFFS2文件系统文件系统JFFS2,日志闪存文件系统版本,日志闪存文件系统版本2 (Journalling Flash FileSystem v2)最早是由瑞典最早是由瑞典Axis Communications公司基于公司基于Linux2.0的内核为嵌入式系统开发的文件系统。的内核为嵌入式系统开发的文件系统。JFFS2是是RedHat公司基于公司基于JFFS开发的闪存文件开发的闪存文件系统,最初是针对系统,最初是针对RedHat公司的嵌入式产品公司的嵌入式产品eCos开发的嵌入式文件系统,所以开发的嵌入式文件系统,所以
11、JFFS2也可也可以用在以用在Linux, uCLinux中。中。14LinuxLinux文件系统类型文件系统类型vJFFS2文件系统文件系统主要用于主要用于NOR型闪存,基于型闪存,基于MTD驱动层,特点是:可读驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃并提供了崩溃/掉电安全保护,提供掉电安全保护,提供“写平衡写平衡”支持等。支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使的关系而使jffs2的运行速度大大放慢。的运行速度大大放慢。jff
12、s不适合用于不适合用于NAND闪存主要是因为闪存主要是因为NAND闪存的容量闪存的容量一般较大,这样导致一般较大,这样导致jffs为维护日志节点所占用的内存空为维护日志节点所占用的内存空间迅速增大,另外,间迅速增大,另外,jffs文件系统在挂载时需要扫描整个文件系统在挂载时需要扫描整个FLASH的内容,以找出所有的日志节点,建立文件结构,的内容,以找出所有的日志节点,建立文件结构,对于大容量的对于大容量的NAND闪存会耗费大量时间。闪存会耗费大量时间。15LinuxLinux文件系统类型文件系统类型vJFFS2文件系统文件系统JFFS2 较之较之JFFS 原型的改进包括原型的改进包括: - 提
13、高了系统的磨损性能以及废物收集功能提高了系统的磨损性能以及废物收集功能. - 提高了压缩性能提高了压缩性能 - 提高了提高了RAM 对系统内存要求的响应能力对系统内存要求的响应能力 - 改进了对并发过程的支持并支持将改进了对并发过程的支持并支持将Flash故障挂故障挂起起 - 支持硬连接支持硬连接 16LinuxLinux文件系统类型文件系统类型v制作制作jffs2镜像文件:镜像文件: mkfs.jffs2 r rootfs o rootfs-jffs2.imgv 使用工具使用工具yaffs2image实现文件制作实现文件制作如将文件夹如将文件夹rootfs中的文件制作成中的文件制作成yaff
14、s2文件系文件系统镜像统镜像mkyaffs2image rootfs rootfs.yaffs217LinuxLinux文件系统类型文件系统类型vYaffsyaffs是专为嵌入式系统使用是专为嵌入式系统使用NAND型闪存而设计的一种型闪存而设计的一种日志型文件系统。与日志型文件系统。与jffs2相比,它减少了一些功能相比,它减少了一些功能(例如例如不支持数据压缩不支持数据压缩),所以速度更快,挂载时间很短,对内,所以速度更快,挂载时间很短,对内存的占用较小。另外,它还是跨平台的文件系统,除了存的占用较小。另外,它还是跨平台的文件系统,除了Linux和和eCos,还支持,还支持WinCE, pS
15、OS和和ThreadX等。等。yaffs自带自带NAND芯片的驱动,并且为嵌入式系统提供了芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的直接访问文件系统的API,用户可以不使用,用户可以不使用Linux中的中的MTD与与VFS,直接对文件系统操作。当然,直接对文件系统操作。当然,yaffs也可与也可与MTD驱动程序配合使用。驱动程序配合使用。yaffs与与yaffs2的主要区别在于,前者仅支持小页的主要区别在于,前者仅支持小页(512 Bytes) NAND闪存,后者则可支持大页闪存,后者则可支持大页(2KB) NAND闪闪存。同时,存。同时,yaffs2在内存空间占用、垃圾回收速度、读
16、在内存空间占用、垃圾回收速度、读/写速度等方面均有大幅提升。写速度等方面均有大幅提升。18LinuxLinux文件系统类型文件系统类型vCramfscramfs是一个压缩式的只读文件系统,它并不是一个压缩式的只读文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的到内存之中,而只是在系统需要访问某个位置的数据的时侯,马上计算出该数据在数据的时侯,马上计算出该数据在cramfs中的位中的位置,将其实时地解压缩到内存之中,然后通过对置,将其实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的
17、数据内存的访问来获取文件系统中需要读取的数据。cramfs中的解压缩以及解压缩之后的内存中数中的解压缩以及解压缩之后的内存中数据存放位置都是由据存放位置都是由cramfs文件系统本身进行维护文件系统本身进行维护的,用户并不需要了解具体的实现过程,因此这的,用户并不需要了解具体的实现过程,因此这种方式增强了透明度,对开发人员来说,既方便,种方式增强了透明度,对开发人员来说,既方便,又节省了存储空间。又节省了存储空间。19LinuxLinux文件系统类型文件系统类型vCramfs拥有以下一些特性:拥有以下一些特性:采用实时解压缩方式,但解压缩的时侯有延迟。采用实时解压缩方式,但解压缩的时侯有延迟。
18、cramfs的数据都是经过处理、打包的,对其进先的数据都是经过处理、打包的,对其进先写操作有一定困难。所以写操作有一定困难。所以cramfs不支持写操作,不支持写操作,这个特性刚好适合嵌入式应用中使用这个特性刚好适合嵌入式应用中使用Flash存储存储文件系统的场合。文件系统的场合。在在cramfs中,文件最大不能超过中,文件最大不能超过16MB。20LinuxLinux文件系统类型文件系统类型 使用使用CRAMFS工具建立根文件系统的工具建立根文件系统的CRAMFS镜像:镜像: CRAMFS工具主要包括两个:工具主要包括两个:mkcramfs和和cramfsck,其中,其中cramfsck工具
19、是用来创建工具是用来创建cramfs文件系统的,而文件系统的,而mkcramfs工具则用来进行工具则用来进行cramfs文件系统的释放以及检查。文件系统的释放以及检查。 下面是下面是mkcramfs的命令格式:的命令格式:mkcramfs -h -e edition -i file -n name dirname outfile21LinuxLinux文件系统类型文件系统类型 -h:显示帮助信息:显示帮助信息-e edition:设置生成的文件系统中的版本号:设置生成的文件系统中的版本号-i file:将一个文件映像插入这个文件系统之:将一个文件映像插入这个文件系统之中中(只能在只能在Linu
20、x2.4.0以后的内核版本中使用以后的内核版本中使用)-n name:设定:设定cramfs文件系统的名字文件系统的名字dirname:指明需要被压缩的整个目录树:指明需要被压缩的整个目录树outfile:最终输出的文件:最终输出的文件例:例:mkcramfs rootfs rootfs.cramfs22LinuxLinux文件系统类型文件系统类型 cramfsck的命令格式:的命令格式:cramfsck -hv -x dir file-h:显示帮助信息:显示帮助信息-x dir:释放文件到:释放文件到dir所指出的目录中所指出的目录中-v:输出信息更加详细:输出信息更加详细file:希望测试
21、的目标文件:希望测试的目标文件例:例: cramfsck rootfs.cramfs 23LinuxLinux文件系统类型文件系统类型vRamfsRamfs是是Linus Torvalds开发的一种基于内存的文件系开发的一种基于内存的文件系统,工作于虚拟文件系统统,工作于虚拟文件系统(VFS)层,不能格式化,可以创层,不能格式化,可以创建多个,在创建时可以指定其最大能使用的内存大小。建多个,在创建时可以指定其最大能使用的内存大小。(实际上,实际上,VFS本质上可看成一种内存文件系统,它统一本质上可看成一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓了文件在内核中的表示方
22、式,并对磁盘文件系统进行缓冲。冲。)Ramfs/tmpfs文件系统把所有的文件都放在文件系统把所有的文件都放在RAM中,所中,所以读以读/写操作发生在写操作发生在RAM中,可以用中,可以用ramfs/tmpfs来存储来存储一些临时性或经常要修改的数据,例如一些临时性或经常要修改的数据,例如/tmp和和/var目录,目录,这样既避免了对这样既避免了对Flash存储器的读写损耗,也提高了数据存储器的读写损耗,也提高了数据读写速度。读写速度。24BusyBoxvBusyBox简介简介Busybox是一个集成了一百多个最常用是一个集成了一百多个最常用linux命命令和工具的软件。令和工具的软件。Bus
23、ybox在设计上充分考虑了硬件资源受限的特在设计上充分考虑了硬件资源受限的特殊工作环境。殊工作环境。平时用的那些平时用的那些linux命令就好比是分立式的电子命令就好比是分立式的电子元件元件,而而busybox就好比是一个集成电路就好比是一个集成电路,把常用把常用的工具和命令集成压缩在一个可执行文件里的工具和命令集成压缩在一个可执行文件里,功能功能基本不变基本不变,而大小却小很多倍。而大小却小很多倍。BusyBox 可以将可以将大约大约 3.5MB 的工具包装成大约的工具包装成大约 200KB 大小。大小。 在嵌入式在嵌入式linux应用中应用中,Busybox有非常广的应用有非常广的应用。
24、25BusyBoxvBusyBox原理原理它采用一种很巧妙的办法减少自己的体积:所有它采用一种很巧妙的办法减少自己的体积:所有的命令都通过的命令都通过“插件插件”的方式集中到一个可执行的方式集中到一个可执行文件中文件中,在实际应用过程中通过不同的符号链接来在实际应用过程中通过不同的符号链接来确定到底要执行哪个操作。确定到底要执行哪个操作。例如,很多基于文件的工具(比如例如,很多基于文件的工具(比如grep和和find)都需要在目录中搜索文件的代码。当这些工具被都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这合并到一个可执行程序中时,它们就可以共享这些相同的元
25、素,这样可以产生更小的可执行程序。些相同的元素,这样可以产生更小的可执行程序。26BusyBoxvBusyBox原理原理在构造文件系统时,工具包中的各个命令可以在在构造文件系统时,工具包中的各个命令可以在编译时选择或不选择编入编译时选择或不选择编入BusyBox,这样构建,这样构建一个小巧的、自定义的、完整的嵌入式环境。一个小巧的、自定义的、完整的嵌入式环境。BusyBox支持多种体系结构,可以支持静态或支持多种体系结构,可以支持静态或动态链接,以满足不同需求。动态链接,以满足不同需求。27BusyBoxvBusyBox的参考网站:的参考网站:http:/ 29根文件系统目录结构根文件系统目录
展开阅读全文