gem5的fs模式进行仿真

 

分享一下我所下载的所有的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已经更新的原因已经不能使用了:

 

gem5全系统启动:FATAL: kernel too old

学习笔记之Linux内核编译过程

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值