分享一下我所下载的所有的kernel和disk,亲测能用。里面有一个kernel可以跑255个CPU的kernel和有parsec的disk。下载后只需要从第4步开始。
链接:https://pan.baidu.com/s/1g76AwH56z_Ak91TUeMn2NA
提取码:tjva
复制这段内容后打开百度网盘手机App,操作更方便哦
在已经下载编译好gem5的基础下,增加kernel和disk文件即可使用fs模式进行仿真。
1.下载fs所需要的文件
wget http://www.m5sim.org/dist/current/x86/x86-system.tar.bz2
2.下载alpha对应的全系统文件,这是因为后面会用到里面解压出来的一个文件(在网上找资料都说需要这一步,具体原因不知)
wget http://www.m5sim.org/dist/current/x86/x86-system.tar.bz2
3.进行解压和文件放置
mkdir fs-image //在gem5的文件夹下打开终端,进行fs-image文件夹的创建
cd fs-image
tar -xjf ../x86-system.tar.bz2 //解压刚刚下载的x86-system.tar.bz2,注意在fs-image文件夹下就是binaries等文件夹
cp m5_system_2.0b3/disks/linux-bigswap2.img disks/ //这一步指令有些错误。具体情况是将下载的m5_system_2.0b3解压后将disks/linux-bigswap2.img文件复制到fs-image/disks文件夹下
3.5之前的kernel和disk比较老,下面有两个新的,下载解压后也放到对应的文件夹下。
http://www.cs.utexas.edu/~parsec_m5/x86_64-vmlinux-2.6.28.4-smp
http://www.cs.utexas.edu/~parsec_m5/x86root-parsec.img.bz2
4.修改gem5配置,需要修改两个文件
首先修改gem5/configs/common/Benchmarks.py
#这个是之前的文件内容,我是fs模式仿真x86系统,所以修改x86的
elif buildEnv['TARGET_ISA']=='x86':
return env.get('LINUX_IMAGE',disk('x86root.img'))
#将disk中的内容修改
elif buildEnv['TARGET_ISA']=='x86':
return env.get('LINUX_IMAGE',disk('x86root-parsec.img'))
#当然也可以其他的disk文件,但这个里面又parsec2.1,方便使用
然后修改gem5/configs/common/SysPaths.py
#将path修改,之前的内容我忘记了,用*号代替
paths=['/dist/m5/system','******']
#修改为自己的路径,注意用全路径
paths=['/dist/m5/system','/home/tristan/gem5/fs-image']
5.重新编译gem5(好像不用也行)
6.尝试
./build/X86/gem5.opt ./configs/example/fs.py --kernel=x86_64-vmlinux-2.6.22.9.smp --disk-image=x86root-parsec.img
得到,类似于这样的内容,记住port为3456
Listening for com_1 connection on port 3456
0: rtc: Real-time clock set to Sun Jan 1 00:00:00 2012
0: system.remote_gdb: listening for remote gdb on port 7002
0: system.remote_gdb: listening for remote gdb on port 7003
0: system.remote_gdb: listening for remote gdb on port 7008
0: system.remote_gdb: listening for remote gdb on port 7009
warn: Reading current count from inactive timer.
**** REAL SIMULATION ****
info: Entering event queue @ 0. Starting simulation...
warn: Replacement policy updates recently became the responsibility of SLICC state machines. Make sure to setMRU() near callbacks in .sm files!
warn: Don't know what interrupt to clear for console.
2275407000: system.pc.com_1.device: attach terminal 0
在gem5/util/term中编译、安装gem5term
make
sudo make install
在gem5文件夹下进行连接刚刚的仿真,在一串后进入了系统。
m5term 127.0.0.1 3456
tips 1:
fs使用ruby系统的话,编译gem5使用
scons build/X86/gem5.opt PROTOCOL=MOESI_hammer
tips2:
修改gem5/src/arch/X86/cpuid.cc,解决kernel bug、kernel panic问题,将后面的两个参数改成 0xe7dbfbff, 0x00000209
tips3:
若出现可能出现死锁的错误,(忘记英语是啥了),在源码中注释掉这个错误就行
tips4:
fs下载的kernel大部分都是规定CPU数量最大为8,如果你需要自己编译kernel,然后选择最大CPU数目(我记得最大是255个CPU)。参考下面的内容,得在Ubuntu14.04下参考,16,18因为make已经更新的原因已经不能使用了: