Ramdisk简介以及嵌入式Linux上实现

2019-07-12 17:17发布

作者: 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/