整个嵌入式系统而言,可以分为三个部分1.uboot 2.kernel 3.文件系统。
其中kernel中以VFS去支持各种文件系统,如yaffs,ext3,cramfs等等。yaffs/yaffs2是专为嵌入式系统使用NAND型闪存而设计的一种日志型文件系统。在内核中以VFS来屏蔽各种文件系统的接口不同,以VFS向kernel提供一个统一的接口。如打开一个文件时统一使用open,写时采用write,而不用去考虑是那种文件系统,也不用去考虑文件系统是如何将数据写入物理介质的。其中 kernel中的配置,只是让VFS支持这种接口。
比如如下图所示,就是一个嵌入式系统完整的三个部分文件
uboot.bin 是uboot软件,也即是一种bootloader
x210则是文件系统
zImage-Android则是安卓的内核
从三个文件大小可以看出,文件系统是最大,有200+M
文件系统的类型有以下几种:
1.ext文件系统;
2.NFS文件系统;
3.JFFS2文件系统;
4. YAFFS2文件系统;
5.Ramdisk:使用内存的一部份空间来模拟一个硬盘分区,这样构成的文件系统就是ramdisk。将ramdisk用作根文件系统在嵌入式Linux中是一种常用的方法。因为在ram上运行,读写速度快;用gzip算法进行压缩,可节省存储空间。但它也有缺点:由于将内存的一部分用作ramdisk,这部分内存不能再作其他用途;此外系统运行是更新的,内容无法保存,系统关机后内容将丢失。