linux文件系统制作流程_第1页
linux文件系统制作流程_第2页
linux文件系统制作流程_第3页
linux文件系统制作流程_第4页
linux文件系统制作流程_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、.linux文件系统制作流程81653 0200 20 0姓名:Michel.Lee职业:在西南边陲的一个国营单位从事嵌入式软件的开发年龄:位置:个性介绍:up_user.jpg up_user_pre.jpg OTHER 12 024 10668 00 0星级BLOG 0lee213#FFFFFF#204689 _blank 106265 02020-03-04 20:00:15 127761 106265 2020-12-24 17:25:33 127762 106265 2020-12-24 17:25:48 127763 106265 2020-12-24 17:25:56 12776

2、4 106265 2020-12-24 17:26:08 127765 02020-12-24 17:28:03 127766 127765 2020-12-24 17:28:40 106249 02020-12-24 17:27:35 109536 106249 2020-04-16 22:27:38 109537 106249 2020-04-16 22:29:07 109538 106249 2020-04-16 22:29:27 109539 106249 2020-04-16 22:30:00 109540 106249 2020-04-16 22:30:25 109541 1062

3、49 2020-04-16 22:31:00 109542 106249 2020-04-16 22:31:26 109543 106249 2020-04-16 22:34:54 127756 02020-12-24 17:27:43 127757 127756 2020-12-24 17:22:57 127758 127756 2020-12-24 17:23:08 127759 127756 2020-12-24 17:23:18 127760 127756 2020-12-24 17:23:29 106251 02020-12-24 17:27:51 109544 106251 202

4、0-04-16 22:35:39 109545 106251 2020-04-16 22:36:06 109547 106251 2020-04-16 22:37:04 109546 106251 2020-04-16 22:36:24 106250 02020-03-04 20:00:54 128920 02020-01-08 08:52:38 128921 128920 2020-01-08 08:53:02 128922 128920 2020-01-08 08:54:24 128923 128920 2020-01-08 08:54:33 128924 128920 2020-01-0

5、8 08:55:19 128925 128920 2020-01-08 08:55:26 124397 02020-11-07 09:52:23 123426 02020-10-22 16:05:00 109119 02020-04-10 12:02:24 106262 02020-03-04 19:56:41 127755 02020-12-24 17:21:58 20853 02020-01-23 08:42:00 18454 02020-01-23 08:42:15 18455 02020-01-23 08:42:21"20200304","20200328

6、","20200401","20200406","20200407","20200410","20200415","20200727","20202009","20202021","20202022","20202002","20202007","20201218","20201221","20201225"

7、,"20201229","20201230","20200108","20200714","20200715",""2272934 127759 2020-07-15 09:06:42 2020-07-15 09:06:42 10转载16 Linux文件系统简介rn Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进展统一管理,Linux引入了虚拟文件系统VFSVir tual File

8、 System,为各类文件系统提供一个统一的操作界面和应用编程接口。rn Linux下的文件系统构造如下:rnrnrnrn Linux启动时,第一个必须挂载的是根文件系统;假设系统不能从指定设备上挂载根文件系统,那么系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。rn不同的文件系统类型有不同的特点,因此根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAMDRAM,SDRAM和ROM常采用FLASH存储器,常用的基于存储设备的文件系统类型包括:jffs2,yaffs,cramfs,romfs,

9、ramdisk,ramfs/tmpfs等。rnrn基于FLASH的文件系统rn Flash闪存作为嵌入式系统的主要存储媒介,有其自身的特性。Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1擦除Flash就是把对应存储块的内容恢复为1,因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区间,这种擦除是以块block为单位进展的。rn闪存主要有NOR和NAND两种技术简单比较见附录。Flash存储器的擦写次数是有限的,NAND闪存还有特殊的硬件接口和读写时序。因此,必须针对Flash的硬件特性设计符合应用要求的文件系统;传统的文件系统如ext2等,用作Flash的文件

10、系统会有诸多弊端。rn在嵌入式Linux下,MTDMemory Technology Device,存储技术设备为底层硬件闪存和上层文件系统之间提供一个统一的抽象接口,即Flash的文件系统都是基于MTD驱动层的参见上面的Linux下的文件系统构造图。使用MTD驱动程序的主要优点在于,它是专门针对各种非易失性存储器以闪存为主而设计的,因此它对Flash有更好的支持、管理和基于扇区的擦除、读/写操作接口。rn顺便一提,一块Flash芯片可以被划分为多个分区,各分区可以采用不同的文件系统;两块Flash芯片也可以合并为一个分区使用,采用一个文件系统。即文件系统是针对于存储器分区而言的,而非存储芯片

11、。rn 1.jffs2rn JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux,uCLinux中。rn Jffs2:日志闪存文件系统版本2Journalling Flash FileSystem v2rn主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电平安保护,提供"写平衡&quo

