- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式Linux中CramFS根文件系统的移植实现.doc
嵌入式Linux中CramFS根文件系统的移植实现
摘要:首先研究了嵌入式Linux系统以及CramFS文件系统的移植,然后分析了嵌入式Linux系统及CramFS文件系统的特性,其次,详细说明了移植最小Linux系统的制作过程,最后,对制作出来的Linux系统镜像进行测试。最终的测试结果显示,系统移植成功且能够实现Linux系统的基本命令。
关键词:Linux CramFS isoLinux
中图分类号:TP316.81 文献标识码:A 文章编号:1007-9416(2016)05-0000-00
随着电子产业的不断发展, 基于 ARM技术的系统设计和开发平台越来越多地在控制类、消费类、通信类等电子产品中广泛应用。从软件角度上看, 构建基于ARM 技术的Linux 系统要涉及到引导加载程序、Linux 内核、文件系统、用户应用程序几部分的设计。由于存储空间有限, 如何有效地使用有限的存储空间是嵌入式开发者必须考虑的, 合适的文件系统格式是解决这一问题的关键所在。
1 CramFS文件系统
CramFS 是专门针对闪存设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩。它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中, 而只是在系统需要访问某个位置的数据的时候, 马上计算出该数据在 CramFS 中的位置, 将它实时地解压缩到内存之中, 然后通过对内存的访问来获取文件系统中需要读取的数据。
CramFS 文件系统的基本组成: 初始化程序、Shell 程序以及其他 Linux常用工具、配置文件、链接库、图形界面程序和用户应用程序,文件系统是紧跟 Linux 内核放置,由内核加载,主要存放用户应用程序和配置信息。在嵌入式的环境之下,内存和外存资源都需要节约使用。但是它也有很致命的弱点。在正常情况下,同样的代码不仅在外存中占据了空间(以压缩后的形式存在),而且还在内存中占用了更大的空间(以解压缩之后的形式存在),这违背了嵌入式环境下尽量节省资源的要求。
2 CramFS文件系统的特性
CramFS采用实时解压缩方式,但解压缩的时侯有延迟。CramFS的数据都是经过处理、打包的,对其进行写操作有一定困难。所以CramFS不支持写操作,这个特性刚好适合嵌入式应用中使用Flash存储文件系统的场合。在CramFS中,文件最大不能超过16MB。支持组标识(gid),但是mkcramfs只将gid的低8位保存下来,因此只有这8位是有效的。
在支持硬链接方面CramFS并没有完全处理好,硬链接的文件属性中,链接数仍然为1。CramFS的目录中,没有“.”和“..”这两项。因此,CramFS中的目录的链接数通常也仅有一个。CramFS中不会保存文件的时间戳(timestamps)信息。当然,正在使用的文件由于inode保存在内存中,因此其时间可以暂时地变更为最新时间,但是不会保存到CramFS文件系统中去。
CramFS与InitramFS相比较,InitramFS具有随着文件系统中数据的增减自动增减容量、不需要额外的文件系统驱动的优点,而CramFS只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。它们都是只读文件系统,而RomFS文件系统可以构造出一个更小的内核,大约4000字节,并且很节省内存。但是RomFS需要同时支持虚拟盘(RAMDISK)临时文件和数据文件的存储。
3 CramFS 文件系统目录
一个完整的 CramFS 文件系统通常包含如下目录:
Linuxrc、bin、sbin、etc、lib、dev、usr、mnt。
Linuxrc 启动脚本文件,由 Boot Loader 核心命令行确定 init=/Linuxrc, 加载/etc 目录为 ramfs, (CramFS 为只读文件系统), 拷贝/mnt/etc 到/etc, 配置文件目录重新加载根文件系统和/etc 文件系统,执行 init 进程。
bin 引导启动所需的命令或用户可能用的命令。
sbin 系统管理员服务程序, 其中最重要的是供内核初始化之后执行的/sbin/init 进程, 系统启动时由init 解释并行/etc/inittab, inittab 将指导 int 去调用一个系统初始化程序/etc/init.d/rcS。
etc 特定机器的配置文件以及用户数据存放目录, 其中的所有内容是在内核运行后, 由 Linuxrc 从/mnt/etc 拷贝得到的。
lib 文件系统上的程序所需的动态库。
dev 驱动程序存放目录, 可以在这里存放自己编写的驱动程序。
usr 用于存放用户程序和配置文件的目录,
文档评论(0)