《2022年使用Busybox制作Cramfs根文件系统 .pdf》由会员分享,可在线阅读,更多相关《2022年使用Busybox制作Cramfs根文件系统 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、收稿日期:2008-07-07基金项目:广东省科学计划资助项目(2006B12301002)作者 简介:陈立 定(1964-),男,湖北 天门人,副教授,硕 士生导师,研究方向为网络化控制系统理论与应用、现 场总线及其应用和智能化集成系统的研究。使用 Busybox制作 Cramfs根文件系统陈立定,杨俊辉,陈伟欣(华南理工大学自动化科学与工程学院,广东 广州 510641)摘要:根文件系统是构建嵌入式Linux 系统的重要组成部分,在嵌入式应用中,硬件资源也相对有限,因此使用短小精悍的文件系统是必然的选择。讨论了Busybox及 Cramfs的特点,并详细介绍用Busybox 制作嵌入式根文
2、件Cramfs 的一般步骤。所制作的Cramfs文件系统能正常运行,为创建 jfss2,yaffs 等文件系统提供了参考。关键词:Busybox;嵌入式 Linux;根文件系统;Cramfs中图分类号:TP316.2文献标识码:A文章编号:1673-629X(2009)04-0146-03Use Busybox to Make Cramfs Root FilesystemCHEN Li2ding,YANGJun 2hui,CHEN Wei2xin(Collegeof Automation Scienceand Engineering,South China University of Tech
3、nology,Guangzhou 510641,China)Abstr act:Root file system is an im portant component of building Linux embedded system.In embeddedapplications,hardware resourcesare relatively limited,so a dapper file system isa good choice.Briefl y discussedthe characteristics of Cramfs and Busybox,delivers a nor2ma
4、l method to make Cramfs root filesystem with busybox,and provides a reference to create such as jfss2,yaffs root filesystem.Key words:Busybox;embedded Linux;root filesystem;Cramfs1嵌入式根文件系统嵌入式 Linux 系统一般由包括引导加载程序、Lin2ux 内核、文件系统、应用程序四部分组成1。根文件系统作为其中的一个重要组成部分,是内核启动时加载的第一个文件系统,主要是为内核的启动提供各种工具软件、库文件、脚本、配
5、置文件等并可以作为存储读写数据的区域。在嵌入式Linux 应用中,主要的存储设备为RAM(DRAM,SDRAM)和 ROM(常采用Flash 存储器),常用的基于存储设备的文件系统类型包括:jffs2,yaffs,cramfs,romfs,ramdisk,ramfs/tmpfs等2。2Cramfs 简介在嵌入式的环境之下,要求尽量节省系统硬件资源,特别是内存RAM 和外存 Flash 资源都需要节约使用3。如果使用基于RAM 的文件系统,比如 ramdisk,则在系统运行加载文件系统时,需要把存储在Flash上的文件系统影像文件解压到内存RAM 中,构建起ramdisk 环境,这样才能可以正常
6、运行系统程序与应用程序。这样一来,系统在运行时就会占用很大的空间,包括存放文件系统影像文件的Flash空间和存放解压后文件系统代码的RAM 空间。这不符合节省系统硬件资源的要求。因此,使用基于ROM 的文件系统是解决这个问题的一种方式,比如 jffs2,Cramfs 都是不错的选择。Cramfs 是 Linux 的创始人Linus Torvalds 撰写的只具备基本特性的文件系统。Cramfs 是个极其简单、经过压缩以及只读的文件系统,主要用于嵌入式系统。Cramfs 是个压缩的文件系统,其压缩比可以高达2B1,可以为嵌入式系统节省大量的Flash 存储空间,同时在运行的时候它并无需一次性地将
7、文件系统中的任何内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的 时侯,立即 计算 出该数据在Cramfs 中的位置,将其实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。Cramfs 中的解压缩连同解压缩之后的内存中数据存放位置都是由Cramfs 文件系统本身进行维护的,用户无需了解具体的实现过程,因此这种方式增强了透明度,对开发人员来说,既方便,又节省了存储空间 4。第 19 卷第 4 期2009 年 4 月计 算 机 技 术 与 发 展COM PUT ER TECHNOLOGYAND DEVELOPMENTVol.19No.4Apr.2009名师资料
8、总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -Cramfs 除了具备上述所说的特性外,它还有以下几个方面的限制 5:(1)每个文件最大不超过16MB。(2)不提供/.0(当前)或/.0(上一级)目录条目。(3)文件的 UID 字段具有16 位的宽度,GID 字段具有 8 位的宽度。一般的文件系统通常会支持宽度16 或 32 位的 UID 和 GID 字段。Cramfs 的 GID 字段被截短为较低的8 位,建立在它上面的GID 字段的最大值为 255。(4)Cramfs 中,不会保存文件的时间戳(times2t amps)信息。当然,正在使用的文件由于inode保存在内存中,
9、因此其时间能够暂时地变更为最新时间,但是不会保存到Cramfs 文件系统中去。(5)只 有 内存 分 页大 小 为 4096 字节 的 内核(PAGE-CACHE-SIZE 为 4096 的值必须设为4096)才可以读取Cramfs 的影像。(6)支持硬链接,但是无论是否经过链接,所以文件的链接计数皆为1,即使有多个文件系统项目指向一个文件,该文件的链接计数也还是1。虽然 Cramfs 的只读属性是它的一大缺陷,使得用户无法对其内容对进扩充,但是其压缩比相当高,速度快,效率高,其只读的特点也有利于保护文件系统免受破坏,提高了系统的可靠性,因此 Cramfs在嵌入式系统中被广泛应用。3Busyb
10、ox 简介BusyBox 被称作是嵌入式Linux 的瑞士军刀,是一个集成了一百多个最常用Linux 命令和工具的软件,具有实用、短小、稳定等特点6。Busybox 利用 Linux 实用工具中代码大量重复的事实,将重复的代码重新整理,放到一个文件中,减少了多次包含,这样就可以节省系统的空间和提供程序的执行速度,很适合对于资源比较紧张的嵌入式系统使用。当要执行具体的某个命令时,只需要通过不同的符合链接来确定要执行哪个操作,因为所有的命令都是链接到同一个可执行程序Busybox 的。另 外 Busybox 的配置类似Linux 内核的配置,使用起来也相当方便。接下来介绍编译Busybox 以及如
11、何生成根文件系统的一般步骤。4配置 BusyboxBusybox 的源代码可以到官方网站htt p:/ d/#tar vxjf busybox-1.00-pre10.t ar.bz2#c d busybox-1.00-pre10#make menuconfig在配置菜单界面中,有几个选项要注意一下:(1)General Configuration y,选择/Support for de 2vfs0选项。现在的Busybox 新版本去掉了这个选项,通过修改配置文件可以加入。(2)Buile Options y,在这项中要选择使用静态库,这样才能把Busybox 编译成静态链接的可执行文件,运行时
12、才独立于其他函数库。否则必须要其他库文件才能运行,在单一个Linux 内核不能使其正常工作。交叉编译工具的PREFIX 则根据自己安装的交叉编译工具目录选择路径。图1 为静态库配置界面。图 1静态库配置界面(3)Another Bourne-like Shell y Chooseyour de 2fault shell(ash)y,这里应该选中默认shell:ash,否则不会生成 sh,导致不能解释脚本文件。图2 为 shell 配置界面。图 2shell 配置界面(4)其他的一些选项默认就可以了,对于那些Lin2ux 基本命令的选项,则根据自己需要选择。配置好后#147#第 4 期陈立定等:
13、使用 Busybox制作 Cramfs 根文件系统名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 4 页 -退出并保存。5编译安装 Busybox执行#make#make installBusybox 将在默认的PREFIX 目录-install 下面生成 bin、sbin、usr 三个子目录和一个链接文件linuxrc。6生成 Cramfs 根文件系统以下为生成Cramfs 根文件系统步骤 7。(1)创建目录rootfs,把-install 下面的 bin、sbin、usr复制到 rootfs 目录下面,并在 rootfs 目录下建立dev、etc、lib、proc、tmp、v
14、ar、home 子目录(其实只有/bin、/dev、/etc、/lib、/sbin、/usr 目录是不可或缺的,其它的目录/boot、/home、/mnt、/opt、/proc、/root、/tmp、/var都可以根据需要选择)。在 etc 下面建立目录init.d 目录。(2)准备启动文件init tab、fstab、linuxrc、rcS。其中inittab、fstab放在 etc 目录下面,rcS 放在 etc/init.d/目录下面,linuxrc 放在 rootfs 目录下面。下面给出一个简单的启动文件配置:inittab 文件(系统启动后所访问的第一个脚本文件)8:#This is
15、 run first except when booting:sysinit:/etc/init.d/rcS#Start an/askfirst0 shell on the console#:askfirst:-/bin/bash:askfirst:-/bin/sh#Stuff to do when restarting the init process:restart:/sbin/init#Stuff to do before rebooting:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount-a-rfstab文件(定义了文件系统的各个/挂载点 0,
16、需要与实际的系统相配合):none/procprocdefaults0 0none/dev/ptsdevptsmode=06220 0tmpfs/dev/shm tmpfsdefaults0 0rcS文件:#!/bin/sh/bin/mount-alinuxrc 文件:#!/bin/shecho/mount/etc asramfs 0/bin/mount-f-t cramfs-o remount,ro/dev/bon/2/bin/mount-t ramfs ramfs/var/bin/mkdir-p/var/tmp/bin/mkdir-p/var/run/bin/mkdir-p/var/log
17、/bin/mkdir-p/var/lock/bin/mkdir-p/var/empty#/bin/mount-t usbdevfsnone/proc/bus/usbexec/sbin/init(3)创建节点 console,该节点必须在dev/目录下面创建。#mknod console c 5 1(4)如果 Busybox 采用了动态链接的方式编译,还需要把busybox 所需要的动态库:libcrypt.so.1、libc.so.6、ldlinux.so.2 放到 lib 目录中。文中采用的是静态链接,所以可以不用复制库文件。7生成根文件系统映像回 到根 目录,执 行命 令 mkcramfs
18、 rootfs demo.c ramfs,这样就可以生成Cramfs 文件系统的映像de 2mo.cramfs。需 要 说 明 的是mkcramfs 命 令可 以 从http:/ 载,同 时mkcramfs 要 放 到 PC 机 Linux系 统的/bin/目 录 下面 9。8下载执行映像文件文中使用的是ARM9 S3C2410 开发板,通过 dnw把映像文件下载、烧写到开发板nand flash 中属于文件系统的分区,正常启动界面如图3 所示。图 3启动界面9结束语介绍了利用Busybox 创建嵌入式Linux 文件系统的一般流程,为创建jfss2、yaffs 等文件系统提供了参考,它们的创
19、建过程跟Cramfs 一样,只是在最后生成时用的命令不一样。同时,用 Busybox 创建的Cramfs文件系统也能很好解决对于嵌入式系统存储资源相对比较紧张的场合。(下转第 153 页)#148#计算机技术与发展第 19 卷名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 4 页 -根据资源节点服务器发来的目录信息,建立起一个覆盖所有节点资源数据的统一目录视图,在用户权限认证通过的情况下,用户可以连接到资源节点服务器,获取具体的科技资源数据。图 6混合式 P2P 体系结构3结束语结合我国科技资源的建设现状,给出了一种面向科技信息的资源共享服务平台设计方案。系统采用混合式的 P2P
20、 体系结构,满足了科技资源的分布式存储与统一管理的需求,而功能上也覆盖了资源的汇交、加工处理和目录服务等实现资源共享所需的过程。正是在项目实施过程中设计并实现了这一资源共享服务平台,对科技资源的集成与共享服务发挥了重要作用,同时也为其他以科技资源共享为基础的项目提供了软件运行基础。参考文献:1科技部,发展改革委,教育部,财政部.2004-2010 年国家科技基 础条件 平台建 设纲要 EB/OL.2004-09-15.2008-08-01.http:/ J.计算机工程与设计,2006,22(27):4337-4339.3何敬刚,霍宏,方涛.基于 MVC 模式空间元数据目录服务的实现 J.计算机
21、工程与应用,2006(13):165-167.4Schollmeier R.A definition of peer-to-peernetworking forthe classification of peer-to-peerarchitectures and applica 2tions C/In:Proceedingsof the First International Confer 2ence on Peer-to-Peer Computing.Linkoping,Sweden:IEEE Computer Society,2001.5Clarke I,SandbergO,Wiley B
22、,et al.Freenet:A DistributedAnonymous Information Storage and Retrieval System C/In Proceedings of the ICSI Workshop on Design Issues inAnonymity and Unobservability.Berkeley,California:s.n.,2000.6Ripeanu M.Peer-to-peer architecture casestudy:Gnutellanetwork R.Technical report.USA:University of Chic
23、ago,2001.7Napster Inc.Thenap ster homepage EB/OL.2001.Inhttp:/ N S,Krekelberg A.Usabilityand privacy:a study ofKazaa P2Pfile-sharing C/In Proceedingsof the CHI 2003conferenceon human factors in computing systems.Fort Laud2erdale,Florida:s.n,2003.9王珊,张新宇.Peer-to-Peer 数据共享研究 J.计算机应用与软件,2003,20(11):1-4
24、.10 Wang Fusheng,Liu Peiya,PearsonJ.et al.Experiment Man2agementwith Metadata-basedIntegration for CollaborativeScientific ResearchC/In Proceedi ngs of the 22nd Interna2tional Conference on Data Engineering.Atlanta,Georgia:s.n.,2006.11Wang Fusheng,BourguP E,Hackenberg G.SciPort:anadaptablescientific
25、 data integration platform for collaborativescientific research C/In Proceedings of the 33rd interna2tional conferenceon Very Large Data Bases.Vienna,Austria:s.n.,2007.(上接第 148 页)参考文献:1Yaghmour K.构建嵌入式Linux 系统 M.韩存兵,龚波改编.北京:中国电力出版社,2004.2Aleph One Ltd.Embedded Debian,Yaff s:A NAND2FlashFilesystem OL
26、.2002.http:/www.aleph1.co.uk/yaffs/.3熊伟,董金明.嵌入式 Linux 中根文件系统的实现 J.电子测量技术,2007(7):25-30.4马忠梅,李善平,康慨,等.ARM&Linux 嵌入式系统教程 M.北京:北京航空航天大学出版社,2004.5Corbet J,Rubini A,Kroah-Hartman G.LINUX设备驱动程序 M.魏永明,耿岳,钟书毅,译.北京:中国电力出版社,2006.6张方樱.构建嵌入式Linux 的根文件系统 J.实验室科学,2007(6):28-30.7卢剑翔,刘成安,胡和智,等.基于 S3C2410 的 Cramfs 根文件系统的移植 J.微机算机信息,2006,22(11):22-25.8杨延军.用 Busybox制作嵌入式Linux 的文件系统 J.单片机与嵌入式系统应用,2005,1:17-19.9张勇.嵌入式 Linux 下 JFFS2 文件系统的实现 J.计算机技术与发展,2006,16(4):175-180.#153#第 4 期曾茜等:面向科技信息的资源共享服务平台设计名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 4 页 -