Chinaunix首页 | 论坛 | 博客

分类: 服务器与存储

2012-03-13 23:03:14

FlashSim配置流程详细

 

作者:kimmy    撰写日期:2011-10-25

 

       最近做SSD方面的实验,需要用到SSD模拟器FlashSim。因网上几乎难以找到其配置过程的详细资料,因此自己配置的过程颇为波折,中间遇到很多问题。通过一步步尝试,最后终于配置成功。写下这个配置流程,与大家分享之,希望能够给有同样需求的童鞋提供一点启示~

首先进行准备工作:(基于disksimFlashSim运行环境为linux,要求低版本的gcc编译器,且需要bisonflex脚本的支持。)

 

1、安装ubuntu操作系统

版本选择ubuntu10.04ubuntu10.10均可(已试验成功)。

注意:一定不要在线安装,否则ubuntu安装的同时会在线更新,过程将会长达数小时!

安装过程:双击ubuntu-10.04-desktop-i386.iso(或ubuntu-10.10-desktop-i386.iso)压缩包,再双击图1中最下方的wubi.exe,会出现解压界面。

解压完后进入ubuntu安装引导界面。

可选择windows下的任意一个驱动盘,但要保证空闲容量10G以上(越大越好,这样系统运行比较快,同时避免后期扩展应用导致容量不足)。右侧语言选择Chinese,用户名和密码自己设置。以上步骤完成后点击确定,即开始安装ubuntu系统,离线情况下此过程5分钟左右可完成。

Windows下安装完成后重启电脑,选择进入ubuntu系统,将自动完成后续安装。

至此,ubuntu系统成功完成安装,你可以进入图形界面或打开终端自由操作了~

 

2、安装GCC编译器

ubuntu 10.04中默认安装的gcc版本为gcc-4.*,而disksim需要安装低版本的gccubuntugcc-2.95编译disksim确认可以通过,笔者在RHEL5下安装gcc-3.3.6,貌似也可准确编译disksim)。因为从源代码安装比较麻烦,所以选择下载.deb包进行安装。

下载地址为

将下列五个文件依次下载:

cpp-2.95_2.95.4-24_i386.deb

gcc-2.95_2.95.4-24_i386.deb

g++-2.95_2.95.4-24_i386.deb

libstdc++2.10-glibc2.2_2.95.4-24_i386.deb

libstdc++2.10-dev_2.95.4-24_i386.deb

4个包libstdc++2.10-glibc2.2_2.95.4-24_i386.deb ubuntu官网上找不到,需要自己去其他地方搜索下载。

下载完按如上顺序依次强制安装,终端命令为:

sudo dpkg --force-depends -i xxx.deb

(注:若安装顺序不准确,终端会给出提示,调整顺序重新安装就ok~

然后更改软连接执行命令 

sudo ln -fs /usr/bin/gcc-2.95 /usr/bin/gcc

查看gcc版本:gcc –v ,可以看到版本为gcc-2.95.4

这样当需要编译软件时默认使用的gcc版本就是gcc-2.95.4 

3、安装bisonflax

       可直接在线安装,终端命令分别为:

       sudo apt-get install bison

sudo apt-get install flex

装完使用bison -vflex –v可以看到版本信息为bison-2.4.3flex-2.5.35(或flex-2.5.4

 

接下来就正式进入flashsim的安装了。这个过程要注意,每次重新编译安装所用到的disksim3.0flashsim的源码包都要选择最原始的压缩包,然后解压操作。

4、编译disksim-3.0

解压disksim-3.0.tar.gz,假设解压到当前用户主目录下,解压后文件名为disksim-3.0

whm@ubuntu:~$ cd disksim-3.0/         #进入disksim-3.0目录

whm@ubuntu:~/disksim-3.0$ make       #编译整个工程

如没有提示编译错误,则可以进入/disksim-3.0/valid目录下,运行runvalid文件。若能准确运行,说明disksim-3.0的编译是正确的。

 

5、在disksim-3.0基础上编译flashsim

1)将flashsim-psu中的src.release.tar.gz压缩包解压生成src.release文件夹,将其拷入disksim-3.0目录下,更名为src,替代disksim-3.0中已有的src目录

2)将flashsim-psu中的flashsim-20100324.patch文件拷入/disksim-3.0/src目录下,然后命令行进入src目录,为其中的某些文件打补丁。(为什么打补丁?因为之前的某些代码编写不够规范,可能导致编译通不过,flashsim-20100324.patch文件就是为了修正那些不规范的写法。)命令如下:

  patch -p1 -i flashsim-20100324.patch

运行时可能提示patch 命令找不到之类的,这是因为ubuntu系统默认没有安装patch,需要先安装一下。命令为:

sudo apt-get install patch

Patch安装成功后再执行如上命令,一般可patch通过。如出现类似如下错误:

patching file fast.c
Hunk #1 FAILED at 58.

Hunk #2 FAILED at 266.
Hunk #3 FAILED at 294.

……

6 out of 6 hunks FAILED -- saving rejects to file fast.c.rej

则表明从flashsim-psu中拷过来的src.release不是原始的版本。笔者刚开始因为不了解patch文件的真正含义,所以无意识中就犯了这个粗心的错误。因为之前阅读src.release中的代码时加了一些注释,导致行号和原来的不对应(行数有增加),而flashsim-20100324.patch文件的执行是严格按照行号来修订原始版本中的不规范代码,所以patch总是通不过。意识到问题症结所在后,使用重新解压得到的src.release,再执行patch操作,问题很快解决。

       3patch通过之后,退回到disksim-3.0目录下,再次编译。

make

编译正确,至此flashsim的配置大功告成,可以运行其自带的一些FTL算法了~

阅读(1076) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~