Ubuntu 18.04安装 gem5

参考博客:https://blog.csdn.net/xiao_huocai/article/details/82225193

首先安装g++ (4.7版本及以上)、Python (2.5版本及以上)、 SCons (0.98.1版本及以上)、 SWIG (2.0.4版本及以上)、zlib、m4、 protobuf (2.1版本及以上)。(我有些版本比这里说的低,但是也编译成功了)

1.安装

安装g++:

sudo apt-get install g++

安装python:

sudo apt-get install python

安装Scons:

sudo apt-get install scons

安装SWIG:

sudo apt-get install swig

安装zlib:

  sudo apt-get install zlib1g-dev

安装m4:

sudo apt-get install m4

安装protobuf:

sudo apt-get install libprotobuf-dev

安装 libprotobuf-dev 和 libgoogle-perftools-dev:

sudo apt-get install libprotobuf-dev
sudo apt-get install libgoogle-perftools-dev

安装boost:

sudo apt-get install libboost-all-dev

安装完了就可以安装gem5了,首先从http://repo.gem5.org/gem5/archive/tip.tar.bz2下载压缩包,解压编译:

scons build/X86/gem5.opt

结构编译过程出现问题及时解决,比如缺少boost,就按照上面的命令安装boots。缺少python的pip,就去安装。我第一次编译出问题了,然后关机睡了一觉第二天重新试了一次就好了,真的很玄学。

2.测试

测试命令

./build/X86/gem5.opt ./configs/example/se.py -c ./tests/test-progs/hello/bin/x86/linux/hello

如果成功输出了hello world则证明编译成功。

3.配置全系统

首先下载对应的全系统文件,本次实验使用的是x86体系结构。使用如下命令:

wget http://www.m5sim.org/dist/current/x86/x86-system.tar.bz2
wget http://www.m5sim.org/dist/current/m5_system_2.0b3.tar.bz2

完了在gem5目录下新建文件夹fs-image,并把x86-system.tar.bz2解压到fs-image文件夹下。将m5_system_2.0b3.tar.bz2解压后的disks目录下的linux-bigswap2.img放到x86-system的disks目录下。
修改环境变量

gedit ~/.bashrc
export M5_PATH=$M5_PATH:/home/jzy/gem5/fs-image/
source ~/.bashrc

进入gem5文件夹,启动X86架构的FS模式:

build/X86/gem5.opt configs/example/fs.py

修改gem5目录下的configs/common/SysPaths.py文件:

except KeyError:
            path = [ '/dist/m5/system', '/home/jzy/gem5/fs-image' ]

修改gem5目录下的configs/common/Benchmarks.py文件,将x86root.img改为linux-x86.img:

elif buildEnv['TARGET_ISA'] == 'x86':
    return env.get('LINUX_IMAGE', disk('/home/jzy/gem5/fs-image/x86-system/disks/linux-x86.img'))

执行运行命令:

sudo build/X86/gem5.opt configs/example/fs.py --kernel=/home/jzy/gem5/fs-image/x86-system/binaries/x86_64-vmlinux-2.6.22.9 --disk-image=/home/jzy/gem5/fs-image/x86-system/disks/linux-x86.img

打开另一个终端,用于连接FS模拟的全系统。这里使用的是m5term,先编译安装这个工具,在gem5的目录下有。

cd util/term/
make
make install

完成后执行如下命令:

./m5term 127.0.0.1 3456

显示如下信息表示链接成功:

    ==== m5 slave terminal: Terminal 0 ====
    Linux version 2.6.22.9 (blackga@nacho) (gcc version 4.1.2 (Gentoo 4.1.2)) #2 Mon Oct 8 13:13:00 PDT 2007
    Command line: earlyprintk=ttyS0 console=ttyS0 lpj=7999923 root=/dev/hda1
    BIOS-provided physical RAM map:
     BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
     BIOS-e820: 000000000009fc00 - 0000000000100000 (reserved)
     BIOS-e820: 0000000000100000 - 0000000020000000 (usable)
     BIOS-e820: 0000000020000000 - 00000000c0000000 (reserved)
     BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
    end_pfn_map = 1048576
    kernel direct mapping tables up to 100000000 @ 8000-d000
   ......
    Freeing unused kernel memory: 232k freed
    INIT: version 2.86 booting
    mounting filesystems...
    loading script...
    Script from M5 readfile is empty, starting bash shell...
    (none) / # 

至此,工具已经准备好了。接下来的工作就是在gem5上执行测试程序。首先进入gem5目录下,可以新建一个文件夹mountfile,专门用于存放后面的往系统里mount的文件。把已经静态编译好的可执行文件放进mountfile,挂载:

mount -o,loop,offset=32256 /home/jzy/gem5/fs-image/x86-system/disks/linux-x86.img /mnt

如果执行ls /mnt显示文件夹信息,则表示已经挂载好了。将可执行的程序文件复制进挂载的系统。

在使用linux的image文件重新开启gem5之前,应该执行umount操作:

sudo umount /mnt

你可能感兴趣的:(配环境)