快速业务通道

Linux根文件系统的制作

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-20
件解开.Cramfs不会影响系统的读取文件的速度,是一个高度压缩的文件系统.因此非常广泛应用于嵌入式系统中.

  在嵌入式的环境之下,内存和外存资源都需要节约使用.如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,要把Flash上的映像文件解压缩到内存中,构造起RAMDISK环境,才可以开始运行程序.但是它也有很致命的弱点.在正常情况下,同样的代码不仅在Flash中占据了空间(以压缩后的形式存在),还在内存中占用了更大的空间(以解压缩之后的形式存在),这违背了嵌入式环境下尽量节省资源的要求.

  使用CramFS文件系统就是一种解决这个问题的方式.CramFS是一个压缩格式的文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时候,马上计算出该数据在CramFS中的位置,将它实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据.CramFS中的解压缩以及解压缩之后的内存中数据存放位置都是由CramFS文件系统本身进行维护的,用户并不需要了解具体的实现过程,因此这种方式增强了透明度,对开发人员来说,既方便,又节省了存储空间.

  但是Cramfs也有其缺点:延迟、小于16MB、不支持写,只支持PAGE_CREATE_SIZE=4096的内核.

  制作的命令:(root文件夹中存放着文件系统)

  #mkcramfs root cramfs.img

  5. 其他根文件系统的制作

  制作yaffs文件系统: mkyaffsimage myroots myroots.img

  制作squashfs: mksquashfs $(FS_DIR) $(FS_NAME) -noappend -be -lzma -no-fragments –noI

  6. BusyBox编译以及移植(根文件系统内命令的制作移植)

  建立目标板空根目录文件夹及根目录下的文件夹:

  [root@190 friendly-arm]# mkdir myroots

  [root@190 friendly-arm]#pwd

  /friendly-arm/myroots

  [root@190 friendly-arm]#cd myroots

  [root@190 myroots]# mkdir bin sbin usr lib dev mnt opt root etc home proc tmp var

  [root@190 myroots]# mkdir etc/init.d

  进入etc/init.d目录下,建立一个脚本文件,并命名为rcS,用gedit打开,添加如下内容:

  #! /bin/sh

  PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:

  runlevel=S

  prevlevel=N

  umask 022

  export PATH runlevel prevlevel

  #

  # Trap CTRL-C &c only in this shell so we can interrupt subprocesses.

  #

  trap ":" INT QUIT TSTP

  创建 dev 中的节点

  如果使用“linux 2.6.xx”的内核,应该事先创建节点“console”、“null”.否则在系统启动时内容会提示以下错误:

  Warning: unable to open an initial console.Kernel panic - not syncing: Attempted to kill init!

  创建节点的命令如下:

  # mknod dev/console c 5 1# mknod dev/null c 1 3

  移植Busybox:

  进入到压缩文件存放的目录下,并解压.然后进入解压后的busybox目录文件夹,随后配置busybox .

  [root@190 busybox-1.2.0]# make menuconfig

  执行之后,将出现如下图所示的配置界面:

  每个版本的配置选项组织有所不同.不管怎样,我们注意以下选项就行了:

  1) Support for devfs

  2) Build BusyBox as a static binary ( no shared libs ) //将busybox编译成静态链接

  3) Do you want to build busybox with a Cross Compile?

  (/usr/local/arm/3.3.2/bin/arm-linux-) Cross Compile prefix //指定交叉编译器

  4) init

  5) Support reading an inittab file //支持init读取/etc/inittab 配置文件

  6) (X) ash选中ash //建立的rcS脚本才能执

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号