嵌入式linux根文件系统rootfs_第1页
嵌入式linux根文件系统rootfs_第2页
嵌入式linux根文件系统rootfs_第3页
嵌入式linux根文件系统rootfs_第4页
嵌入式linux根文件系统rootfs_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、、什么是文件系统(Filesystem)文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。二、主要嵌入式采用的文件系统Linux中,rootfs是必不可少的。PC上主要实现有ramdisk和直接挂载HD(Harddisk,硬盘)上的根文件系统;嵌入式中一般不从HD启动,而是从Flash启动,最简单的方法是将rootfsload至URAM的RAMDisk,稍复杂的就是直接从Flash读取的Cramf

2、s,更复杂的是在Flash上分区,并构建JFFS2等文件系统。RAMDisk将制作好的rootfs压缩后写入Flash,启动的时候由Bootloaderload到RAM,解压缩,然后挂载到/。这种方法操作简单,但是在RAM中的文件系统不是压缩的,因此需要占用许多嵌入式系统中稀有资源RAM。ramdisk就是用内存空间来模拟出硬盘分区,ramdisk通常使用磁盘文件系统的压缩存放在flash中,在系统初始化时,解压缩到SDRAM并挂载根文件系统,在linux系统中,ramdisk有二种,一种就是可以格式化并加载,在linux内核2.0/2.2就已经支持,其不足之处是大小固定;另一种是2.4的内核

3、才支持,通过,ramfs来实现,他不能被格式化,但用起来方便,其大小随所需要的空间增加或减少,是目前linux常用的ramdisk技术.initrd是RAMDisk的格式,kernel2.4之前都是image-initrd,Kernel2.5引入了cpio-initrd,大大简化了Linux的启动过程,附合Linux的基本哲学:Keepitsimple,stupid(KISS).不过cpio-initrd作为新的格式,还没有经过广泛测试,嵌入式Linux中主要采用的还是image-initrd。Cramfs是Linus写的很简单的文件系统,有很好的压缩绿,也可以直接从Flash上运行,不须lo

4、ad到RAM中,因此节约了RAM。但是Cramfs是只读的,对于需要运行时修改的目录(如:/etc,/var,/tmp)多有不便,因此,一般将这些目录做成ramfs等可写的fs。SquashFS是对Cramfs的增强。突破了Cramfs的一些限制,在Flash和RAM的使用量方面也具有优势。不过,据开发者介绍,在性能上可能不如Cramfs。这也是一种新方法,在嵌入式系统采用之前,需要经过更多的测试三、建一个包含所有文件的目录1。建一个目录rootfs用来装文件系统2。mkdirbindevetclibprocsbintmpusrvar3.ln-fsbin/busyboxlinuxrc(使用bu

5、sybox)4.到系统/dev把所有的device打一个包,拷贝到dev下面(最省事的做法);或者使用mknod来自己建所需要的device,我自己用的如下:crw-rw-rw-1rootroot5,12006-02-2413:12consolecrw-rw-rw-1rootroot5,642006-02-2413:12cua0crw-rw-rw-1rootroot63,02006-02-2413:12dk0crw-rw-rw-1rootroot63,12006-02-2413:12dk1drwxr-xr-x2rootroot40962006-02-2413:12flashbrw-rw-rw-

6、1rootroot3,02006-02-2413:12hdacrw-rw-rw-1rootroot36,102006-02-2413:12ipseccrw-rw-rw-1rootroot241,02006-02-2413:12ixNpecrw-rw-rw-1rootroot1,22006-02-2413:12kmemcrw-rw-rw-1rootroot126,02006-02-2413:12ledmanlrwxrwxrwx1rootroot162007-09-1914:08log-/tmp/var/log/logcrw-rw-rw-1rootroot1,12006-02-2413:12mem

7、crw-rw-rw-1rootroot90,02006-02-2413:12mtd0brw-rw-rw-1rootroot31,02006-02-2413:12mtdblock0brw-rw-rw-1rootroot31,12006-02-2413:12mtdblock1brw-rw-rw-1rootroot31,22006-02-2413:12mtdblock2brw-rw-rw-1rootroot31,32006-02-2413:12mtdblock3brw-rw-rw-1rootroot31,42006-02-2413:12mtdblock4brw-rw-rw-1rootroot31,5

8、2006-02-2413:12mtdblock5brw-rw-rw-1rootroot31,62006-02-2413:12mtdblock6crw-rw-rw-1rootroot90,12006-02-2413:12mtdr0crw-rw-rw-1rootroot1,32006-02-2413:12nullcrw-rw-rw-1rootroot108,02006-02-2413:12pppcrw-r-r-1rootroot5,22006-03-2915:56ptmxdrwxr-xr-x2rootroot40962006-03-2915:56ptscrw-rw-rw-1rootroot2,02

