附上我使用Simics 3.0.4安装此Solaris 8 镜像的过程记录
时间:03-15
整理:3721RD
点击:
因为要使用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 = "sol-8-u7-sparc-v1.iso"。类似的,在peanut-sol8-cd-install2.simics文件中增加$cdrom_path = "sol-8-u7-sparc-v2.iso"。在安装中发现simics自带的peanut sol8安装脚本有些问题,主要是默认会选择dhcp,而在安装的时候会报出错误,经google,发现是Solaris 8安装盘本身的问题,解决办法是在安装的时候不选择DHCP。为了解决这个问题,修改了simics安装目录下的targets/sunfire/peanut-sol8-cd-install1.simics(不是workspace目录下的),把run-command-file "$scripts$/../common/solaris8-install.include"注释掉了。不过这样一来,安装的时候就要手工进行很多选项的设置了。呵呵。
完成上面步骤之后,启动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主窗口会提示"Now exit Simics and coni....."。此时,在simics主界面菜单里选择close session,然后使用workspace/targets/sunfire/peanut-sol8-cd-install2.simics启动新的session。同样漫长的等待之后,又提示"Now exit Simics ... ",这时再次关闭session然后使用workspace/targets/sunfire/peanut-sol8-cd-install3.simics开始新的进程。第三个进程很快结束,此时提示"Now exit ....Make sure that the $os variable is set to solaris9"。注意此处是个typo,因为安装的是solaris 8,所以$os应该设成solaris8(在workspace/targets/sunfire/peanut-common.simics里增加一行$os = "solaris8"。至此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非常强大,可配置性极强,有兴趣的话可以仔细阅读文档来更深入地玩一下。
你好大哥 感谢你提供的教程 有个问题,只是我安装到第二张盘的时候,怎么就提示我输入用户名和密码啦求解答~
呵呵,这个要顶。
怎么这个帖子不续下去?
问下小编,运行memory compiler的时候,发现 文件名被 solaris截断了啊,文件名8位,后缀三位,应该是simics的问题,这个怎么解决啊?
你好小编,我想问一下,从网上down的sol8.iso文件应该放在哪里,才能被simics读取?
我启动session的时候出现这个错误:
Cannot find the CD-ROM specified as : sol-8-u7-install-sparc.iso
Please add this file, or edit the path in this script.
Simics license checked in!
Simics session exited with code 0
镜像文件一定要刻盘吗?
学习了
我也遇到跟你一样的状况,怎么继续下去,直接输入root好像能进入了,但是没办法打开GUI,只有serial-consol界面,而且显示不完全,也不能放大,用起来热别不方便,你是怎么搞得啊?
现在是着吗一个状况,怎么继续下去,直接输入root好像能进入了,但是没办法打开GUI,只有serial-consol界面,而且显示不完全,也不能放大,用起来特别不方便,你是怎么搞得啊?求大神帮忙解决一下吧!谢谢
用ftp上传vncserver包,用telnet登进去安装,然后远程用vncserver打开GUI吧~