分类: 服务器与存储
2012-03-13 23:03:14
FlashSim配置流程详细
作者:kimmy 撰写日期:2011-10-25
最近做SSD方面的实验,需要用到SSD模拟器FlashSim。因网上几乎难以找到其配置过程的详细资料,因此自己配置的过程颇为波折,中间遇到很多问题。通过一步步尝试,最后终于配置成功。写下这个配置流程,与大家分享之,希望能够给有同样需求的童鞋提供一点启示~
首先进行准备工作:(基于disksim的FlashSim运行环境为linux,要求低版本的gcc编译器,且需要bison和flex脚本的支持。)
1、安装ubuntu操作系统
版本选择ubuntu10.04和ubuntu10.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需要安装低版本的gcc(ubuntu下gcc-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、安装bison和flax
可直接在线安装,终端命令分别为:
sudo apt-get install bison
sudo apt-get install flex
装完使用bison -v和flex –v可以看到版本信息为bison-2.4.3和flex-2.5.35(或flex-2.5.4)
接下来就正式进入flashsim的安装了。这个过程要注意,每次重新编译安装所用到的disksim3.0和flashsim的源码包都要选择最原始的压缩包,然后解压操作。
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操作,问题很快解决。
(3)patch通过之后,退回到disksim-3.0目录下,再次编译。
make
编译正确,至此flashsim的配置大功告成,可以运行其自带的一些FTL算法了~