免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 634 | 回复: 0
打印 上一主题 下一主题

Embedded Linux常见文件系统介绍 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-18 16:31 |只看该作者 |倒序浏览

               
               
               
               
               
               
                在嵌入式Linux开发中, 往往需要为目标系统设置根文件系统, 这包括: 准备好根文件系统所需的内容, 选择目标系统的文件系统类型, 将根文件系统的内容转换为所用文件系统的格式, 将根文件系统安装到目标系统上. (这里假设目标系统的存储设备已经配置好了)
Ubuntu/Debian上默认未安装MTD工具, 首先安装它们:
$ sudo apt-get install mtd-tools
Ramdisk
The RAM disk driver is a way to use main system memory as a block device.
我们可以将Ramdisk和一般的块设备一样使用. 查看ramdisk信息:
$ ls -l /dev/ram*
brw-rw---- 1 root disk 1,  0 2006-09-18 17:45 /dev/ram0brw-rw---- 1 root disk 1,  1 2006-09-18 17:45 /dev/ram1...
Ramdisk的优点: 读写速度非常快, 适合用来制作initrd.
Ramdisk的缺点: 不具有永久性, 断电后无法保存. 且ramdisk大小不可更改, 浪费ram.
Ramdisk制作方法
可以利用空闲的块设备(比如软盘或未用的分区), 主机系统的RAM disk(/dev/ram0), loop设备来制作Ramdisk. /Documentation/ramdisk.txt中介绍的是使用/dev/ram0来制作ramdisk.
使用loop设备来制作Ramdisk最为简单:
# dd if=/dev/zero of=ramdisk.image bs=1k count=8192
使用dd命令建立一个8192KB的文件系统映像. 以/dev/zero对其初始化.
[color="#555555"]如果要向板子的文件系统中添加内容, [color="#555555"]不要修改既有的ramdisk, 而是重新创建一个ramdisk. 这样做是为了让映像获得更大的压缩比.
ramdisk只是个块设备, 需要将它格式化为特定的文件系统后才能使用:
# mke2fs -F -v -m0 ramdisk.image
-F : 迫使mke2fs在ramdisk.image上运行, 否则, mke2fs会抱怨ramdisk.image不是块设备.
-v : 以verbose模式运行
-m0 : 指定不必在文件系统上为"超级用户"保留任何block.(一般嵌入式Linux都是单用户系统).
也可以将ramdisk.image格式化为minix文件系统:
# mkfs.minix ramdisk.image
完成之后, 可以用file命令看到: ramdisk.image: Linux rev 1.0 ext2 filesystem data
将ramdisk格式化后, 就可以挂在它(假设挂在到当前目录中的ramdisk目录)
# mount -o loop ramdisk.image ramdisk
initrd
从字面意思就可以看出来, initrd = initial RamDisk.  initrd被用来在flash中储存压缩过的文件系统.
在桌面或服务器版的Linux中, 在实际的根文件系统可用之前, initrd先被内核挂载为临时的根文件系统. 当完成了加载, 启动之后, initrd可能被卸载. 但在嵌入式Linux系统中, initrd往往被用来做为真正的根文件系统.
initrd和上面介绍的ramdisk有着不可分割的联系, 在/Documentation/ramdisk.txt中, 就有这样一句话:
It
[/url]
is required for initrd, an initial filesystem used if you need to load modules
[url=http://lxr.free-electrons.com/source/Documentation/ramdisk.txt#017]

in order to access the root filesystem.
据我理解, initrd就是在已经被格式化后的ramdisk中加入文件, 然后将其压缩的产物. 当然, ramdisk中的文件系统中要包含用于初始化的文件(可执行文件, 脚本或链接).
上接ramdisk的例子, 把ramdisk.image挂载之后, 向里面添加必须的文件. 然后将其卸载, 压缩:
构建一个可用的initrd这里不再赘述. 可参考本blog的:
开发板实务(5)——构建根文件系统
# umount ramdisk
# gzip -9 ramdisk          -9 : 获得最大压缩比
tmpfs
与ramdisk, initrd不同, tmpfs是基于VM的, 具体可参考本blog的
开发板实务(4)——分析板子的文件系统
未完, 待续....
Reference
1, LinuxDevice.com上面的“
Flash Filesystems for Embedded Linux Systems
", 介绍了用于Nor Flash中的文件系统.
2, 内核源码数的/Documentation/ramdisk.txt介绍了ramdisk, Documentation/initrd.txt中介绍了initrd. 必看!
3, IBM dw上的
Linux初始RAM磁盘initrd)概述
4,
Linux中的Ramdisk与Initrd
5, , 第8章.
               
               
               
               
               
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13991/showart_173007.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP