资源描述:
《嵌入式linux根文件系统rootfs》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一、什么是文件系统(Filesystem) 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。 二、主要嵌入式采用的文件系统 *Linux中,rootfs是必不可少的。PC上主要实现有ramdisk和直接挂载HD(Harddisk,硬盘)上的根文件系统;嵌入式中一般不从HD启动,而是从Flash启动,最简单的方法是将rootfslo
2、ad到RAM的RAMDisk,稍复杂的就是直接从Flash读取的Cramfs,更复杂的是在Flash上分区,并构建JFFS2等文件系统。 *RAMDisk将制作好的rootfs压缩后写入Flash,启动的时候由Bootloaderload到RAM,解压缩,然后挂载到/。这种方法操作简单,但是在RAM中的文件系统不是压缩的,因此需要占用许多嵌入式系统中稀有资源RAM。 ramdisk就是用内存空间来模拟出硬盘分区,ramdisk通常使用磁盘文件系统的压缩存放在flash中,在系统初始化时,解压缩到SDRAM并挂载根文件系统,在lin
3、ux系统中,ramdisk有二种,一种就是可以格式化并加载,在linux内核2.0/2.2就已经支持,其不足之处是大小固定;另一种是2.4的内核才支持,通过,ramfs来实现,他不能被格式化,但用起来方便,其大小随所需要的空间增加或减少,是目前linux常用的ramdisk技术. *initrd是RAMDisk的格式,kernel2.4之前都是image-initrd,Kernel2.5引入了cpio-initrd,大大简化了Linux的启动过程,附合Linux的基本哲学:Keepitsimple,stupid(KISS).不过cp
4、io-initrd作为新的格式,还没有经过广泛测试,嵌入式Linux中主要采用的还是image-initrd。 *Cramfs是Linus写的很简单的文件系统,有很好的压缩绿,也可以直接从Flash上运行,不须load到RAM中,因此节约了RAM。但是Cramfs是只读的,对于需要运行时修改的目录(如:/etc,/var,/tmp)多有不便,因此,一般将这些目录做成ramfs等可写的fs。 *SquashFS是对Cramfs的增强。突破了Cramfs的一些限制,在Flash和RAM的使用量方面也具有优势。不过,据开发者介绍,在性能
5、上可能不如Cramfs。这也是一种新方法,在嵌入式系统采用之前,需要经过更多的测试 三、建一个包含所有文件的目录 1。建一个目录rootfs用来装文件系统 2。mkdirbindevetclibprocsbintmpusrvar 3.ln-fsbin/busyboxlinuxrc(使用busybox) 4.到系统/dev把所有的device打一个包,拷贝到dev下面(最省事的做法);或者使用mknod来自己建所需要的device,我自己用的如下: crw-rw-rw-1rootroot5,12006-02-2413:12c
6、onsole crw-rw-rw-1rootroot5,642006-02-2413:12cua0 crw-rw-rw-1rootroot63,02006-02-2413:12dk0 crw-rw-rw-1rootroot63,12006-02-2413:12dk1 drwxr-xr-x2rootroot40962006-02-2413:12flash brw-rw-rw-1rootroot3,02006-02-2413:12hda crw-rw-rw-1rootroot36,102006-02-2413:12ipsec
7、 crw-rw-rw-1rootroot241,02006-02-2413:12ixNpe crw-rw-rw-1rootroot1,22006-02-2413:12kmem crw-rw-rw-1rootroot126,02006-02-2413:12ledman lrwxrwxrwx1rootroot162007-09-1914:08log->/tmp/var/log/log crw-rw-rw-1rootroot1,12006-02-2413:12mem crw-rw-rw-1rootroot90,02006-02-2
8、413:12mtd0 brw-rw-rw-1rootroot31,02006-02-2413:12mtdblock0 brw-rw-rw-1rootroot31,12006-02-2413:12mtdblock1