第5章 嵌入式Linux根文件系统构造要点课件.ppt
《第5章 嵌入式Linux根文件系统构造要点课件.ppt》由会员分享,可在线阅读,更多相关《第5章 嵌入式Linux根文件系统构造要点课件.ppt(78页珍藏版)》请在三一办公上搜索。
1、第5章嵌入式Linux根文件系统构造,岳希,2,主要内容,根文件系统Windows文件系统类型Linux文件系统类型BusyBox根文件系统目录结构查看文件根文件系统制作要点根文件系统制作实例制作根文件系统镜像,3,根文件系统,理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的。文件系统简单的说就是一种目录结构,由于 linux操作系统的设备在系统中是以文件的形式存在,将这些文件进行分类管理以及提供和内核交互的接口,就形成一定的目录结构也就是文件系统,文件系统是为用户反映系统的一种形式,为用户提供一个检测控制系统的接口。,4,根文件系统,Linux内核在系
2、统启动期间进行的最后操作之一就是安装根文件系统。根文件系统一直都是所有类UNIX系统不可或缺的组件根文件系统的顶层目录各有其特殊的用法和目的。,5,根文件系统,根文件系统和普通的文件系统有什么区别呢?由于根文件系统是内核启动时挂载的第一个文件系统,那么根文件系统就要包括Linux启动时所必须的目录和关键性的文件例如Linux启动时都需要有init目录下的相关文件例如在Linux挂载分区时Linux一定会找/etc/fstab这个挂载文件,6,根文件系统,若Linux系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同
3、的文件系统。Windows支持少量文件系统: FAT16、 FAT32、NTFSLinux支持多种文件系统,包括ext2、ext3、vfat、ntfs、jffs、cramfs、ramfs、romfs、yaffs、 ramdisk等 为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口,7,根文件系统,8,根文件系统,不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。基于FLASH的文件系统 jffs2、yaffs、cramfs、romfs 基于RAM
4、的文件系统Ramdisk、ramfs/tmpfs网络文件系统NFS,9,根文件系统,Flash作为嵌入式系统的主要存储媒介,有其自身的特性。Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1(擦 除Flash就是把对应存储块的内容恢复为1),因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区间,这种擦除是以块(block)为 单位进行的。,10,Windows文件系统类型,FATFAT文件系统主要的优点就是它可以允许多种操作系统访问,如MS-DOS、Windows9x、Windows NT和OS/2等。这一文件系统在使用时遵循8.3命名规则(即文件名最多为8个字符
5、,扩展名为3个字符)。FAT32与FAT16区别FAT32与FAT16相比,它的一个簇的大小要比FAT16小很多,所以可以节省磁盘空间。,11,Windows文件系统类型,NTFSNTFS是Windows 2000之后的高级文件系统,它支持文件系统故障恢复,尤其是大存储媒体、长文件名。NTFS只能被Windows 所识别,虽然它可以读取FAT文件系统,但其文件却不能被FAT文件系统所存取。采用了更小的簇文件读取速度更高效磁盘自我修复功能。,12,Windows文件系统类型,NTFSNTFS是专用于Windows NT/2000操作系统的高级文件系统,它支持文件系统故障恢复,尤其是大存储媒体、长
6、文件名。NTFS的主要弱点是它只能被Windows NT/2000所识别,虽然它可以读取FAT文件系统和HPFS文件系统的文件,但其文件却不能被FAT文件系统和HPFS文件系统所存取,因此兼容性方面比较成问题。,13,Linux文件系统类型,JFFS2文件系统JFFS2,日志闪存文件系统版本2 (Journalling Flash FileSystem v2)最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所
7、以JFFS2也可以用在Linux, uCLinux中。,14,Linux文件系统类型,JFFS2文件系统主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。jffs不适合用于NAND闪存主要是因为NAND闪存的容量一般较大,这样导致jffs为维护日志节点所占用的内存空间迅速增大,另外,jffs文件系统在挂载时需要扫描整个FLASH的内容,以找出所有的日志节点,建立文件结构,对于大容量的NAND闪存会耗费大量时
8、间。,15,Linux文件系统类型,JFFS2文件系统JFFS2 较之JFFS 原型的改进包括: - 提高了系统的磨损性能以及废物收集功能. - 提高了压缩性能 - 提高了RAM 对系统内存要求的响应能力 - 改进了对并发过程的支持并支持将Flash故障挂起 - 支持硬连接,16,Linux文件系统类型,制作jffs2镜像文件: mkfs.jffs2 r rootfs o rootfs-jffs2.img 使用工具yaffs2image实现文件制作如将文件夹rootfs中的文件制作成yaffs2文件系统镜像mkyaffs2image rootfs rootfs.yaffs2,17,Linux文
9、件系统类型,Yaffsyaffs是专为嵌入式系统使用NAND型闪存而设计的一种日志型文件系统。与jffs2相比,它减少了一些功能(例如不支持数据压缩),所以速度更快,挂载时间很短,对内存的占用较小。另外,它还是跨平台的文件系统,除了Linux和eCos,还支持WinCE, pSOS和ThreadX等。yaffs自带NAND芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD与VFS,直接对文件系统操作。当然,yaffs也可与MTD驱动程序配合使用。yaffs与yaffs2的主要区别在于,前者仅支持小页(512 Bytes) NAND闪存,后者则可支持大
10、页(2KB) NAND闪存。同时,yaffs2在内存空间占用、垃圾回收速度、读/写速度等方面均有大幅提升。,18,Linux文件系统类型,Cramfscramfs是一个压缩式的只读文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时侯,马上计算出该数据在cramfs中的位置,将其实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。cramfs中的解压缩以及解压缩之后的内存中数据存放位置都是由cramfs文件系统本身进行维护的,用户并不需要了解具体的实现过程,因此这种方式增强了透明度,对开发人员来说,既方便,又节省了
11、存储空间。,19,Linux文件系统类型,Cramfs拥有以下一些特性:采用实时解压缩方式,但解压缩的时侯有延迟。cramfs的数据都是经过处理、打包的,对其进先写操作有一定困难。所以cramfs不支持写操作,这个特性刚好适合嵌入式应用中使用Flash存储文件系统的场合。在cramfs中,文件最大不能超过16MB。,20,Linux文件系统类型,使用CRAMFS工具建立根文件系统的CRAMFS镜像: CRAMFS工具主要包括两个:mkcramfs和cramfsck,其中cramfsck工具是用来创建cramfs文件系统的,而mkcramfs工具则用来进行cramfs文件系统的释放以及检查。 下
12、面是mkcramfs的命令格式:mkcramfs -h -e edition -i file -n name dirname outfile,21,Linux文件系统类型,-h:显示帮助信息-e edition:设置生成的文件系统中的版本号-i file:将一个文件映像插入这个文件系统之中(只能在Linux2.4.0以后的内核版本中使用)-n name:设定cramfs文件系统的名字dirname:指明需要被压缩的整个目录树outfile:最终输出的文件例:mkcramfs rootfs rootfs.cramfs,22,Linux文件系统类型,cramfsck的命令格式:cramfsck -
13、hv -x dir file-h:显示帮助信息-x dir:释放文件到dir所指出的目录中-v:输出信息更加详细file:希望测试的目标文件例: cramfsck rootfs.cramfs,23,Linux文件系统类型,RamfsRamfs是Linus Torvalds开发的一种基于内存的文件系统,工作于虚拟文件系统(VFS)层,不能格式化,可以创建多个,在创建时可以指定其最大能使用的内存大小。(实际上,VFS本质上可看成一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓冲。)Ramfs/tmpfs文件系统把所有的文件都放在RAM中,所以读/写操作发生在RAM中,可以用
14、ramfs/tmpfs来存储一些临时性或经常要修改的数据,例如/tmp和/var目录,这样既避免了对Flash存储器的读写损耗,也提高了数据读写速度。,24,BusyBox,BusyBox简介Busybox是一个集成了一百多个最常用linux命令和工具的软件。Busybox在设计上充分考虑了硬件资源受限的特殊工作环境。平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍。BusyBox 可以将大约 3.5MB 的工具包装成大约 200KB 大小。 在嵌入式linux应用中,Busy
15、box有非常广的应用。,25,BusyBox,BusyBox原理它采用一种很巧妙的办法减少自己的体积:所有的命令都通过“插件”的方式集中到一个可执行文件中,在实际应用过程中通过不同的符号链接来确定到底要执行哪个操作。例如,很多基于文件的工具(比如grep和find)都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序。,26,BusyBox,BusyBox原理在构造文件系统时,工具包中的各个命令可以在编译时选择或不选择编入BusyBox,这样构建一个小巧的、自定义的、完整的嵌入式环境。BusyBox支持多种体系结构,可以
16、支持静态或动态链接,以满足不同需求。,27,BusyBox,BusyBox的参考网站:http:/,28,BusyBox,编译BusyBox后会产生/bin和/sbin文件夹:存放各种命令linuxrc文件:是一个shell启动脚本文件,29,根文件系统目录结构,Linux系统的根文件中每个目录中都包含特定内容: 1. /bin目录/ bin目录包含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。这些命令都是二进制文件的可执行程序( b i n是b i n a r y - -二进制的简称),多是系统中重要的系统文件。,30,根文件系统目录结构,2. /sbin目录 /sbin目
17、录类似/bin ,也用于存储二进制文件。因为其中的大部分文件多是系统管理员使用的基本的系统程序,所以虽然普通用户必要且允许时可以使用,但一般不给普通用户使用。3. /etc目录/etc目录存放着各种系统配置文件,其中包括了用户信息文件/etc/passwd,系统初始化文件/etc/rc等。Linux正是靠这些文件才得以正常地运行。4. /root目录/root 目录是超级用户的目录。,31,根文件系统目录结构,5. /lib目录/lib目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故
18、可以使得可执行文件变得更小,节省空间。 /lib/modules 目录包含系统核心可加载各种模块,尤其是那些在恢复损坏的系统时重新引导系统所需的模块(例如网络和文件系统驱动)。,32,根文件系统目录结构,6. /dev目录/dev目录存放了设备文件,即设备驱动程序,用户通过这些文件访问外部设备。比如,用户可以通过访问/dev/mouse来访问鼠标的输入,就像访问其他文件一样。7. /tmp目录/tmp 目录存放程序在运行时产生的信息和数据。8. /boot目录/boot目录存放引导加载器(bootloader)使用的文件,如LILO、grub,核心映像也经常放在这里,而不是放在根目录中。,33
19、,根文件系统目录结构,9. /mnt目录/mnt目录是系统管理员临时安装(mount )文件系统的安装点。程序并不自动支持安装到/mnt 。/mnt 下面可以分为许多子目录,例如/mnt/dosa 可能是使用MSDOS文件系统的软驱,而/mnt/exta 可能是使用ext2文件系统的软驱,/mnt/cdrom 光驱等等。10. /proc, /usr,/var,/home目录其他文件系统的安装点。,34,设备文件,设备类型主要包括字符设备(Character Device)和块设备(Block Device)。字符设备主要指字符的输入输出设备如键盘、鼠标等。块设备主要指整块数据的输入输出设备,
20、如FLASH、硬盘等存储设备,一般包含缓冲区机制。,35,设备文件,查看设备文件命令ls l例:-rw-r-r- 1 root root 2915 08-03 06:16 a,36,设备文件,第1字段: 文件属性。总共有10个字母组成第一个字符表示文件类型。 -表示该文件是一个普通文件 d表示该文件是一个目录l表示该文件是一个链接文件c表示该文件是一个字符设备文件b的表示块设备文件p表示该文件为命令管道文件,与shell编程有关s表示该文件为sock文件。与shell编程有关的文件,37,设备文件,第1字段: 文件属性。总共有10个字母组成第1字段后9个字母表示该文件或目录的权限位。 r表示读
21、 (Read) 、w表示写 (Write) 、x表示执行 (eXecute) 前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。,38,查看文件,第2字段: 链接占用的节点如果是目录,则第2字段表示该目录所含子目录的个数第3字段:文件(目录)拥有者第4字段:文件(目录)拥有者所在的组第5字段: 文件所占用的空间(以字节为单位)第6字段:文件(目录)最近访问(修改)时间第7字段:文件名,39,根文件系统制作要点,根文件系统的制作步骤构建根文件系统,并创建相关文件按需配置BusyBox编译BusyBox,并安装到指定根文件系统创建根文件系统映像文件,40
22、,根文件系统制作要点,构建根文件系统,并创建相关文件确定根文件系统顶层目录结构 在嵌入式Linux系统中,必须有的目录包括:/bin,/dev,/etc,/lib,/proc,/sbin,和/usr,其他目录都是可选的。(增加/mnt),41,根文件系统制作要点,构建根文件系统,并创建相关文件创建设备节点设备以文件的方式存取。一个具体设备采用主设备号和次设备号来标识。主设备号标示设备类型,每种设备类型对应一个设备驱动程序,一个主设备号可以有多个具体设备对应。次设备号用于区分具体设备,42,根文件系统制作要点,只需要一些必备的条目及符号链接就可以满足系统的运行。基本的/dev条目包括:文件名 说
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 嵌入式Linux根文件系统构造要点课件 嵌入式 Linux 文件系统 构造 要点 课件
链接地址:https://www.31ppt.com/p-1620727.html