您的位置:首页 > 运维架构 > Linux

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

2015-08-19 17:05 639 查看
作者: 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  ---><M>   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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: