cramfs根文件系统的移植成功(fs2410下亲测)
依据Unix的习惯,通常会将linux系统中任何对象(包括设备)都视为文件。而根文系统是所有文件和设备节点的起始点,它是决定系统能否正常启动的关键所在。本文将详细介绍利用Busybox工具集制作一种简单的根文件系统即Cramfs根文件系统的方法。
2开发平台简介
开发系统采用主机+目标板的开发模式,目标板和主机通过串行线和Ethernet网线实现通信。主机采用的是:pc机+VMware6.0虚拟机下的Red Hat 9目标板:深圳优龙公司开发的FS2410实验开发板:其主要参数:CPU:三星S3C2410,主频203MHz;内存:64M字节;NOR Flash:2M字节(SST39VF1601);NAND Flash:64M字节(K9F1208);嵌入式linux版本:linux2.4.18
根文件系统生成后用Boot Loader烧入开发板的NAND Flash的2号分区运行(其地址为:offset 0x200000 , size 0x1e00000)。
3根文件系统的基本结构
嵌入式linux根文件系统的系统的顶层目录各有其特殊的用法和目的。一般来说嵌入式linux系统的根文件系统应该包含以下内容:
(1)能够保证嵌入式linux系统中的大多数应用程序能够正常运行的最小化目录包括/bin/dev/etc/lib/proc/sbin/usr/tmp/var。如果用户需要为多用户提供可扩展环境还需建立以下目录:/home/mnt/opt/root。
(2)根文件系统所需的基本链接库:Glibc以及uClibc。
(3)基本的系统配置文件:rcS,inittab,fstab,linuxrc等脚本文件
(4)基本的设备文件:/dev/tty0/dev/ttyS0/dev/console
(5)基本的应用程序:如cd ,ls ,mv,cp等。
4使用Busybox制作Cramfs根文件系统
4.1Cramfs简介
Cramfs(Compressed Rom File System)是Linux Torvalds在Transmeta任职时,所参与开发的只具有最基本特性的文件系统。它是针对Linux内核2.4之后的版本所设计的一种新型只读文件系统,采用了zlib压缩,压缩比一般可以达到1:2,但仍可以作到高效的随机读取,Linux系统中,通常把不需要经常修改的目录压缩存放,并在系统引导的时候再将压缩文件解开。因为Cramfs不会影响系统的读取文件的速度,而且是一个高度压缩的文件系统。因此非常广泛应用于嵌入式系统中。
在嵌入式的环境之下,内存和外存资源都需要节约使用。如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,首先要把Flash上的映像文件解压缩到内存中,构造起RAMDISK环境,才可以开始运行程序。但是它也有很致命的弱点。在正常情况下,同样的代码不仅在Flash中占据了空间(以压缩后的形式存在),而且还在内存中占用了更大的空间(以解压缩之后的形式存在),这违背了嵌入式环境下尽量节省资源的要求。
而使用Cramfs文件系统可以很好的解决这个问题。Cramfs是一个压缩格式的文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时候,马上计算出该数据在Cramfs中的位置,将它实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。Cramfs中的解压缩以及解压缩之后的内存中数据存放位置都是由Cramfs文件系统本身进行维护的,用户并不需要了解具体的实现过程,因此这种方式增强了透明度,对开发人员来说,既方便,又节省了存储空间。因此我们在开发时选择使用这种简单的Cramfs文件系统进行根文件系统的移植。
4.2Busybox简介
Busybox是标准Linux工具的一个单个可执行实现。Busybox包含了一些简单的工具,例如cat和echo,还包含了一些更大、更复杂的工具,例如grep、find、mount以及telnet。有些人将Busybox称为Linux工具里的瑞士军刀.简单的说Busybox就好像是个大工具箱,它集成压缩了Linux的许多工具和命令。虽然Busybox中的这些工具相对于GNU工具有所简化,但却很实用。Busybox在设计上就充分考虑了硬件资源受限的特殊工作环境。它采用模块化设计,它采用了与linux内核配置菜单类似的配置菜单,使得配置和裁剪变得相当简单。Busybox这种特性使得其非常适合于嵌入式系统的应用。几乎所有的嵌入式Linux都使用Busybox作为工具。同时,Busybox的安装脚本使得它很容易建立基于Busybox的Linux根文件系统。本文就是通过使用Busybox这个强大的工具集来制作Cramfs根文件系统的。
4.3配置Busybox
Busybox的源代码可以到官方网站http :/ / www.busybox. net/下载,我们使用的是深圳优龙公司提供的源码包busybox - 1. 00 - pre10. tar . bz2。注意使用版本不一定是越新越好,如果新的版本编译后在目标板中无法正常启动,可以试着回到较老的版本。我们在开发过程中最开始使用的是busybox-1.1.3,结果生成的
cramfs根文件系统移植成功fs241 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)