12、t;支持等。缺点主要是当文件系统已满或接近满时,因为垃圾搜集的关系而使jffs2的运行速度大大放慢。rn目前jffs3正在开发中。关于jffs系列文件系统的使用详细文档,可参考MTD补丁包中mtd-jffs-HOWTO.txt。rn jffsx不合适用于NAND闪存主要是因为NAND闪存的容量一般较大,这样导致jffs为维护日志节点所占用的内存空间迅速增大,另外,jffsx文件系统在挂载时需要扫描整个FLASH的内容,以找出所有的日志节点,建立文件构造,对于大容量的NAND闪存会消耗大量时间。rn 2.yaffsrn yaffs/yaffs2是专为嵌入式系统使用NAND型闪存而设计的一种日志型

13、文件系统。与jffs2相比,它减少了一些功能例如不支持数据压缩,所以速度更快,挂载时间很短,对内存的占用较小。另外,它还是跨平台的文件系统,除了Linux和eCos,还支持WinCE,pSOS和ThreadX等。rn yaffs/yaffs2自带NAND芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD与VFS,直接对文件系统操作。当然,yaffs也可与MTD驱动程序配合使用。rn yaffs与yaffs2的主要区别在于,前者仅支持小页512 BytesNAND闪存,后者那么可支持大页2KBNAND闪存。同时,yaffs2在内存空间占用、垃圾回收速度

14、、读/写速度等方面均有大幅提升。rn 3.Cramfsrn Cramfs是Linux的创始人Linus Torvalds参与开发的一种只读的压缩文件系统。它也基于MTD驱动程序。rn在cramfs文件系统中,每一页4KB被单独压缩,可以随机页访问,其压缩比高达2:1,为嵌入式系统节省大量的Flash存储空间,使系统可通过更低容量的FLASH存储一样的文件,从而降低系统本钱。rn Cramfs文件系统以压缩方式存储,在运行时解压缩,所以不支持应用程序以XIP方式运行,所有的应用程序要求被拷到RAM里去运行,但这并不代表比Ramfs需求的RAM空间要大一点,因为Cramfs是采用分页压缩的方式存放

15、档案,在读取档案时,不会一下子就耗用过多的内存空间,只针对目前实际读取的部分分配内存,尚没有读取的部分不分配内存空间,当我们读取的档案不在内存时,Cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中。rn另外,它的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,进步了系统的可靠性。rn由于以上特性,Cramfs在嵌入式系统中应用广泛。rn但是它的只读属性同时又是它的一大缺陷,使得用户无法对其内容对进扩大。rn Cramfs映像通常是放在Flash中,但是也能放在别的文件系统里,使用loopback设备可以把它安装别的文件系统里。rn 4.Romfsrn传统型的Ro

16、mfs文件系统是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存,按顺序存放数据,因此支持应用程序以XIPeXecute In Place,片内运行方式运行,在系统运行时,节省RAM空间。uClinux系统通常采用Romfs文件系统。rn其他文件系统:fat/fat32也可用于实际嵌入式系统的扩展存储器例如PDA,Smartphone,数码相机等的SD卡,这主要是为了更好的与最流行的Windows桌面操作系统相兼容。ext2也可以作为嵌入式Linux的文件系统,不过将它用于FLASH闪存会有诸多弊端。rn基于RAM的文件系统rn 1.Ramdiskrn Ramdisk是将一部分固定大小的

17、内存当作分区来使用。它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统。将一些经常被访问而又不会更改的文件如只读的根文件系统通过Ramdisk放在内存中,可以明显地进步系统的性能。rn在Linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文件系统一起载入内存。rn 2.ramfs/tmpfsrn Ramfs是Linus Torvalds开发的一种基于内存的文件系统,工作于虚拟文件系统VFS层,不能格式化,可以创立多个,在创立时可以指定其最大能使用的内存大小。实际上,VFS本质上可看成一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘

18、文件系统进展缓冲。rn Ramfs/tmpfs文件系统把所有的文件都放在RAM中,所以读/写操作发生在RAM中,可以用ramfs/tmpfs来存储一些临时性或经常要修改的数据,例如/tmp和/var目录,这样既防止了对Flash存储器的读写损耗,也进步了数据读写速度。rn Ramfs/tmpfs相对于传统的Ramdisk的不同之处主要在于:不能格式化,文件系统大小可随所含文件内容大小变化。rn Tmpfs的一个缺点是当系统重新引导时会丧失所有数据。rn 3.网络文件系统NFSNetwork File Systemrn NFS是由Sun开发并开展起来的一项在不同机器、不同操作系统之间通过网络共享

19、文件的技术。在嵌入式Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。rn以上讨论的都是基于存储设备的文件系统memory-based file system,它们都可用作Linux的根文件系统。实际上,Linux还支持逻辑的或伪文件系统logical or pseudo file system,例如procfsproc文件系统,用于获取系统信息,以及devfs设备文件系统和sysfs,用于维护设备文件。rnrn开发环境rn操作系统:Ubuntu 10.4linux kernel-v 2.6.31rn移植Linu

