嵌入式linux中cramfs根文件系统的移植实现

嵌入式linux中cramfs根文件系统的移植实现

ID:31361750

大小:113.00 KB

页数:8页

时间:2019-01-09

嵌入式linux中cramfs根文件系统的移植实现_第1页
嵌入式linux中cramfs根文件系统的移植实现_第2页
嵌入式linux中cramfs根文件系统的移植实现_第3页
嵌入式linux中cramfs根文件系统的移植实现_第4页
嵌入式linux中cramfs根文件系统的移植实现_第5页
资源描述:

《嵌入式linux中cramfs根文件系统的移植实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、嵌入式Linux中CramFS根文件系统的移植实现  摘要:首先研究了嵌入式Linux系统以及CramFS文件系统的移植,然后分析了嵌入式Linux系统及CramFS文件系统的特性,其次,详细说明了移植最小Linux系统的制作过程,最后,对制作出来的Linux系统镜像进行测试。最终的测试结果显示,系统移植成功且能够实现Linux系统的基本命令。  关键词:LinuxCramFSisoLinux  中图分类号:TP316.81文献标识码:A文章编号:1007-9416(2016)05-0000-00  随着电子产业的不断发展,基于ARM技术的系统设计和开

2、发平台越来越多地在控制类、消费类、通信类等电子产品中广泛应用。从软件角度上看,构建基于ARM技术的Linux系统要涉及到引导加载程序、Linux内核、文件系统、用户应用程序几部分的设计。由于存储空间有限,如何有效地使用有限的存储空间是嵌入式开发者必须考虑的,合适的文件系统格式是解决这一问题的关键所在。  1CramFS文件系统  CramFS是专门针对闪存设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩。它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时候,马上计算出该数据在CramFS中

3、的位置,将它实时地解压缩到内存之中,8然后通过对内存的访问来获取文件系统中需要读取的数据。  CramFS文件系统的基本组成:初始化程序、Shell程序以及其他Linux常用工具、配置文件、链接库、图形界面程序和用户应用程序,文件系统是紧跟Linux内核放置,由内核加载,主要存放用户应用程序和配置信息。在嵌入式的环境之下,内存和外存资源都需要节约使用。但是它也有很致命的弱点。在正常情况下,同样的代码不仅在外存中占据了空间(以压缩后的形式存在),而且还在内存中占用了更大的空间(以解压缩之后的形式存在),这违背了嵌入式环境下尽量节省资源的要求。  2Cra

4、mFS文件系统的特性  CramFS采用实时解压缩方式,但解压缩的时侯有延迟。CramFS的数据都是经过处理、打包的,对其进行写操作有一定困难。所以CramFS不支持写操作,这个特性刚好适合嵌入式应用中使用Flash存储文件系统的场合。在CramFS中,文件最大不能超过16MB。支持组标识(gid),但是mkcramfs只将gid的低8位保存下来,因此只有这8位是有效的。  在支持硬链接方面CramFS并没有完全处理好,硬链接的文件属性中,链接数仍然为1。CramFS的目录中,没有“.”和“..”这两项。因此,CramFS中的目录的链接数通常也仅有一个

5、。CramFS中不会保存文件的时间戳(timestamps)信息。当然,正在使用的文件由于inode保存在内存中,因此其时间可以暂时地变更为最新时间,但是不会保存到CramFS文件系统中去。8  CramFS与InitramFS相比较,InitramFS具有随着文件系统中数据的增减自动增减容量、不需要额外的文件系统驱动的优点,而CramFS只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。它们都是只读文件系统,而RomFS文件系统可以构造出一个更小的内核,大约4000字节,并且很节省内存。但是RomFS需要同时支持虚拟盘(RAMDISK)临时文

6、件和数据文件的存储。  3CramFS文件系统目录  一个完整的CramFS文件系统通常包含如下目录:  Linuxrc、bin、sbin、etc、lib、dev、usr、mnt。  Linuxrc启动脚本文件,由BootLoader核心命令行确定init=/Linuxrc,加载/etc目录为ramfs,(CramFS为只读文件系统),拷贝/mnt/etc到/etc,配置文件目录重新加载根文件系统和/etc文件系统,执行init进程。  bin引导启动所需的命令或用户可能用的命令。  sbin系统管理员服务程序,其中最重要的是供内核初始化之后执行的/s

7、bin/init进程,系统启动时由init解释并行/etc/inittab,inittab将指导int去调用一个系统初始化程序/etc/init.d/rcS。  etc特定机器的配置文件以及用户数据存放目录,其中的所有内容是在内核运行后,由Linuxrc从/mnt/etc拷贝得到的。  lib文件系统上的程序所需的动态库。  dev驱动程序存放目录,可以在这里存放自己编写的驱动程序。  usr用于存放用户程序和配置文件的目录,可以根据需要进行设置。目录下的/usr/etc/rc.local执行本地所需要的初始化,如安装核心模块,进行网络,运行应用程序,

8、启动图形界面等。8  4移植最小Linux系统  4.1系统环境搭建  操作系统:物理机win

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。