背景

上篇博客写了如何在gem5的full system模式运行alpha的指令编译的程序,这篇博客讲述如何在gem5的full system模式运行x86指令集编译的程序,这两种方式非常类似。

首先需要安装gem5-stable,可以参考我前面的一篇博客:

http://blog.csdn.net/wyj7260/article/details/8267345

这篇文章介绍full system  in  x86。

安装过程:

下载full system需要的两个包:

首先在安装好gem5-stable之后,再到官网下载full system需要的包:

Full System Files : http://www.m5sim.org/dist/current/x86/x86-system.tar.bz2

Config files : http://www.m5sim.org/dist/current/x86/config-x86.tar.bz2

安装:记我的gem5-stable安装目录为$GEM

a)      ~/gem5-stable$  mkdir x86Dist

b)      将包x86-system.tar.bz2和config-x86.tar.bz2复制到x86Dist目录下

b) ~/gem5-stable$ cd x86Dist/

c) ~/gem5-stable/x86Dist$  tar -xvf x86-system.tar.bz2

把exceptKeyError:

path = [ '/dist/m5/system', '/n/poolfs/z/dist/m5/system

修改成

except KeyError:

path = [ '/dist/m5/system', ' /home/wyj2/gem5-stable/x86Dist' ]

运行(运行过程中遇到的error以及解决方法)

1、  首先编译gem5.opt

~/gem5-stable $ scons ./build/x86/gem5.opt

2、运行模拟的linux系统

~/gem5-stable$ ./build/X86/gem5.opt ./configs/example/fs.py

报错如下:

gem5 Simulator System. http://gem5.org

gem5 is copyrighted software; use the --copyright option for details.

gem5 compiled Jul 12 2013 21:30:39

gem5 started Jul 12 2013 21:33:06

gem5 executing on arch-node3

command line: ./build/X86/gem5.opt ./configs/example/fs.py

warning: add_child('terminal'): child 'terminal' already has parent

Global frequency set at 1000000000000 ticks per second

info: No kernel set for full system simulation. Assuming you know whatyou're doing if not SPARC ISA

0: rtc: Real-time clock setto Sun Jan  1 00:00:00 2012

panic: Error opening /home/wyj/gem5-stable/x86Dist/disks/x86root.img

@ cycle 0

[open:build/X86/dev/disk_image.cc, line 79]

Memory Usage: 225092 KBytes

Program aborted at cycle 0

Aborted (core dumped)

解决方法:

提示不能打开x86root.img,于是我查找x86root.img

命令:~/gem5-stable$ grep -r"x86root.img" ./

得到如下:

./configs/common/Benchmarks.py:            return env.get('LINUX_IMAGE',disk('x86root.img'))

如实修改Benchmarks.py, 把return env.get('LINUX_IMAGE',disk('x86root.img'))改成

return env.get('LINUX_IMAGE', disk('linux-x86.img'))

然后执行:

~/gem5-stable$ ./build/X86/gem5.opt ./configs/example/fs.py

gem5 Simulator System. http://gem5.org

gem5 is copyrighted software; use the --copyright option for details.

gem5 compiled Jul  2 201310:06:26

gem5 started Jul 13 2013 18:13:18

gem5 executing on jsi-desktop

command line: ./build/X86/gem5.opt ./configs/example/fs.py

warn: add_child('terminal'): child 'terminal' already has parent

Global frequency set at 1000000000000 ticks per second

info: No kernel set for full system simulation. Assuming you know whatyou're doing

0: rtc: Real-time clock setto Sun Jan  1 00:00:00 2012

panic: Error opening/home/wyj2/gem5-stable/x86Dist/disks/linux-bigswap2.img

@ cycle 0

[open:build/X86/dev/disk_image.cc, line 79]

Memory Usage: 177860 KBytes

Program aborted at cycle 0

Aborted

缺少linux-bigswap2.img文件,秩序要将alpha的full system下载的包Full System Files解压后的linux-bigswap2.img拷贝到目录/home/wyj2/gem5-stable/x86Dist/disks/就行。

(full system Files下载地址http://www.m5sim.org/dist/current/m5_system_2.0b3.tar.bz2解压也可得)

运行

~/gem5-stable$ ./build/X86/gem5.opt ./configs/example/fs.py

仍然报错

gem5 Simulator System.  http://gem5.org

gem5 is copyrighted software; use the --copyright option for details.

gem5 compiled Jul  2 201310:06:26

gem5 started Jul 13 2013 18:18:48

gem5 executing on jsi-desktop

command line: ./build/X86/gem5.opt ./configs/example/fs.py

warn: add_child('terminal'): child 'terminal' already has parent

Global frequency set at 1000000000000 ticks per second

info: No kernel set for full system simulation. Assuming you know whatyou're doing

0: rtc: Real-time clock setto Sun Jan  1 00:00:00 2012

Listening for com_1 connection on port 3456

warn: Reading current count from inactive timer.

0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000

fatal: No kernel to load.@ cycle 0

[initState:build/X86/arch/x86/system.cc, line 118]

Memory Usage: 177868 KBytes

这是因为运行时需要制定kernel:

运行命令为:

./build/X86/gem5.opt ./configs/example/fs.py --kernel=x86_64-vmlinux-2.6.22.9.smp

注意:此处不用制定.smp文件的路径,只用文件名就行

剩下的mount文件到模拟的系统同上一篇关于alpha的full system

参考链接:

http://www.m5sim.org/Running_M5_in_Full-System_Mode

http://novel.ict.ac.cn/qguo/pdf/gem5.pdf

http://gem5.org/dist/tutorials/hipeac2012/gem5_hipeac.pdf

以及参考师兄的ppt

在gem5的full system下运行 x86编译的测试程序 running gem5 on ubuntu in full system mode in x86的更多相关文章

  1. 在gem5的full system下运行 alpha编译的测试程序 running gem5 on ubuntu in full system mode in alpha

    背景 先需要在full system下运行gem5,通过网上查找资料以及向别人请教,终于成功运行,网上大多是关于alpha指令集的,且都是英文的,为了方便大家学习,现在总结一下,希望对大家有所帮助. ...

  2. Gem5全系统模式下运行SPLASH-2 Benchmarks使用alpha ISA

    Steps to run the SPLASH-2 Benchmarks on M5 in full system mode using the alpha ISA. This Guide is ai ...

  3. ASP.NET CORE下运行CMD命令

    ASP.NET CORE下运行CMD命令,用以前的ASP.NET 的命令System.Diagnostics.Process.Start("notepad");这样是可以运行出记事 ...

  4. JAVA手记 JAVA入门(安装+Dos下运行)

    JAVA入门特供= =,今天设置环境变量后用dos运行的时候发现出现“找不到或无法加载主类”,索性查了些资料重新看了看JAVA入门的部分. 声明:我的笔记本暂时用的是Win10系统,Windows其他 ...

  5. Windows 下使用 GNUstep 编译并运行 Objective-C 程序

    今晚上开始看<Objective-C 程序设计(第4版)>这本书(OSChina 正在做此书的书评活动,详情请看这里),到现在为止看到第 7 章,于是想动手试试写两简单的程序编译跑跑看. ...

  6. JAVA设置环境变量和在DOS下运行java程序

    在学校实训的这几天,老师带着我们开始深入的复习java.这是第一天的内容哦 对于“JAVA设置环境变量和在DOS下运行java程序”,许多初学者是陌生的,但了解这个却对后期的学习很重要. http:/ ...

  7. Unity怎样在Editor下运行协程(coroutine)

    在处理Unity5新的AssetBundle的时候,我有一个需求,须要在Editor下(比方一个menuitem的处理函数中,游戏没有执行.也没有MonoBehaviour)载入AssetBundle ...

  8. Demo+在Linux下运行(CentOS7+dotnetcore sdk)

    来份ASP.NET Core尝尝 0x01.前言 学习ASP.NET Core也有一段时间了,虽说很多内容知识点还是处于一知半解的状态,但是基本的,还是 略懂一二.如果有错误,还望见谅. 本文还是和之 ...

  9. OpenCV探索之路(二十一)如何生成能在无opencv环境下运行的exe

    我们经常遇到这样的需求:我们在VS写好的程序,需要在一个没有装opencv甚至没有装vs的电脑下运行,跑出效果.比如,你在你的电脑用opencv+vs2015写出一个程序,然后老师叫你把程序发给他,他 ...

随机推荐

  1. 编程乐趣:C#获取日期所在周、月份第一和最后一天

    原文:编程乐趣:C#获取日期所在周.月份第一和最后一天 写了个小功能,需要用到以周为时间段,于是写了个获取周第一和最后一天的方法,获取月份的第一和最后一天就比较简单了.代码如下: public cla ...

  2. CSS学习笔记:利用border绘制三角形

    在前端的笔试.面试过程中,经常会出现一些不规则图形的CSS设置,基本上多是矩形外加一个三角形.利用CSS属性可以实现三角形的生成,主要利用上下左右的边距的折叠. 1.第一种图形: .box { wid ...

  3. 启用密码管理之前创建的用户连接Oracle报ORA-28002处理一则

    处理方法其实很简单.只要:     alter user <username> identified by <same password>;  这个操作后,恢复正常了 下面作个 ...

  4. ASP.NET MVC Model元数据

    ASP.NET MVC Model元数据(三) 前言 在上篇中我们大概的讲解了Model元数据的生成过程,并没有对Model元数据本身和详细的生成过程有所描述,本篇将会对详细的生成过程进行讲解,并且会 ...

  5. AngularJS and Asp.net MVC

    AngularJS 初印象------对比 Asp.net MVC 之前就早耳闻前端MVC的一些框架,微软自家的Knockout.js,google家的AngularJs,还有Backone.但未曾了 ...

  6. JAVA修饰符类型(转帖)

    JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的任何类均可以访问:protected的类.类属变量及方法,包内的 ...

  7. 重定向和VT100编程

    重定向和VT100编程 一.文件重定向     我们知道在linux shell 编程的时候,可以使用文件重定向功能,如下所示: [root@localhost pipe]# echo "h ...

  8. 线程池python

    原创博文,转载请注明出处 今天在学习python进程与线程时,无意间发现了线程池threadpool模块,见官方文档. 模块使用非常简单,前提是得需要熟悉线程池的工作原理. 我们知道系统处理任务时,需 ...

  9. Vnix的Logo设计

    又捣鼓了一下Logo,感觉Ascii Design碉堡了.下面贴出几款Logo以供观赏,欢迎投票. ## ## ## ## #### ## ## ## ## ### ## ## ## ## ## ## ...

  10. 高级SQL特性

    SQL   SQL 必知必会·笔记<20>高级SQL特性 摘要: 约束(constraint)就是管理如何插入或处理数据库数据的规则.DBMS通过在数据库表上施加约束来实施引用完整性.1. ...