20、x内核版本:2.6.30rn穿插编译工具:arm-linux-gcc 4.3.2rn文件系统制作工具:Busybox-1.16.1rnrn下载Busybox-1.16.1rn Busybox-1.16.1的下载地址:rnrnrn配置Busyboxrn 1.创立制作文件系统的根目录rn在提示符后输入:rn/opt#mkdir rootfsrn 2.解压busybox-1.16.1rn进入存放busybox-1.16.1压缩包文件的目录,在提示符后输入:rn/opt#tar jxvf busybox-1.16.1.tar.ba2rn 3.进入busybox-1.16.1根目录,修改Makefile

21、,修改ARCH和CROSS_COMPILE两变量的值rn ARCH?=armrn CROSS_COMPILE?=arm-linux-rn 4.通过busybox的配置菜单配置制作的文件系统rn在提示符后输入:rn/opt/busybox-1.16.1#make menuconfigrn系统将弹出配置菜单,通过菜单项选择择需要的选项,如图1所示:rnrnrnrn图1rn以下选项必须选择:rn Busybox Setting-rn build option-rnBuild BusyBox as astatic binaryno shared libsrnBuild BusyBox as aposi

22、tion independent executableNEWrnForce NOMMU buildrnBuild shared libbusyboxrn*Produce abinary for each applet,linked against libbusyboxrn*Produce additional busybox binary linked against libbusyboxrnBuild with Large File Supportfor accessing files 2GBrnCross Compiler prefixrnAdditional CFLAGSrnrn Bus

23、ybox Setting-rn installation option-rn*Don't use/usrrn Applets linksas soft-links-rn/opt/rootfsBusyBox installation prefix该项输入编译安装途径,在此输入rootfs文件途径rnrn Busybox Library Tuning-rn MD5:Trade Bytes for Speedrn*Faster/proc scanning code+100 bytesrn*Support for/etc/networksrn*Support for/etc/networksr

24、n*Additional editing keysrn*vi-style line editing commandsrn*History savingrn*Tab completionrn*Username completionrn*Fancy shell promptsrnrn假设出现如图2所示的错误:rnrnrnrn图2rn请安装有关编译程序。安装make,gcc,make-kpkg,运行menuconfig等等和编译内核相关的工具。rn有关命令如下:rn/opt#sudo apt-get install build-essential kernel-package libncurses5

25、-devrn假设安装不了,请检查/etc/apt/sources.list文件。rnrn编译Busyboxrn在提示符后输入:rn/opt/busybox-1.16.1#make installrn在rootfs文件下会多了bin、sbin两个文件夹和一个linuxrc文件,如图3所示:rnrn图3rnrn 1.创立文件系统其它目录rn进入rootfs目录,在提示符后输入:rn/opt/rootfs#mkdir boot dev etc home lib mnt proc root sys tmp var usrrn建立其它根本的目录,如图4所示:rnrnrnrn图4rnrn 2.建立及复制文

26、件系统所需的文件rn 1.在/rootfs/dev/目录下建立console和null节点文件要root身份rn假设缺少这两个文件,在挂载文件系统时将会有报错信息,如图5所示:rnrn图5rn进入/rootfs/dev/目录,在提示符后输入:rn/opt/rootfs/dev#mknod-m 666 console c5 1rn/opt/rootfs/dev#mknod-m 666 null c1 3rn如图6所示:rnrnrnrn图6rnrn 2.在/rootfs/etc/目录下建立fstab和inittab文件rn进入/rootfs/etc/目录,创立fstab文件,其内容如下:rn no

27、ne/proc proc defaults 00rn none/dev/pts devpts mode=0622 00rn tmpfs/dev/shm tmpfs defaults 00rnrn进入/rootfs/etc/目录,创立inittab文件,其内容如下:rn#inittabrn:sysinit:/etc/init.d/rcSrn:askfirst:-/bin/shrn:restart:/sbin/initrn:ctrlaltdel:/sbin/rebootrn:shutdown:/bin/umount-a rrn:shutdown:/sbin/swapoff arn最后在提示符下输入

28、:rn/opt/rootfs/etc#chmod+x fstab inittabrnrn 3.在/rootfs/etc/init.d/目录下建立rcS文件rn进入/rootfs/etc/目录,创立init.d目录,在该目录下创立rcS文件,其内容如下:rn#!/bin/shrn export PATH=/sbin:/bin:/usr/sbin:/usr/binrn echo"running/etc/init.d/rcS"rnrn echo"mount-t proc proc/proc"rn mount-t proc proc/procrnrn echo"mount-t sysfs/sys/sys"rn mount-t sysfs/sys/sysrn#echo"mount-t tmpfs/tmpfs/dev"rn#/mount-t tmpfs/tmpfs/devrnrn#e

温馨提示

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

评论

0/150

提交评论