- 论坛徽章:
- 0
|
基于NorFlash存储介质的特性,常用的文件系统主要有ramdisk, ramfs, cramfs, jffs2.
1
ramdisk,ramfs,可写,但内容断电后丢失。ramdisk (like initrd) 是 ram based block device, 像磁盘一样可挂载与格式化。
内核配置选项:Device Drivers->Block devices->RAM disk support.可指定block size与disk size.
2 与ramdisk不同的是,ramfs空间是可增长的,而且使用了cache机制,所以速度很快。
可通过内核配置“General Setup->Initramfs source files"指定ramfs目录直接编译进内核。(详细了解initramfs请参考文档:“精通initramfs构建step by step(一)~(十二)”
3 另一个与ramfs相似的是tmpfs,它增加了容量大小限制,在inittab中进行分配或直接在脚本mount中指定大小;可能用到swap space。
内核配置选项:“File systems->Pseudo filesystems->Virtual memory file system support 与 Tmpfs Posiz access Control Lists。
以上三种文件系统都以消耗内存为代价,在嵌入式系统中,内存资源一般都比较紧张,如此,可以考虑以下文件系统。
4 cramfs是只读压缩文件系统,可在NorFlash中直接运行,效率也不错。
内核配置选项:“File systems->Miscellaneous filesystems->Compressed ROM file system support".
制作命令也很简单:mkfs.cramfs -N big(little) srcdir/ xxx.cramfs。
作为根文件系统,传给内核的参数设置为:bootargs root=/dev/mtdblock? rootfstype=cramfs ro console=115200,ttyS0(有些用ttySAC0) init=/linuxrc
5 jffs2,日志文件系统,可读写,专为嵌入式文件系统提供了安全的写机制。详细了解可参考文档“JFFS2文件系统及新特性介绍”。
内核配置选项:“File systems->Miscellaneous filesystems->JFFS2 support”。
制作命令举例:mkfs.jffs2 -n --pad=xxx(fill size) -e 0x20000(block size) -U -b(-b big endian, -l little endian) -d srcdir/ -o xxx.jffs2
作为根文件系统,传给内核的参数设置为:bootargs root=/dev/mtdblock? rootfstype=jffs2 rw console=115200,ttyS0
对于NorFlash,要支持文件系统,一块要提供MTD partition support支持。如果NorFlash支持CFI(common Flash Interface),还需要配置此选项。
如果直接使用uboot+jffs2方案,也就是jffs2直接作为根文件系统分区,在uboot中加入jffs2的支持,就可以读jffs2中的文件,因此可以把kernel镜像uImage直接拷贝到rootfs中。通过fsload命令加载到内存然后引导。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66728/showart_2134218.html |
|