天天看點

安裝simics+GEMS

安裝虛拟機SIMICS的設定以及步驟

一.   安裝環境

伺服器: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下通路主機上的檔案.也可以通過指令 .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 ‘’.insert has the wrong type; object expected. SYNOPSIS: .insert medium

答: 開始一直以為是CD光牒制作的有問題, 換了好多種方式制作CD光牒,如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後是不支援檢查點操作的.

繼續閱讀