LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1282|回复: 8

嵌入式系统中文件系统的问题

[复制链接]
发表于 2005-6-29 19:54:55 | 显示全部楼层 |阅读模式
曾经用过一个开发板,它的根文件系统是cramfs,它是只读的。但是在启动脚本文件 /etc/init.d/rcS中把tmp 目录作为另外一个文件系统(比如生成的音频文件)的挂载目录,可以临时的读写,但掉电无法保存。
那么请问:整个这个总的文件系统已经是只读的了,还可以把其中的一个目录作为另外一个文件系统的挂载目录吗?
我能明白一些,但是具体还是挺迷糊的,请高手们解释一下嵌入式系统中的文件系统到底是怎么个构造的,谢谢大家了。
发表于 2005-6-29 20:39:22 | 显示全部楼层
对于Linux,任何目录都可以作为另一个文件系统的挂载点,而不管此目录是不是只读的。如你所说tmp目录下挂载的是RAM DISK,所以掉电无法保存。
嵌入式Linux的文件系统跟桌面Linux其实没什么差别,最大的差别在于MTD层,用来支持NOR NAND FLASH。
回复 支持 反对

使用道具 举报

发表于 2005-6-30 16:29:31 | 显示全部楼层
没有明白整个文件系统是只读的,暂且我们先将cramfs看成是一种诸如ext2, ext3, vfs, ufs,minifs,NTFS,VFAT等众多文件系统中的一种(crmafs实际严格意义上并不是一种文件系统,只能 是一种压缩工具)。用cramfs好像不能将整个文件系统做成只读的吧,如果你用BUSYBOX 那么BUSYBOX 就无法启动(因为BUSYBOX 所需要的共享库就无法找到,就别说系统的1进程init去执行了)。首先 ,必须通过由init去执行/etc/init.d/rcS或/etc/rc.d/init.d/rc.sysinit(取决/etc/inittab),其次, 将整个根文件系统做成cramfs后必须用mount去挂载:
             mount -o loop -t cramfs /xxx.img /
难道你不用挂载吗? 第三,将整个根文件系统用压缩的方法不需要挂载只有类似squafs(这种文件系统或者说是工具)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-30 22:14:28 | 显示全部楼层
sybaselu,
板子上的CPU是MXL9328,运行环境是armlinux。
在PC机上做文件系统镜像的时候,确实用到的命令是 cramfs,但是我认为一定是用cramfs后将整个文件系统做成只读的了。
您说得“难道你不用挂载吗?”我不是很明白您的意思,我的板子启动时就自动挂载了文件系统的呀
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-30 22:50:30 | 显示全部楼层
Post by eking
对于Linux,任何目录都可以作为另一个文件系统的挂载点,而不管此目录是不是只读的。如你所说tmp目录下挂载的是RAM DISK,所以掉电无法保存。
嵌入式Linux的文件系统跟桌面Linux其实没什么差别,最大的差别在于MTD层,用来支持NOR NAND FLASH。


我现在就是很不开窍:为什么整个的文件系统都是只读的了,但是文件系统其中的一个目录就是可读可写。唉...,不懂呀
回复 支持 反对

使用道具 举报

发表于 2005-7-1 13:18:16 | 显示全部楼层
Post by JNUAllen
我现在就是很不开窍:为什么整个的文件系统都是只读的了,但是文件系统其中的一个目录就是可读可写。唉...,不懂呀


你看到的可读写的目录只是你在主机创建rootfs时的目录属性,挂载到目标板系统以后是否是只读的,这取决与你rootfs使用的文件系统类型;如果你使用的是CRAMFS就是只读的,如果你使用的是JFFS2就是可读写的。
回复 支持 反对

使用道具 举报

发表于 2005-7-1 22:25:54 | 显示全部楼层
1。按照你所说的用的是armlinux(我没有用过armlinux,但我想他们本质是一样的),如果说整个文件系统是只读的,而你有发现某个目录可读可写(可以建立目录和拷贝文件到这里),那么说整个文件系统并不是完全只读的,也就是说用cramfs只是将其中在运行过程中某个目录或文件只需要读而不需要写或改变采用高速只读zlib算法压缩处理,例如,/usr目录(在该目录下主要装载共享库,xfree86的硬件驱动以及关于字体库,在整个系统运行时,他是只读的)
2。我说的要挂载cramfs文件系统是指,用mkcramfs将某个目录进行压缩处理时,这里假设是对目录usr进行处理:
               #cd /
               #mkcramfs /usr usr.img
                      #vi /etc/init.d/rcS
                       #!/bin/sh
                        mount -o loop -t cramfs /usr.img /usr (这样才能将做成镜像的usr目录文件usr.img在启动时绑到系统去)
回复 支持 反对

使用道具 举报

发表于 2005-7-1 22:37:05 | 显示全部楼层
顺便问一下你们这个开发板用什么GUI系统是WINCE, 还是QT/EMBEDDED, microwindows, xfree86还是其他的。谢谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-2 16:45:42 | 显示全部楼层
谢谢sybaselu 的耐心回复,现在我有些明白了,谢谢。
我们用的开发板上的GUI 是MINIGUI
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表