首页 > 代码库 > Simics虚拟机Solaris 8操作系统获取host 系统win7上的文件的两种方式
Simics虚拟机Solaris 8操作系统获取host 系统win7上的文件的两种方式
1 介绍
本文基于的环境设置如下:
? 宿主操作系统:Windows 7 Ultimate
? 寄生操作系统:Solaris 8 SPARC (SunOS 5.8)
? 虚拟环境:Simics 3.0.4
本文假定已在Simics 上安装好Solaris 8 SPARC 操作系统。
动机:一个Unix下可以运行的二进制文件GraphGen,在单独的一台装有Ubuntu的电脑上不能运行,因为该电脑的硬件架构是基于X86的,而GraphGen是SPARC架构下才能运行的程序;在我的笔记本Win7系统上安装Virtual Box,然后安装SPARC 架构的Solaris 8,安装不成功,因为我的笔记本电脑AMD的,这条路也不通;可行的办法是在笔记本电脑上利用Simics 虚拟环境安装Solaris 8 SPARC 操作系统,然后将Win7 上的文件GraphGen “拷贝”到Simics 中的Solaris 8 操作系统中去,从而达到运行该GraphGen 程序的目的。这个“拷贝”的过程,由于涉及到宿主操作系统和寄生操作系统的通信,显得并不那么轻而易举。本主要就是讲解这个“拷贝”的方法和过程。
? 宿主操作系统:Windows 7 Ultimate
? 寄生操作系统:Solaris 8 SPARC (SunOS 5.8)
? 虚拟环境:Simics 3.0.4
本文假定已在Simics 上安装好Solaris 8 SPARC 操作系统。
动机:一个Unix下可以运行的二进制文件GraphGen,在单独的一台装有Ubuntu的电脑上不能运行,因为该电脑的硬件架构是基于X86的,而GraphGen是SPARC架构下才能运行的程序;在我的笔记本Win7系统上安装Virtual Box,然后安装SPARC 架构的Solaris 8,安装不成功,因为我的笔记本电脑AMD的,这条路也不通;可行的办法是在笔记本电脑上利用Simics 虚拟环境安装Solaris 8 SPARC 操作系统,然后将Win7 上的文件GraphGen “拷贝”到Simics 中的Solaris 8 操作系统中去,从而达到运行该GraphGen 程序的目的。这个“拷贝”的过程,由于涉及到宿主操作系统和寄生操作系统的通信,显得并不那么轻而易举。本主要就是讲解这个“拷贝”的方法和过程。
2 获取宿主系统上的文件的两种方式
2.1 利用mount cd 方式获取宿主系统上的文件
主要步骤如下:
1. 将Win7 系统上需要被Solaris 8 SPARC 系统使用的文件打包成iso镜像文件的格式(这打包过程可以使用UltraISO 软件,我用的是UltraISO Premium Edition 9.6.2.3059,由于没有找到该软件的注册码,我仅仅使用的是试用版,不过不影响文件的打包。实际上具体哪个版本无所谓);例如,将Simics 安装目录下\import\sun4u 下的两个文件mount_simicsfs和simicsfs-sol8打包成文件myimage.iso (在UltraISO中的操作很简单,选择那两个文件,然后另存为 myimage.iso 即可)。
2. 将打包好的iso 镜像文件放到Simics 的工作目录文件夹下(例如F:\OS\simics\workspace),例如,将myimage.iso拷贝到F:\OS\simics\workspace中。
3. 在已经成功启动Solaris 8 寄生系统的情况下,在Simics 主界面上依次输入以下命令,new-file-cdrom myimage.iso 和cd0.insert myimage,如图1。
2. 将打包好的iso 镜像文件放到Simics 的工作目录文件夹下(例如F:\OS\simics\workspace),例如,将myimage.iso拷贝到F:\OS\simics\workspace中。
3. 在已经成功启动Solaris 8 寄生系统的情况下,在Simics 主界面上依次输入以下命令,new-file-cdrom myimage.iso 和cd0.insert myimage,如图1。
Figure 1: 在Simics 输入加载iso文件的命令
4. 此时,在寄生系统Solaris 8 SPARC 的文件夹/cdrom/cdrom0/下,你就会看到打包前的2个文件(参见图2),从而顺利实现了对宿主操作系统文件的访问。你可以将这些文件拷贝到你所需要的任何地方。你可以看到,寄生系统Solaris 8 只保留了文件名的前8位,但文件内容本身不会变化。
Figure 2: 在寄生系统Solaris 8 SPARC 中查看iso中的文件
2.2 进行相应的设置直接访问宿主系统上的文件
我们在经常使用寄生系统的情况下,会感觉到mount cd的方式获取宿主系统的文件会不方便,那么最好是采用一种方法直接访问宿主系统的某个驱动盘(例如,Win7 系统C盘下的内容)。实现上述目标的方法为:
1. 在寄生系统Solaris 8 SPARC 中新建一个文件夹(mkdir /usr/lib/fs/simicsfs/),利用mount cd 的方式将Simics 安装目录下\import\sun4u 下的文件mount simicsfs放到上述文件夹,并且重命名为mount;类似地,将Simics 安装目录下\import\sun4u 下的文件simicsfs-sol8 放到寄生操作系统的文件夹/usr/kernel/fs/sparcv9/中,并命名为simicsfs (实际上寄生系统会自动对文件名截断为8位,在Solaris8中,我们看不到文件名simicsfs-sol8 的,如图2)。
2. 在寄生系统Solaris 8中编辑/etc/vfstab 文件,在其中添加一行(空格分隔-),
simicsfs - /host simicsfs - no -
注意,使用vi编辑该文件的时候,屏幕显示内容不是真正的文件内容,利用上下箭头按键在显示的内容上来回走一遍才显示真正的内容。添加该内容后,及时使用cat 命令查看是否添加的规范。
3. 在寄生系统的根目录下,创建host文件夹(mkdir host)。
4. 在寄生系统下执行mount /host 命令,这时你就会发现在host 文件夹中就全是Win7 系统中C盘下的内容了。如图3。
Figure 3: 在寄生系统Solaris 8 SPARC 中直接获取Win7中C盘内容
3 保存寄生系统的工作状态
Simics 下的虚拟机操作系统是非记忆性的,当你下次重新启动寄生操作系统时,所有关于上次操作系统的更改都会消失。在利用上述两种方式获取到宿主操作系统的文件后,或者为了保存某些响应的设置,我们就必须将寄生操作系统的工作状态保存下,以方便下次启动时使用。该步骤如下:
保存某时刻的状态:
保存某时刻的状态:
1. 在Simics 命令输入区输入stop;
2. 在Simics 命令输入区输入save-persistent-state [自己起的状态名];
3. 在Simics 命令输入区输入run,继续系统的运行。
3. 在Simics 命令输入区输入run,继续系统的运行。
从某个状态启动:
1. 从peanut-common.simics 开启new session;
2. 在Simics 命令输入区输入load-persistent-state [自己起的状态名];
3. 在Simics 命令输入区输入run,运行系统。
例如,我为2.2小节的状态起的名为solaris_8_sf.boot。
1. 从peanut-common.simics 开启new session;
2. 在Simics 命令输入区输入load-persistent-state [自己起的状态名];
3. 在Simics 命令输入区输入run,运行系统。
例如,我为2.2小节的状态起的名为solaris_8_sf.boot。
4 问题
从图3中可以看出,我已顺利将GraphGen 程序拷入到了寄生操作系统上了,可以在Solaris 8 SPARC 中运行该程序了。心中窃喜,可是,程序仍然没有运行成功,出现如下结果:
ld.so.1: ./GraphGen: fatal: libstdc++.so.2.10.0: open failed:no such file or directory
可以看出,这个程序可以在Solaris 8 SPARC 上运行了,只是少了一个shared library。可见,已突破了硬件架构的限制,离成功运行该程序更进了一步。
ld.so.1: ./GraphGen: fatal: libstdc++.so.2.10.0: open failed:no such file or directory
可以看出,这个程序可以在Solaris 8 SPARC 上运行了,只是少了一个shared library。可见,已突破了硬件架构的限制,离成功运行该程序更进了一步。
参考博文: http://xilinx.eetop.cn/viewthread-463116
Simics虚拟机Solaris 8操作系统获取host 系统win7上的文件的两种方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。