安裝虛拟機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後是不支援檢查點操作的.