snifer

【原创】嵌入式系统为什么需要文件系统?

0
阅读(2888)

嵌入式系统为什么需要文件系统?首先看一下如果没有文件系统会有什么情况发生。


嵌入式Linux也支持多种文件系统。虽然在嵌入式中,由于资源受限的原因,它的文件系统和PC机Linux的文件系统有较大的区别,但是,它们的总体架构是一样的,都是采用目录树的结构。在嵌入式中常见的文件系统有cramfs、romfs、jffs、yaffs等 。

cramfs文件系统是一种经过压缩的、极为简单的只读文件系统,因此非常适合嵌入式系统。 

busybox是构造文件系统最常用的软件工具包,它被非常形象地称为嵌入式Linux系统中的“瑞士军刀”,因为它将许多常用的Linux命令和工具结合到了一个单独的可执行程序(busybox)中。

虽然与相应的GNU工具比较起来,busybox所提供的功能和参数略少,但在比较小的系统(例如启动盘)或者嵌入式系统中已经足够了。

busybox在设计上就充分考虑了硬件资源受限的特殊工作环境。它采用一种很巧妙的办法减少自己的体积:所有的命令都通过“插件”的方式集中到一个可执行文件中,在实际应用过程中通过不同的符号链接来确定到底要执行哪个操作。采用单一执行文件的方式最大限度地共享了程序代码,甚至连文件头、内存中的程序控制块等其他系统资源都共享了,对于资源比较紧张的系统来说,真是最合适不过了。在busybox的编译过程中,可以非常方便地加减它的“插件”,最后的符号链接也可以由编译系统自动生成。

使用busybox创建文件系统:


[root@localhost fs2410]# tar jxvf busybox-1.00.tar.bz2

[root@localhost fs2410]# cd busybox-1.00

[root@localhost busybox-1.00]# make defconfig  /* 首先进行默认配置 */

[root@localhost busybox-1.00]# make menuconfig



# make

# make install PREFIX=/home/david/fs2410/cramfs

[root@localhost cramfs]# ls

bin  linuxrc  sbin  usr

[root@localhost cramfs]# mkdir mnt root var tmp proc boot etc lib

[root@localhost cramfs]# mkdir /var/{lock,log,mail,run,spool}

如果busybox是动态编译的(即在配置busybox时没选中静态编译),则把所需的交叉编译的动态链接库文件复制到lib目录中。
接下来,需要创建一些重要文件。首先要创建/etc/inittab和/etc/fstab文件。inittab是Linux启动之后第一个被访问的脚本文件,而fstab文件是定义了文件系统的各个“挂接点”,需要与实际的系统相配合。接下来要创建用户和用户组文件。
创建文件系统映像:



[root@localhost fs2410]# mkdir cramfs

[root@localhost fs2410]# mount fs2410.cramgs cramfs –o loop

[root@localhost fs2410]# ls cramfs

bin  dev  etc  home  lib  linuxrc  proc  Qtopia  ramdisk  sbin  testshell  tmp  usr  var

因为cramfs文件系统是只读的,所以不能在这个挂载目录下直接进行修改,因此需要将文件系统中的内容复制到另一个目录中 。

[root@localhost fs2410]# mkdir backup_cramfs

[root@localhost fs2410]# tar cvf backup.cramfs.tar  cramfs/

[root@localhost fs2410]# mv backup.cramfs.tar backup_cramfs/

[root@localhost fs2410]# umount cramfs

[root@localhost fs2410]# cd backup_cramfs

[root@localhost backup_cramfs]# tar zvf backup.cramfs.tar


[root@localhost fs2410]# cp ~/hello backup_cramfs/cramfs/

[root@localhost backup_cramfs]# rm backup.cramfs.tar


[root@localhost fs2410]#  mkcramfs backup_cramfs/cramfs/ new.cramfs


这样就完成了cramfs文件系统的搭建,下面我写一下如何搭建NFS文件系统。