当前位置: 首页 > 工具软件 > Simics > 使用案例 >

安装simics+GEMS

宓昂雄
2023-12-01

一.   安装环境

       服务器:x86, intel四核

       操作系统:RHEL4.1.1

       GCC:4.1.1

       Hostname: localhost.localdomain

       Usr: root

       GEMS: Gems-2.1

       SIMICS: simics- 3.0.31

       辅助软件:FlEXlm11.6.1.0

       参考: GEMS_Ubuntu.pdf

二.   安装SIMICS_3.0 + GEMS_2.1

1.  安装FLEXlm

      申请simics注册码时,会有FLEXlm的下载链接.选择符合自己安装环境的那款.

      解压并安装:

           tar –zxvf lmgrd_i86_re3.tar.gz

           tar –zxvf lmutil-i86_re3.tar.gz

           ./lmadmin-i86_re3-11_1_0.bin

       获取lmhostid:  ./lmutil lmhostid

2. 设置环境变量

      vim ./root/.bash_profile

     添加如下字段:

        export GEMS=/root/gems

        export SIMICS_INSTALL=$GEMS/simics-3.0.31

        export SIMICS_EXTRA_LIB=./modules

        export PYTHONPATH=./modules

     退出vim后reboot

3. SIMICS安装

a)  在/root目录创建gems文件夹

      mkdir gems

      cd gems

      tar xvf simics_path/simics-pkg-20-3.0.31-linux.tar

b) 安装SIMICS

     cd simics-3.0-install

    ./install-simics.sh

       当提示输入序列号时,找到注册成功后,随注册文件一起寄过来的注册说明--”smics_reg.doc”, 输入其中的序列号

c)注册

      i.   安装完成后,将注册文件simics_3.0.lic复制到$GEMS/simics-3.0.31/licenses

      ii.   修改 simics_3.0.lic: 将第二行的this_host替换为服务器的hostname. (最好是默认的主机称:localhost.localdomain, 这与安装操作系统时的设置有关, 安装好后再手动修改主机名的话,认证总是失败!). 在第三行末尾添加vtech路径. 如果没有,请重新安装FLEXlm.

      iii.  ./lmgrd –c $GEMS/simics-3.0.31/licenses/simcs_3_0.lic

4. GMES安装

