嵌入式Linux 的Cramfs 根文件系统配置成可读可写 2011-03-30 13:19:03| 分类: ARM&LINUX | 标签:cramfs 可读可写的功能 |字号大中小 订阅 1、概述 从软件角度上看,构建基于 ARM 技术的linux 系统要涉及到引导加载程序、Linux 内核、文件系统、用户应用程序几部分的设计。文件系统是操作系统中用来管理用户文件的内核软件层。文件可能存在于磁盘、网络或者是一些虚拟的文件。文件系统包括根文件系统和建立于内存设备之上文件系统。根文件系统是 linux 系统的核心部分,包含系统使用的软件和库,以及所有用来为用户提供支持架构和用户使用的应用软件,并作为存储数据读写结果的区域。由于嵌入式设备中Flash 资源很紧张,如何有效地使用有限的存储空间是嵌入式开发者必须考虑的,合适的文件系统格式是解决这一问题的关键所在。本文讨论了只读型压缩 Cramfs 根文件系统的特点,并详细的说明了 NANDFLASH 上建立一个可读可写型嵌入式Linux 的Cramfs 根文件系统的新方法。 根文件系统不同于普通文件系统,它是在内核启动时挂载(mount)的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后把一些基本的初始化脚本和服务程序等加载到内存中。 Linux 根文件系统是树型结构组织[1,3],它包含了内核和系统管理所需要的各种文档和程序等。一般来说,根目录“/”下顶层目录都有一些比较固定命名和用途,下面列出一个 Linux 根文件系统中的比较常见的目录结构。 /bin:存放二进制可执行命令的目录。 /dev:存放设备文件和目录。 /etc:存放系统管理和配置文件和目录。 /home:用户主目录,比如用户user 的主目录就是/home/user,可以用~user 来表示。 /lib:存放动态链接共享库的目录。 /sbin:存放系统管理员使用的管理程序的目录。 /tmp:公用的临时文件存储点。 /root:系统管理员的主目录。 /mnt:用以临时挂载其他的文件系统。 /proc:虚拟文件系统,可直接访问这个目录来获取系统信息。 /var:某些大文件溢出区。 /usr:存放应用程序和文件。 2、Cramfs 根文件系统及其在实际应用中存在的问题 Cramfs 是Linux 的创始人 LinusTorvalds 参与开发的一种只读的压缩文件系统,它基于 MTD(MemoryTechnologyDevice,存储技术设备)驱动程序。在 cramfs 文件系统中,每一页(4KB)被单独压缩,可以随机页访问,其压缩比高达 2:1,为嵌入式系统节省大量的FLASH...