9、006-02-2413:12ptyp0brw-rw-rw-1rootroot1,02006-02-2413:12ram0crw-rw-rw-1rootroot1,82006-02-2413:12randomcrw-rw-rw-1rootroot5,02006-02-2413:12ttycrw-rw-rw-1rootroot4,02006-02-2413:12tty0crw-rw-rw-1rootroot3,02006-02-2413:12ttyp0crw-rw-rw-1rootroot4,642006-02-2413:12ttyS0crw-rw-rw-1rootroot1,92006-02-2

10、413:12urandomcrw-rw-rw-1rootroot1,52006-02-2413:12zero举例:mknodconsolec51这样crw-rw-rw-1rootroot5,12006-02-2413:12console5。将编译好的busybox拷贝到/bin下面,除了busybox夕卜,所有其他的命令都是他的linkashchgrpclearddechofgrepgzipiplsmodprobemvpingpwdsedsttytartruezcatbusyboxchmodcpdfegrepgrephostnamekillmkdirmorenetstatping2filerm

11、shsynctftpumountcatchowndatedmesgfalsegunzipifconfiglnmknodmountpidofpsrmdirsleepsysinfotouchuname所有的命令你可以在busybox下面用makemenuconfig来增减6。同样/sbin下面也是busybox的linkhaltifconfiginitinsmodklogdlosetuplsmodmkswapmodproberebootrmmodrouteswapoffswapon7。同样/usr/bin下面也是busybox的linkbasenamedirnameenvfreeidloggerr

12、esettailtrttyuptimewhichxargsawkcutduexprheadkillallmkfifosorttesttracerouteuniqwcwhoamiyes上面几乎是最全的link,各个看官可以酌情删减,不过link也不占什么空间!8。同样/usr/sbin下面放着所有编译完的可执行文件,具体就不多说了9。非常重要之/lib,务必重视找到你编译环境的target目录,把需要的lib文件先用strip压縮(非target目录下的,而已编译环境提供的strip),先把最基本的libc,Id等等,必须同样做跟target/lib里面一样的link。然后根据特定的应用加相应的

13、lib,不要把不用的加进去,lib比较占空间。10。在/etc下面加上需要的配置文件,最最重要的是rcS#!/bin/shexportPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/sbin/scriptsUTC=yesmount-n-tprocproc/procmount-n-tramfsramfs/tmpmount-n-tdevptsdevpts/dev/pts#buildvardirectories/bin/mkdir-m0777/tmp/var/bin/mkdir-m0777/var/lock/bin/mkdir-m0777/var/log/bin/mk

14、dir-m0777/var/run/bin/mkdir-m0777/var/tmp#/bin/mkdir-m0777/tmp/etc#/bin/cp-a/usr/etc/*/etc#/bin/cp-a/usr/dev/*/dev/#loadstheNPEethernetmodulesintothekernel.insmod/lib/modules/intel/ixp400.ko#FirmwarecodeforNPEEngine.cat/etc/IxNpeMicrocode.dat/dev/ixNpeinsmod/lib/modules/intel/ixp400_eth.konetdev_max

15、_backlog=500insmod/lib/modules/led.koinsmod/lib/modules/push_button.ko下面的具体应用没有再举例加上了,这个是系统init必须的。其他的情况类似如此了,下面里面给了一个lunksys的GPL项目的target。四、生成一个ramdisk#!/bin/shMODULE_NAME=ramdiskRAMPATH=pwdTMPPATH=$RAMPATH/tmpSOURCE=$RAMPATH/./targetif!-d$TMPPATHthenmkdir$TMPPATHfiifwhoami!=rootthenechoYoushouldru

16、ntheshellasroot,Pleasererunasaroot.echoAborting.exit1fi#Clearintmppathrm-rf$TMPPATH/tmpmntrm-rf$TMPPATH/ramrootfsmkdir$TMPPATH/tmpmnt#Cleartheoldramdiskrm-f$RAMPATH/$MODULE_NAME#Makeatempfilewhichsizeissuitableddif=/dev/zeroof=$TMPPATH/ramrootfsbs=1kcount=6144#Createaext2filesystemmke2fs-F-m0-i2000$TMPPATH/ramrootfs#Mountittotmpmnt/mount-oloop-text2$TMPPATH/ramrootfs$TMPPATH/tmpmnt#Copyeverythingfromkerneltothis.cd$TMPPATH/tmpmntecho$SOURCEcp-av$SOURCE/*.cd$TMPPATH#Unmountittheext2filesystemumount$TMPPATH/tmpmntcat$TMPPATH/ramrootfs|gzip-9/$RAMPATH/r

温馨提示

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

评论

0/150

提交评论