Artisan Memory Compiler在SPARC虚拟机安装 在Simics上安装Solaris 8 SPARC版过程记录
因为要使用Artisan提供的TSMC 0.13um memory compiler生成memory macro,而memory compiler因为版本较早,不支持linux平台,所以使用Simics在PC上装了Sun的虚拟机来完成这一工作。过程简述如下:
使用的Simics版本为Windows版3.0.4,主机平台为在RHEL5上虚拟的WinXP x64版(经试验Windows 7也可以正常安装使用)。安装的Solaris版本为Solaris 8 (SunOS 5.8)。Solaris 10安装的时候出了问题,没时间去研究,就装了5.8.
Simics安装后会要求指定workspace目录,指定好之后,会自动建立modules和targets目录。安装Solaris的target选择的是sunfire/peanut。
首先根据从网上down下来的sparc版solaris 8的ISO镜像的名称在
workspace/targets/sunfire/peanut-sol8-cd-install1.simics文件中增加一行来设定ISO的名称,例如$cdrom_path = \。类似的,在peanut-sol8-cd-install2.simics文件中增加$cdrom_path = \。在安装中发现simics自带的peanut sol8安装脚本有些问题,主要是默认会选择dhcp,而在安装的时候会报出错误,经google,发现是Solaris 8安装盘本身的问题,解决办法是在安装的时候不选择DHCP。为了解决这个问题,修改了simics安装目录下的targets/sunfire/peanut-sol8-cd-install1.simics(不是workspace目录下的),把run-command-file \注释掉了。不过这样一来,安装的时候就要手工进行很多选项的设置了。呵呵。 完成上面步骤之后,启动simics,选择new session,选定
workspace/targets/sunfire/peanut-sol8-cd-install1.simics,启动Sun sparc虚拟机。这时会弹出Serial Console的窗口,显示虚拟机post的过程,在出现OK的提示符之后,在Console中输入boot cdrom -v命令,此时虚拟机开始从CD-ROM的iso镜像开始引导,安装过程开始,会提示用户配置很多安装选项,包括网络,硬盘分区之类的,多数按照默认值就可以,不过DHCP选项要禁用,同时name service也要选择none。另外,为了后面联网工作省事,IP地址设为10.10.0.5,子网掩码255.255.255.0。各种配置都搞好之后,进入漫长的文件安装过程,结束之后,console会显示resetting,显示虚拟机重启,同时simics主窗口会提示\Simics and coni.....\。此时,在simics主界面菜单里选择close session,然后使用
workspace/targets/sunfire/peanut-sol8-cd-install2.simics启动新的session。同样漫长的等待之后,又提示\,这时再次关闭session然后使用
workspace/targets/sunfire/peanut-sol8-cd-install3.simics开始新的进程。第三个进程很快结束,此时提示\。注意此处是个typo,因为安装的是solaris 8,所以$os应该设成solaris8(在
workspace/targets/sunfire/peanut-common.simics里增加一行$os = \。至此solaris 8安装成功。启动的时候,直接使用这个peanut-common.simics来启动Solaris 8,然后在主界面的Simulator菜单里选择run即可。也可在peanut-common.simics文件的最后加上一行run命令,这样虚拟机可自行启动。
完成上面步骤之后,已经可以在Serial Console里使用默认的root登录和执行各种基于文本的操作。接下来的工作是联网。peanut-common的默认脚本是通过端口转发来和内部虚拟机通信,默认网关10.10.0.1。刚才安装Solaris的时候,把IP设成了10.10.0.5。为了省事,这里把虚拟的WinXP的主机地址定义成静态IP 10.10.0.2。然后在simics主窗口中输入connect-real-network,会提示Host TCP 4021 -> 10.10.0.5:21 on link link0...,也就是默认把WinXP的端口4021, 4023, 4080映射成虚拟机的21, 23, 80端口,可以在外部访问WinXP的4021, 4023, 4080端口来访问虚拟机的ftp, telnet和http服务了。为了在虚拟机上使用vnc,还需要再运行命令 connect-real-network-port-in ethernet-link = link0 target-ip = 10.10.0.5 target-port = 5901 host-port = 5901 -tcp。此时,提示Host TCP 5901 -> 10.10.0.5:5901 on link link0。这样在虚拟机上启动vncserver :1的时候,从外部可以通过WinXP的5901端口直接连接。需要开放别的vnc桌面编号的话,执行相应命令即可。可以把上述联网命令都加入到workspace/targets/sunfire/peanut-common.simics中,这样只要启动虚拟机就自动执行上面的端口映射了。
上面步骤做完之后,就可以从外部使用telnet连接到WinXP的4023端口,直接控制虚拟的Solaris 8了。在虚拟机运行中的磁盘更改,实际都是在内存中进行的,重启之后全部都会丢失,而回到初始状态。因此,如果要保存更改的结果,比如安装了package,更改了solaris的设置等,需要在simics中使用save-persistent-state命令。过程如下:在Solaris中完成了操作之后,用root执行sync和init 0关机,在看到OK提示符之后,在simics中输入stop命令来暂停session,然后执行命令save-persistent-state xxxxx,xxxxx为自己起的当前状态的名称,比如可以是abc.state,之后会在workspace目录看到xxxxx.state, xxxxx.state_raw和xxxxx.sd0_image文件,这个是保存了此次更改的disk image差异。然后可以把xxxxx.state
改名为peanut-sol8.state,也可以参照xxxxx.state修改peanut-sol8.state文件,那么下次使用peanut-common.simics启动虚拟机的时候,就会加载此次的磁盘修改,否则还是原来的状态。以后每次使用虚拟机时更改了磁盘数据,并且需要保存的话,都需要照此进行。另外,由于虚拟机运行的时候,磁盘修改都在主机内存中进行,因此比如使用ftp上传和安装软件之类的操作都会占用主机内存,当内存占用到达上限(比如配置文件里设定的512M或者1024M),simics就会崩溃。因此貌似每次save-persistent-state操作之前,磁盘数据增加量不能太大。
以上步骤只是为了尽快地能使用Solaris 8来运行memory compiler,所以许多可配置的地方一律省略,以省时省力为主要目标。Simics非常强大,可配置性极强,有兴趣的话可以仔细阅读文档来更深入地玩一下。