linux文件系统制作流程17页文档资料.docx
- 文档编号:6907704
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:14
- 大小:23.24KB
linux文件系统制作流程17页文档资料.docx
《linux文件系统制作流程17页文档资料.docx》由会员分享,可在线阅读,更多相关《linux文件系统制作流程17页文档资料.docx(14页珍藏版)》请在冰豆网上搜索。
linux文件系统制作流程17页文档资料
linux文件系统制作流程
课本、报刊杂志中的成语、名言警句等俯首皆是,但学生写作文运用到文章中的甚少,即使运用也很难做到恰如其分。
为什么?
还是没有彻底“记死”的缘故。
要解决这个问题,方法很简单,每天花3-5分钟左右的时间记一条成语、一则名言警句即可。
可以写在后黑板的“积累专栏”上每日一换,可以在每天课前的3分钟让学生轮流讲解,也可让学生个人搜集,每天往笔记本上抄写,教师定期检查等等。
这样,一年就可记300多条成语、300多则名言警句,日积月累,终究会成为一笔不小的财富。
这些成语典故“贮藏”在学生脑中,自然会出口成章,写作时便会随心所欲地“提取”出来,使文章增色添辉。
816530200200姓名:
Michel.Lee职业:
在西南边陲的一个国营单位从事嵌入式软件的开发年龄:
位置:
个性介绍:
…up_user.jpgup_user_pre.jpgOTHER1202410668000星级BLOG0lee213#FFFFFF#204689_blank10626502009-03-0420:
00:
151277611062652009-12-2417:
25:
331277621062652009-12-2417:
25:
481277631062652009-12-2417:
25:
561277641062652009-12-2417:
26:
0812776502009-12-2417:
28:
031277661277652009-12-2417:
28:
4010624902009-12-2417:
27:
351095361062492009-04-1622:
27:
381095371062492009-04-1622:
29:
071095381062492009-04-1622:
29:
271095391062492009-04-1622:
30:
001095401062492009-04-1622:
30:
251095411062492009-04-1622:
31:
001095421062492009-04-1622:
31:
261095431062492009-04-1622:
34:
5412775602009-12-2417:
27:
431277571277562009-12-2417:
22:
571277581277562009-12-2417:
23:
081277591277562009-12-2417:
23:
181277601277562009-12-2417:
23:
2910625102009-12-2417:
27:
511095441062512009-04-1622:
35:
391095451062512009-04-1622:
36:
061095471062512009-04-1622:
37:
041095461062512009-04-1622:
36:
2410625002009-03-0420:
00:
5412892002019-01-0808:
52:
381289211289202019-01-0808:
53:
021289221289202019-01-0808:
54:
241289231289202019-01-0808:
54:
331289241289202019-01-0808:
55:
191289251289202019-01-0808:
55:
2612439702009-11-0709:
52:
2312342602009-10-2216:
05:
0010911902009-04-1012:
02:
2410626202009-03-0419:
56:
4112775502009-12-2417:
21:
582085302019-01-2308:
42:
001845402019-01-2308:
42:
151845502019-01-2308:
42:
21"20090304","20090328","20090401","20090406","20090407","20090410","20090415","20090727","20091009","20091021","20091022","20091102","20091107","20091218","20091221","20091225","20091229","20091230","20190108","20190714","20190715",""22729341277592019-07-1509:
06:
422019-07-1509:
06:
4210转载16Linux文件系统简介\r\nLinux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(VirtualFileSystem),为各类文件系统提供一个统一的操作界面和应用编程接口。
单靠“死”记还不行,还得“活”用,姑且称之为“先死后活”吧。
让学生把一周看到或听到的新鲜事记下来,摒弃那些假话套话空话,写出自己的真情实感,篇幅可长可短,并要求运用积累的成语、名言警句等,定期检查点评,选择优秀篇目在班里朗读或展出。
这样,即巩固了所学的材料,又锻炼了学生的写作能力,同时还培养了学生的观察能力、思维能力等等,达到“一石多鸟”的效果。
\r\nLinux下的文件系统结构如下:
其实,任何一门学科都离不开死记硬背,关键是记忆有技巧,“死记”之后会“活用”。
不记住那些基础知识,怎么会向高层次进军?
尤其是语文学科涉猎的范围很广,要真正提高学生的写作水平,单靠分析文章的写作技巧是远远不够的,必须从基础知识抓起,每天挤一点时间让学生“死记”名篇佳句、名言警句,以及丰富的词语、新颖的材料等。
这样,就会在有限的时间、空间里给学生的脑海里注入无限的内容。
日积月累,积少成多,从而收到水滴石穿,绳锯木断的功效。
\r\n
\r\n
\r\n
\r\nLinux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。
之后可以自动或手动挂载其他的文件系统。
因此,一个系统中可以同时存在不同的文件系统。
\r\n
不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。
在嵌入式Linux应用中,主要的存储设备为RAM(DRAM,SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:
jffs2,yaffs,cramfs,romfs,ramdisk,ramfs/tmpfs等。
\r\n
\r\n
基于FLASH的文件系统
\r\nFlash(闪存)作为嵌入式系统的主要存储媒介,有其自身的特性。
Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1(擦除Flash就是把对应存储块的内容恢复为1),因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区间,这种擦除是以块(block)为单位进行的。
\r\n
闪存主要有NOR和NAND两种技术(简单比较见附录)。
Flash存储器的擦写次数是有限的,NAND闪存还有特殊的硬件接口和读写时序。
因此,必须针对Flash的硬件特性设计符合应用要求的文件系统;传统的文件系统如ext2等,用作Flash的文件系统会有诸多弊端。
\r\n
在嵌入式Linux下,MTD(MemoryTechnologyDevice,存储技术设备)为底层硬件(闪存)和上层(文件系统)之间提供一个统一的抽象接口,即Flash的文件系统都是基于MTD驱动层的(参见上面的Linux下的文件系统结构图)。
使用MTD驱动程序的主要优点在于,它是专门针对各种非易失性存储器(以闪存为主)而设计的,因而它对Flash有更好的支持、管理和基于扇区的擦除、读/写操作接口。
\r\n
顺便一提,一块Flash芯片可以被划分为多个分区,各分区可以采用不同的文件系统;两块Flash芯片也可以合并为一个分区使用,采用一个文件系统。
即文件系统是针对于存储器分区而言的,而非存储芯片。
\r\n1.jffs2
\r\nJFFS文件系统最早是由瑞典AxisCommunications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。
JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux,uCLinux中。
\r\nJffs2:
日志闪存文件系统版本2(JournallingFlashFileSystemv2)
\r\n
主要用于NOR型闪存,基于MTD驱动层,特点是:
可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供"写平衡"支持等。
缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。
\r\n
目前jffs3正在开发中。
关于jffs系列文件系统的使用详细文档,可参考MTD补丁包中mtd-jffs-HOWTO.txt。
\r\njffsx不适合用于NAND闪存主要是因为NAND闪存的容量一般较大,这样导致jffs为维护日志节点所占用的内存空间迅速增大,另外,jffsx文件系统在挂载时需要扫描整个FLASH的内容,以找出所有的日志节点,建立文件结构,对于大容量的NAND闪存会耗费大量时间。
\r\n2.yaffs
\r\nyaffs/yaffs2是专为嵌入式系统使用NAND型闪存而设计的一种日志型文件系统。
与jffs2相比,它减少了一些功能(例如不支持数据压缩),所以速度更快,挂载时间很短,对内存的占用较小。
另外,它还是跨平台的文件系统,除了Linux和eCos,还支持WinCE,pSOS和ThreadX等。
\r\nyaffs/yaffs2自带NAND芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD与VFS,直接对文件系统操作。
当然,yaffs也可与MTD驱动程序配合使用。
\r\nyaffs与yaffs2的主要区别在于,前者仅支持小页(512Bytes)NAND闪存,后者则可支持大页(2KB)NAND闪存。
同时,yaffs2在内存空间占用、垃圾回收速度、读/写速度等方面均有大幅提升。
\r\n3.Cramfs
\r\nCramfs是Linux的创始人LinusTorvalds参与开发的一种只读的压缩文件系统。
它也基于MTD驱动程序。
\r\n
在cramfs文件系统中,每一页(4KB)被单独压缩,可以随机页访问,其压缩比高达2:
1,为嵌入式系统节省大量的Flash存储空间,使系统可通过更低容量的FLASH存储相同的文件,从而降低系统成本。
\r\nCramfs文件系统以压缩方式存储,在运行时解压缩,所以不支持应用程序以XIP方式运行,所有的应用程序要求被拷到RAM里去运行,但这并不代表比Ramfs需求的RAM空间要大一点,因为Cramfs是采用分页压缩的方式存放档案,在读取档案时,不会一下子就耗用过多的内存空间,只针对目前实际读取的部分分配内存,尚没有读取的部分不分配内存空间,当我们读取的档案不在内存时,Cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中。
\r\n
另外,它的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。
\r\n
由于以上特性,Cramfs在嵌入式系统中应用广泛。
\r\n
但是它的只读属性同时又是它的一大缺陷,使得用户无法对其内容对进扩充。
\r\nCramfs映像通常是放在Flash中,但是也能放在别的文件系统里,使用loopback设备可以把它安装别的文件系统里。
\r\n4.Romfs
\r\n
传统型的Romfs文件系统是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存,按顺序存放数据,因而支持应用程序以XIP(eXecuteInPlace,片内运行)方式运行,在系统运行时,节省RAM空间。
uClinux系统通常采用Romfs文件系统。
\r\n
其他文件系统:
fat/fat32也可用于实际嵌入式系统的扩展存储器(例如PDA,Smartphone,数码相机等的SD卡),这主要是为了更好的与最流行的Windows桌面操作系统相兼容。
ext2也可以作为嵌入式Linux的文件系统,不过将它用于FLASH闪存会有诸多弊端。
\r\n
基于RAM的文件系统
\r\n1.Ramdisk
\r\nRamdisk是将一部分固定大小的内存当作分区来使用。
它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统。
将一些经常被访问而又不会更改的文件(如只读的根文件系统)通过Ramdisk放在内存中,可以明显地提高系统的性能。
\r\n
在Linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文件系统一起载入内存。
\r\n2.ramfs/tmpfs
\r\nRamfs是LinusTorvalds开发的一种基于内存的文件系统,工作于虚拟文件系统(VFS)层,不能格式化,可以创建多个,在创建时可以指定其最大能使用的内存大小。
(实际上,VFS本质上可看成一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓冲。
)
\r\nRamfs/tmpfs文件系统把所有的文件都放在RAM中,所以读/写操作发生在RAM中,可以用ramfs/tmpfs来存储一些临时性或经常要修改的数据,例如/tmp和/var目录,这样既避免了对Flash存储器的读写损耗,也提高了数据读写速度。
\r\nRamfs/tmpfs相对于传统的Ramdisk的不同之处主要在于:
不能格式化,文件系统大小可随所含文件内容大小变化。
\r\nTmpfs的一个缺点是当系统重新引导时会丢失所有数据。
\r\n3.网络文件系统NFS(NetworkFileSystem)
\r\nNFS是由Sun开发并发展起来的一项在不同机器、不同操作系统之间通过网络共享文件的技术。
在嵌入式Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。
\r\n
以上讨论的都是基于存储设备的文件系统(memory-basedfilesystem),它们都可用作Linux的根文件系统。
实际上,Linux还支持逻辑的或伪文件系统(logicalorpseudofilesystem),例如procfs(proc文件系统),用于获取系统信息,以及devfs(设备文件系统)和sysfs,用于维护设备文件。
\r\n
\r\n
开发环境
\r\n
操作系统:
Ubuntu10.4(linuxkernel-v2.6.31)
\r\n
移植Linux内核版本:
2.6.30
\r\n
交叉编译工具:
arm-linux-gcc4.3.2
\r\n
文件系统制作工具:
Busybox-1.16.1
\r\n
\r\n
下载Busybox-1.16.1
\r\nBusybox-1.16.1的下载地址:
\r\n
\r\n
\r\n
配置Busybox
\r\n1.创建制作文件系统的根目录
\r\n
在提示符后输入:
\r\n
/opt#mkdirrootfs
\r\n2.解压busybox-1.16.1
\r\n
进入存放busybox-1.16.1压缩包文件的目录,在提示符后输入:
\r\n
/opt#tarjxvfbusybox-1.16.1.tar.ba2
\r\n3.进入busybox-1.16.1根目录,修改Makefile,修改ARCH和CROSS_COMPILE两变量的值
\r\nARCH?
=arm
\r\nCROSS_COMPILE?
=arm-linux-
\r\n4.通过busybox的配置菜单配置制作的文件系统
\r\n
在提示符后输入:
\r\n
/opt/busybox-1.16.1#makemenuconfig
\r\n
系统将弹出配置菜单,通过菜单选择需要的选项,如图1所示:
\r\n
\r\n
\r\n
\r\n
图1
\r\n
以下选项必须选择:
\r\nBusyboxSetting---
\r\nbuildoption--
\r\n
[]BuildBusyBoxasastaticbinary(nosharedlibs)
\r\n
[]BuildBusyBoxasapositionindependentexecutable(NEW)
\r\n
[]ForceNOMMUbuild
\r\n
[]Buildsharedlibbusybox
\r\n
[*]Produceabinaryforeachapplet,linkedagainstlibbusybox
\r\n
[*]Produceadditionalbusyboxbinarylinkedagainstlibbusybox
\r\n
[]BuildwithLargeFileSupport(foraccessingfiles2GB)
\r\n
()CrossCompilerprefix
\r\n
()AdditionalCFLAGS
\r\n
\r\nBusyboxSetting---
\r\ninstallationoption--
\r\n
[*]Don\'tuse/usr
\r\nAppletslinks(assoft-links)---
\r\n
(/opt/rootfs)BusyBoxinstallationprefix(该项输入编译安装路径,在此输入rootfs文件路径)
\r\n
\r\nBusyboxLibraryTuning---
\r\nMD5:
TradeBytesforSpeed
\r\n
[*]Faster/procscanningcode(+100bytes)
\r\n
[*]Supportfor/etc/networks
\r\n
[*]Supportfor/etc/networks
\r\n
[*]Additionaleditingkeys
\r\n
[*]vi-stylelineeditingcommands
\r\n
[*]Historysaving
\r\n
[*]Tabcompletion
\r\n
[*]Usernamecompletion
\r\n
[*]Fancyshellprompts
\r\n
\r\n
若出现如图2所示的错误:
\r\n
\r\n
\r\n
\r\n
图2
\r\n
请安装有关编译程序。
安装make,gcc,make-kpkg,运行menuconfig等等和编译内核相关的工具。
\r\n
有关命令如下:
\r\n
/opt#sudoapt-getinstallbuild-essentialkernel-packagelibncurses5-dev
\r\n
若安装不了,请检查/etc/apt/sources.list文件。
\r\n
\r\n
编译Busybox
\r\n
在提示符后输入:
\r\n
/opt/busybox-1.16.1#makeinstall
\r\n
在rootfs文件下会多了bin、sbin两个文件夹和一个linuxrc文件,如图3所示:
\r\n
\r\n
图3
\r\n
\r\n1.创建文件系统其它目录
\r\n
进入rootfs目录,在提示符后输入:
\r\n
/opt/rootfs#mkdirbootdevetchomelibmntprocrootsystmpvarusr
\r\n
建立其它基本的目录,如图4所示:
\r\n
\r\n
\r\n
\r\n
图4
\r\n
\r\n2.建立及复制文件系统所需的文件
\r\n1.在/rootfs/dev/目录下建立console和null节点文件(要root身份)
\r\n
若缺少这两个文件,在挂载文件系统时将会有报错信息,如图5所示:
\r\n
\r\n
图5
\r\n
进入/rootfs/dev/目录,在提示符后输入:
\r\n
/opt/rootfs/dev#mknod-m666consolec51
\r\n
/opt/rootfs/dev#mknod-m666nullc13
\r\n
如图6所示:
\r\n
\r\n
\r\n
\r\n
图6
\r\n
\r\n2.在/rootfs/etc/目录下建立fstab和inittab文件
\r\n
进入/rootfs/etc/目录,创建fstab文件,其内容如下:
\r\nnone/procprocdefaults00
\r\nnone/dev/ptsdevptsmode=062200
\r\ntmpfs/dev/shmtmpfsdefaults00
\r\n
\r\n
进入/rootfs/etc/目录,创建inittab文件,其内容如下:
\r\n
#[inittab]
\r\n
:
sysinit:
/etc/init.d/rcS
\r\n
:
askfirst:
-/bin/sh
\r\n
:
restart:
/sbin/init
\r\n
:
ctrlaltdel:
/sbin/reboot
\r\n
:
shutdown:
/bin/umount-a–r
\r\n
:
shutdown:
/sbin/swapoff–a
\r\n
最后在提示符下输入:
\r\n
/opt/rootfs/etc#chmod+xfstabinittab
\r\n
\r\n3.在/rootfs/etc/init.d/目录下建立rcS文件
\r\n
进入/rootfs/etc/目录,创建init.d目录,在该目录下创建rcS文件,其内容如下:
\r\n
#!
/bin/sh
\r\nexportPATH=/sbin:
/bin:
/usr/sbin:
/usr/bin
\r\necho\"running/etc/init.d/rcS\"
\r\n
\r\necho\"mount-tprocproc/proc\"
\r\nmount-tprocproc/proc
\r\n
\r\necho\"mount-tsysfs/sys/sys\"
\r\nmount-tsysfs/sys/sys
\r\n
#echo\"mount-ttmpfs/tmpfs/dev\"
\r\n
#/mount-ttmpfs/tmpfs/dev
\r\n
\r\n
#echo\"mountramfsfilesystemto/var\"
\r\n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 文件系统 制作 流程 17 文档 资料