a)  解压gems-release2.1.tar.gz

             cd $GEMS

             tar –zxvf gems_path/gems-release2.1.tar.gz

             cp –r $GEMS/gems-2.1/* $GEMS

             rm –r $GEMS/gems-2.1

b) 建立工作站

         Mkdir $GEMS/simics_3_workspace

         Cd $SIMICS_INSTALL/bin

         ./workspace-setup $GEMS/simics_3_workspace

c)  修改makesymlinks.sh

         cd scripts

          vim makesymlinks.sh

          在echo “Making symlink for import directory”后面添加 ln –s $SIMICS_INSTALL/import import

d)  运行makesymlinks.sh

         cd $GEMS/simics_3_workspace

         ../scripts/makesymlinks.sh

e) 链接simics workspace

         cd $GEMS

         ln –s simics_3_workspace simics

f)  修改$GEMS/common/Makefile.simics_version

         SIMICS_VERSION := 3.0

g)  修改$GEMS/common/Makefile.common

          CC_VERSION=4.1.1

          HOST_TYPE=x86-linux,并注释掉原来的赋值

          对ifeq($(SIMICS_VERSION),3.0)后的以下两项进行修改

         SIMICS_ROOT := $(GEMS_ROOT)/simics

         SIMICS_INCLUDE_ROOT := $(SIMICS_INSTALL)/src/include

h) 修改$GMES/ruby/module/Makefile

         CC_VERSION=4.1.1

         修改GEMS_ROOT, 即注掉For Simics 2.x后面的语句, 解注For Simics 3.0后面的语句

          HOST_TYPE=x86-linux,并注释掉原来的赋值

i)  修改$GMES/opal/module/Makefile

         CC_VERSION=4.1.1

         修改GEMS_ROOT, 即注掉For Simics 2.x后面的语句, 解注For Simics 3.0后面的语句

         HOST_TYPE=x86-linux,并注释掉原来的赋值

j) 修改$GMES/tourmaline/module/Makefile

        CC_VERSION=4.1.1

        HOST_TYPE=x86-linux,并注释掉原来的赋值

5.  编译ruby

       cd $GEMS/ruby

       make PROTOCOL=MOSI_SMP_bcast DESTINATION=MOSI_SMP_bcast

 

注: 此处常见错误:

1).出现错误:SIM_hap_register_callback

答:在ruby.c文件中,将SIM_hap_register_callback改为SIM_hap_add_callback

2).找不到libelf.so.0时,会出现

/root/simics-3.0.31/x86-linux/bin/libsimics-common.so: undefined reference to `elf_nextscn'

/root/simics-3.0.31/x86-linux/bin/libsimics-common.so: undefined reference to `elf64_getshdr'

…………………

    答:到网上下载安装libelf.so.0

3).出现错误: Simics SLA not accepted, Exiting since in batch-mode,

    答:运行workspcae 中的simics软件: ./simics

4).出现错误:

Using the Simics 3.0 API for ruby module

CCLD ruby.so

Make[2]: ***[/opt/gems-2.1/simics_3_workspace/x86-linux/obj/ modules/ruby.so]错误2

Make[2]: ***正在删文件”opt/gems-2.1/simics_3_workspace/x86-linux/obj/modules/ruby.so”

    答: 这个错误让我郁闷两周了,最后发现是因为中文系统的原因, 我的青春啊,死的心都有了!!在/root/.bash_profile中添加一项

export LC_ALL=en_US.UTF-8

6. 编译opal

         cd $GEMS/opal

         make module DESTINAION=MOSI_SMP_bcast

三.   安装solaris 10

1.  下载如下文件(其它版本不行)

       sol-10-u2-ga-sparc-v1.iso;

       sol-10-u2-ga-sparc-v2.iso;

       sol-10-u2-ga-sparc-v3.iso;

       sol-10-u2-ga-sparc-v4.iso;

       sol-10-u2-ga-sparc-v5.iso;

2. 安装

1)  cd $GEMS/simics-3.0.31 /targets/serengeti

2)   vim abisko-sol10_cd-install1.simics

         在if not defined cdrom_path 后面修改

         $cdrom_path= “sol-10-u2-ga-sparc-v1.iso_path”

3)  vim abisko-sol10_cd-install2.simics

          在while $idx < 6 后面修改

          $cdrom_path[$idx] = (“sol-10-u2-ga-sparc-v” + $idx + “.iso”)

4)  Cd ../../bin

a) ./simics ../targets/serengeti/abisko-sol10-cd-install1.simics

          当终端里提示出现”now exit simics and continue with the abisko-sol10-cd-install2.simics”时, 输入命令exit, 退出

b) ./simics ../targets/serengeti/abisko-sol10-cd-install2.simics

         当终端里提示出现”now exit simics and continue with the abisko-sol10-cd-install3.simics”时, 输入命令exit, 退出

c) ./simics ../targets/serengeti/abisko-sol10-cd-install3.simics

         simics> exit

5) 启动simics

        vim ../targets/serengti/abisko-setup.inc lude

        将第一句改为if not defined os {$os = “solaris10”}

       ./simics -x tartgets/serengeti/abisko-common.simics

       simics〉continue

注: 此处常见错误

1)  unable to qualify my own domain name (abisko) -- using short name

       答:在/etc/hosts文件的最后一行尾添加 localhost.localdomain.com也就是($(hostname).com)

2) showmount: tesler: RPC: Program not registered

       Do you want to continue? (y or n):   Broadcast Message from root (pts/4) on

       tesler Wed May 22 17:47:15...

       False Alarm:  The system tesler will not be brought down.

       showmount: tesler: RPC: Program not registered

       Shutdown aborted.

       答:solaris老有这样的问题,输入命令

           Share –F nfs /mnt

           Unshared /mnt

 

四.   安装SIMICSFS

1.  概述

详情查看simics-3.0.31/doc/simics-user-guide-unix.pdf文件, SimicsFS用于实现目标机和虚拟机间的文件传输. 支持solaris7,8,9,10,以及linux内核2.0,电2.2, 2.4, 下载 https://www.simics.net/pub/ 安装和编译方法在 README_2.4和 README_2.6 文件 将文件拷贝到目标机上的方法有network, loopback disk access, 或CD-ROM

主要有如下限制:

虚拟OS

限制

Linux

访问方式是只读. (实验支持写操作)

Solaris

不支持Truncating files (截短的文件).

Other

不支持

 内核版本小于 2.4的linux上, SimicsFS 内核模型是 hostfs.之后的版本才叫simicsfs, 因此安装在低版本的linux目标机上时,将下面simicsfs 部分替换成 hostfs.

2. 目标机是linux

1) 在目标机上新建目录 /lib/modules/version/kernel/fs/simicsfs/ ,其中version是目标机的内核版本.

2) 将新编译的 SimicsFS模型文件拷贝到目标机的/lib/modules/version/kernel/fs/simicsfs/ 目录下,注:不大于2.4的linux版本下,模型文件名称是simicsfs.o ,linux2.6版本的叫simicsfs.ko

3) 在目标机上建立挂载点 mkdir /host.

4) 在目标机的/etc/fstab文件中添加下面的内容(用挂载点替换/host)

         special      /host      simicsfs     noauto,ro      0 0

         注意: ro表示只读, rw表示支持实验写操作.

5) 在目标机上挂载SimicsFS:  mount /host

         这样, SimicsFS 就可以工作了, 在目标机上通过ls /host 可以得到主机文件列表.

         早期的Simics版本称为hostfs而不是simicsfs. 参考setup_simicsfs.sh

3. 目标机是solaris

1)    为方便向目标机中传递simics-3.0.31/import/sun4u/mount_simicsfs和simics-3.0.31/import/sun4u/simicsfs-sol10到目标机,我们将二者做成ISO文件,即:

      cd $GEMS/simics-3.0.31/import/sun4u/

      mkdir sol10-simicsfs

      cp mount_simicsfs sol10-simicsfs

      cp simicsfs-sol10 sol10-simicsfs

      cd sol10-simicsfs

      mv mount_simicsfs mount

      mv simicsfs-sol10 simicsfs

      cd ../

       mkisofs –o 10.iso –J –r sol10-simicsfs  //-o输出文件名, –J与windows兼容, -r与unix/linux兼容

      sol10-simicsfs.iso即为所需要的镜相文件

2)    运行./simcis –x ../target/serengeti/abisko-common.simics

       simics> continue

3)    当XTerm中出现#,即启动完成后,Ctrl+C退回到simcis>界面加载10.iso文件

       simics>new-file-cdrom 10.iso_path

       simics> cd0.insert iso

       simics> con0.input “mount -F hsfs -o  ro /dev/dsk/c0t6d0s0 /mnt\n”

       simics> con0.input “mkdir /usr/lib/fs/simicsfs\n”

4)   复制文件mount_si,并重命名为mount,

      simics> con0.input “cp –r /mnt/mount /usr/lib/fs/simicsfs\n”

5)  复制文件simicsfs ,

      simics> con0.input “cp –r /mnt/simicsfs /usr/kernel/fs/sparcv9\n”

6)  在目标机的/etc/vfstab文件中添加一行,即

     simics> con0.input “echo simicsfs  -       /host   simicsfs  -       no      - >>/etc/vfstab\n”

7)  在目标机上建立挂载点 并添加路径:

    simics> con0.input “mkdir /host\n”

    simics> continue

8) 目标机运行时,输入命令

    mount /host

   ls /host 查看主机上的文件列表

4. 使用simicsFS

  默认在/host下访问主机上的文件.也可以通过命令 <hostfs>.root command来修改挂载点, 如simics> hfs0.root /home/alice/sandbox ,新命令在下次挂载simicsFS时生效.

  注: 加载检查点时,上次被挂载的SimicsFS的中文件不变.

注: 此处常见错误:

1)      制作ISO文件时, mkisofs –o sol10-simicsfs.iso –J –r sol10-simicsfs

制作ISO文件成功,但是运行simics并加载时出现错误:

simcis> cd0.insert iso

Argument error: argument 1 (iso) given to ‘<scsi-cdrom>’.insert has the wrong type; object expected. SYNOPSIS: <scsi-cdrom>.insert medium

答: 开始一直以为是光盘制作的有问题, 换了好多种方式制作光盘,如dd if=filedirectory of=sol10-simicsfs.iso, mkisofs –o sol10-simicsfs.iso –Jrv filedirectory等, 但是都得到相同的结果,后来发现是因为ISO文件名中包含了英文字母的问题, 在simics命令行加载ISO文件时,文件名只能包含数字!

 

五.   加载,配置ruby和opal

1. 配置simics

          ./simics –stall

         simics> instruction-fetch-mode instruction-fetch-trace

         simics> istc-disable

         simics> dstc-disable

         simics> cpu-switch-time 1

         simics> read-configuration file.simics_path

2. 加载ruby 和opal

         simics> load-module ruby

         simics> load-module opal  //一般不需要加载opal

3. 配置ruby 和opal

         ruby0.setparam g_NUM_PROCESSORS 1

         ruby0.setparam g_MEMORY_SIZE_BYTES 4294967296

         ruby0.init

 

         opal0.init

4. 运行ruby和opal

         ruby0.dump-stats 

         opal0.sim-step 10000000000

         opal0.listparam

         opal0.stats

 

注: 此处常见错误:

1) Error loading module ‘ruby’: Failed to load module ‘ruby’ (‘/root/gems/simics_3_workspace/x86-linux/lib/ruby.so’): “version ‘Gcc_4.2.0’ not found (required by /usr/lib/libstdc++.so.6)”或Error loading module ‘ruby’: Module ‘ruby’ not found

答: ldd ruby.so可以发现ruby.so依赖的库函数, 移除libgcc_s.so.1

2) 加载ruby后,保存检查点, 重新启动该检查点时,出现错误:

Physical memory object cannot be found. If you are NOT compiling Ruby and you see this message, something is wrong. This message is part of the normal complication process.

答: 加载ruby一般是运行目标机前的最后一个操作, 加载ruby后是不支持检查点操作的.


 类似资料: