作者: Sam (甄峰)
sam_code@hotmail.com
Sam多年前在刚接触Linux时第一个项目是个DVR项目,此项目当时谁作谁辞职。在Sam加入之前,几乎已经换了3拨人了。Sam作为一个外行加入其中,并最终几乎重写了所有模块,虽然现在想来程序架构和代码质量相当不好。但总算把东西给作出来了。呵呵,闲话不说,回到主题:在那个项目中,我们一些频繁修改的文件,放置于Ramdisk中,一方面加快访问速度,另一方面也防止文件写坏。
Ramdisk简单的来说,就是用内存模拟为硬盘,并在其上存储临时文件(因为重新启动后,文件会消失)
Ramdisk技术在Windows,Linux下均可实现。Windows下可选用类似RAMDISK4G这样的软件实现。Linux下,则需要Kernel配置。我们主要关注Linux下实现。
0. 准备工作:
在Linux下创建Ramdisk,需要mkfs.ext2。但Sam遇到的嵌入式平台并不支持。最简单的方法当然是重新编译busybox.
#cd busybox
#make menuconfig
Linux System Utilities ---> [*] mkfs_ext2
#make
编译出busybox.
运行之:
#./busybox mkfs.ext2
发现可用。
1.Kernel配置支持Ramdisk:
#make menuconfig
Device Drivers ---> [*] Block devices --->
RAM block device support
选择将其编译为modules.
(4096) Default RAM disk size (kbytes)
缺省值为4096。所以Ramdisk缺省为4M.
想要创建150M Ramdisk. 设置为:153600(1024*150) kbytes
2.创建Ramdisk:
当Kernel有Ramdisk support支持时,就会有/dev/ramX这样的设备。设备未被格式化时,不占内存,也不能被使用。
#./busybox mkfs.ext2 /dev/ram0 //此时才真正可用,并占用缺省大小内存。运行此命令时,系统会显示这个块设备具体有多大。
#mount /dev/ram0 /tmp //将设备mount到mount 点。此时可以使用df 命令查看。
3. 创建指定大小的Ramdisk:
3.
其实内存文件系统中最方便的是:tmpfs.
创建方便,也可以随意改变大小。
用法:
先创建挂载点。
#mkdir /data/game
#mount Game_Tmpfs /data/game -t tmpfs -o -o size=10m
创建了一个名为:Game_Tmpfs,大小为10M, 挂载点为/data/game的内存文件系统。
给定名字Game_Tmpfs的优点是,在mount 或df中可以很容易找到自己的内存文件系统。
Wget用法:
busybox的wget很不好用。可以下载并交叉编译。
http://ftp.gnu.org/gnu/wget/
#CC=arm-hisiv200-linux-gnueabi-gcc ./configure --host=arm-linux --without-ssl
#make
wget username:password@Site/dir/filename.ext
wget -rm --ftp-user=public --ftp-password=3dijoy ftp://ftp.3dijoy.com/To_BCM/