vmware: 利用已有Windows 安装创建虚拟机

如果已有安装配置好的Windows 系统分区,将其转化为虚拟机文件,或者直接将虚拟机运行在其上,都是可能的,vmware 与另一个虚拟机软件VirtualBox 均支持此功能。 NOTE:VirtualBox 的开源版本 VirtualBox OSE 不支持直接在物理分区的系统上运行虚拟机,仅仅二进制分发版本支持此功能,当前版本:1.5.7。 无论如何,通过虚拟机启动物理分区上的操作系统,并同时希望某个时候还可以像平常那样直接从物理分区启动,实现这一目标的过程,以及使用的过程,都是带有一定的危险性,可能会导致无法修复的数据损失,这在两个软件的文档中都有提及。同时,因为软硬件环境的多样性,也可能无法成功实现从虚拟机的启动。 我选择克隆一份已有的Windows分区来创建虚拟机。下面介绍一下我的步骤以及使用的辅助工具。 所需软件 vmware-workstation 6.0.4 for...

如果已有安装配置好的Windows 系统分区,将其转化为虚拟机文件,或者直接将虚拟机运行在其上,都是可能的,vmware 与另一个虚拟机软件VirtualBox 均支持此功能。

NOTE:VirtualBox 的开源版本 VirtualBox OSE 不支持直接在物理分区的系统上运行虚拟机,仅仅二进制分发版本支持此功能,当前版本:1.5.7。

无论如何,通过虚拟机启动物理分区上的操作系统,并同时希望某个时候还可以像平常那样直接从物理分区启动,实现这一目标的过程,以及使用的过程,都是带有一定的危险性,可能会导致无法修复的数据损失,这在两个软件的文档中都有提及。同时,因为软硬件环境的多样性,也可能无法成功实现从虚拟机的启动。

我选择克隆一份已有的Windows分区来创建虚拟机。下面介绍一下我的步骤以及使用的辅助工具。

所需软件

  • vmware-workstation 6.0.4 for linux 安装文件
  • vmware-workstation 6.0.4 for linux Serial Number(30天评估
  • windows 98 启动盘,或者相应的.img 或者.iso 文件
  • windows 安装光盘,或者.iso 文件
  • ghost .img或者.iso文件

安装步骤

1. 安装vmware

# emerge -av1 vmware-workstation

NOTE: 安装完成之后,应该先读本地文档 ,尤其是Using Disks 一章,事实上,如vmware 这样,如行云流水一般组织的文档,非常少见。这些文档位于:

/opt/vmware/workstation/lib/help-manual/index.html

2. 选择运行虚拟机的用户(不要用root),将其加入vmware 组

# usermod -aG vmware yourusername 

3. 运行软件,输入Serial Number。

NOTE:如果运行软件遇到错误,可能需要重新emerge以下两个packages:

x11-libs/libview
x11-libs/libsexy

4. 按通常步骤创建一个Windows 虚拟机A。使用Windows 98 启动盘启动虚拟机。

5. 启动后,首先用fdisk 命令安需要分区虚拟机的磁盘,要求分区与想要克隆的物理分区在数量上相对应,并且至少要分别大于物理分区的已占用空间。

6. 重启虚拟机,格式化分区,Power Off 虚拟机。

7. 回到Linux 系统,接下来需要临时更改Windows 分区所在的磁盘的权限,将所有者由root 改为运行vmware 软件的用户。假设你的磁盘设备名为/dev/sda:

# chown yourusername /dev/sda*

在Linux 系统,确认Windows 所在分区当前没有在Linux 下挂载(mount),否则必须要umount 掉!才能进行接下来的步骤!

NOTE:如果使用udev,在Linux 系统重启后,修改的磁盘所有者会自动复原,也可以在下面克隆的步骤(10)完成之后,手工修改回来,以减少可能的风险。

# chown root /dev/sda*

8. 回到vmware,使用定制方式创建一个新的虚拟机B,选择使用物理磁盘以及单独的分区,并选择Windows 所在分区。保存退出,不必启动此虚拟机。

9. 回到前面创建的第一个虚拟机A的设定,在虚拟机中添加一个磁盘,选择已有的文件,并指向到虚拟机B 的vmdk 文件。保存,并使用windows 启动盘启动虚拟机A。

10. 配置虚拟机访问ghost 工具,在DOS 下运行ghost,进行分区到分区的克隆,源分区选择新添加的磁盘(来自于虚拟机B 的vmdk文件)中的分区,目标分区是前面使用fdisk 创建的相对应分区。一一克隆完毕。

在虚拟机A的设定中删除第9步新添加的磁盘,此时可以删除虚拟机B,并恢复/dev/sda* 的所有者为root。

NOTE: 如果使用DOS 的xcopy 命令代替ghost可能会遇到长文件名截短的问题,同时速度也更慢。

11. 配置虚拟机访问windows 安装文件,在DOS 下进入i386目录,运行winnt.exe启动系统安装程序,目标安装分区选择前面克隆的目标系统分区,待文件复制完毕,Power Off虚拟机。这步的目的是在目标系统分区写入Windows 引导记录。

12. 使用Windows 98 启动盘再次启动虚拟机,在DOS 下进入到系统分区根目录,一般会是C盘,需要编辑boot.ini,首先去除其系统/隐藏/只读 属性:

C:\> attrib -s -h -r boot.ini

编辑此文件:

C:\> edit boot.ini

13. 根据实际情况修改启动条目中的分区编号,使其符合虚拟机环境中的磁盘配置。修改默认启动条目,并删除windows 安装的启动条目,保存退出。

重启虚拟机,选择从硬盘启动。

如果顺利应该可以进入windows 启动界面,并启动成功。

14. 如果启动失败,可尝试进入安全模式。如果依然失败,可尝试重启Linux 系统,进入物理分区上的windows 系统,创建一个新的硬件profile作为backup,并在当前硬件profile 中,删去一些在虚拟机中不需要,或者认为可能引起问题的硬件,然后重启回到Linux 系统,从第7步重新做起,最后在虚拟机中使用修改后的硬件profile 尝试进行启动。

NOTE:当然,这一步也可以在第8步之前就准备好。

15. 启动成功后,可以在系统分区删除前面安装windows 导致的临时文件,比如:

C:\$win_nt$.~bt
C:\$win_nt$.~ls
...

 

在linux 下运行PowerDesigner 15 Beta 2

PowerDesigner 是Sybase 的一款优秀的数据库辅助设计软件,目前没有开发Linux 版本,同时我在Linux 下也找不到可替代的产品。经过尝试,通过wine 可以在Linux 下将PowerDesinger 版本15 很好的运行起来,加上一些额外的努力,还可以启用PowerDesigner 对VB Script 以及数据库连接的支持。 我把主要步骤列出来,供有兴趣的朋友参考。 测试环境: Gentoo...

PowerDesigner 是Sybase 的一款优秀的数据库辅助设计软件,目前没有开发Linux 版本,同时我在Linux 下也找不到可替代的产品。经过尝试,通过wine 可以在Linux 下将PowerDesinger 版本15 很好的运行起来,加上一些额外的努力,还可以启用PowerDesigner 对VB Script 以及数据库连接的支持。 我把主要步骤列出来,供有兴趣的朋友参考。

测试环境:

  • Gentoo Linux 2.6.24-r3
  • wine-1.1.0
  • PowerDesigner 15 Beta 2

由于缺乏VC80的支持,PowerDesigner 15 Beta 2 的安装程序默认在wine 下面无法正常运行,安装会失败。一种解决方法是移植已有的Windows 安装版本。

移植已有的Windows 安装版本

在Windows 下安装好PowerDesigner,然后将以下目录copy至Linux :

  • 程序的安装目录
  • 将存放License的目录:C:\\Documents and Settings\\All Users\\Application Data\\PowerDesigner 15

然后在Windows 运行注册表,将以下keys 分别导出:

  • [HKEY_CURRENT_USER\Software\Sybase\PowerDesigner 15]
  • [HKEY_LOCAL_MACHINE\SOFTWARE\Sybase\PowerDesigner 15]
  • [HKEY_USERS\.Default\Software\Sybase\PowerDesigner 15]

在Linux 下运行wine regedit 导入以上keys, 如果出错,那么可能需要先对文件的编码进行转换:

$ recode UCS2..  *Sybase*.reg

NOTE:如果没有recode 命令,$ emerge -av1 recode

导入成功之后,在Linux 下运行注册表工具,修改key :[HKEY_LOCAL_MACHINE\SOFTWARE\Sybase\PowerDesigner 15\License\LicenseDirectory],将目录修改为License 在Linux 下存放的目录,例如 "C:\\Documents and Settings\\All Users\\Application Data\\PowerDesigner 15"

如果一切顺利,就可以用以下命令来运行PowerDesigner了。

env WINEPREFIX="$HOME/.wine" wine "C:\Program Files\Sybase\PowerDesigner 15\pdshell15.exe"

另外一种方法是在Linux wine 下安装VC80 支持,然后在Linux 下运行安装程序。

在Linux 下进行安装

NOTE: 命令中跟在#后面的是注释文本 

在运行安装程序之前,按照自己的需求先准备好如下环境:

  • 隔离的wine 环境
  • .Net FrameWork 2.0 Support
  • VB Script Support
    • VBScript 5.6
    • Vitual C++ 2005 support
  • VC80 dll support (必需)
    • Microsoft.VC80.CRT.manifest
    • msvcm80.dll
    • msvcp80.dll
    • msvcr80.dll
  • Connection Profile Support(可在安装完成之后进行)
    • Sun JRE 1.4.2
    • DB2 JDBC Type 4 Driver - db2jcc.jar
隔离的wine 环境

此步为可选。

NOTE:如果省略这一步,请替换下面各节命令中的路径.winePD/ 为.wine/

如果不希望影响原有的wine 环境,或者用于测试,可以为PowerDesigner 新建一个独立的wine 目录。

$ wineprefixcreate --prefix $HOME/.winePD  
$ export WINEPREFIX="$HOME/.winePD" 
.Net FrameWork 2.0 Support

这一步是可选。

PowerDesigner 在Beta 2中引入了.Net FrameWork 2.0 支持,用于更漂亮的模型自动排版功能,如果希望使用需要先安装.Net 2.0 ,但.Net 2.0需要IE 5.0以上支持,安装IE 6 可以参考 Wine AppDB - Internet Explorer 6.0,经过尝试是可行的。

IE 6.0安装好之后到MS 网站下载.Net 2.0 安装文件 dotnetfx.exe,放至 $HOME/.winePD/drive_c/,运行安装文件完成安装。

$ wine "c:\dotnetfx.exe"
VB Script Support

这一步是可选。

首先到MS 网站下载合适版本的VB Script 安装文件:WindowsXP-Windows2000-Script56-KB917344-x86-chs.exe

安装过程参考 Wine AppDB - Visual Basic 6.0 Enterprise Edition,所不同之处是安装的文件不一样。

NOTE: 下面的/win/目录是我的 Windows XP安装分区。

$ winecfg # add libraries overwrite; set OS to Windows ME; 
$ cd .winePD/drive_c/windows/system32/
$ for i in riched20.dll riched32.dll oleaut32.dll urlmon.dll hhctrl.ocx ; do mv $i $i.bak; done	
$ for i in riched20.dll riched32.dll oleaut32.dll urlmon.dll hhctrl.ocx ; do cp /win/windows/system32/$i .; done
$ cp /win/windows/system32/mfc42.dll .winePD/drive_c/windows/system32
$ wine "c:\WindowsXP-Windows2000-Script56-KB917344-x86-chs.exe"
$ winecfg # set OS back to Windows XP
VC80 dll support

这一步必需完成以运行PowerDesigner 15 Beta 2 安装程序。

在网上下载msvbvm60.dll 和MS-VC80.MSI ,还需要去MS 网站下载Vitual C++ 2005 support 安装文件 vcredist_x86.exe。然后参考以下步骤完成安装。

$  cp Desktop/msvbvm60.dll .winePD/drive_c/windows/system32
$  msiexec /i "c:\MS-VC80.MSI"
$  wine "c:\vcredist_x86.exe"
$  ls .winePD/drive_c/windows/winsxs/ # 确认vcredist_x86.exe 安装成功
Connection Profile Support

这一步是可选。

PowerDesigner 当中支持对数据库的连接,这是通过ODBC 驱动程序实现的,此外,PowerDeisnger也加入了对JDBC 驱动程序的支持,其称作Connection Profile。在Linux 下为wine 程序配置ODBC,我没有经验,可能需要安装MDAC,而通过JDBC则比较容易实现。对于DB2 类型的数据库,IBM 提供一种TYPE 4的JDBC 驱动程序,可以不需要在连接的客户端安装DB2 Client,仅仅拥有TYPE 4驱动程序以及JRE 支持即可。下面的配置就是通过在wine 中配置JRE 以及DB2 JDBC TYPE 4 驱动程序来实现在PowerDesigner 中对DB2 数据库的访问。

NOTE:Linux 世界中的libiodbc 和unixODBC 并不适用这个场景,其提供的ODBC 数据源并不是为wine 程序使用的。

首先需要下载Sun 的JRE安装程序(1.4.2 for windows) 和IBM 的DB2 JDBC TYPE 4 驱动程序(跨平台)。

NOTE:IBM 的JRE 安装程序会检测ibmpc 系统兼容性,我在wine中无法通过检测(甚至在vmware 这样的虚拟机中也不行),具体原因不知道,导致安装失败,因此选择Sun的JRE。

$ winecfg # 在Libraries 中将 urlmon 临时改为 Builtin
$ wine "c:\j2re-1_4_2_18-windows-i586-p.exe"
$ winecfg # 在Libraries 中将 urlmon 改回 Native
$ mkdir ~/.winePD/drive_c/db2java
$ cp /opt/IBM/db2/V8.1/java/db2jcc_license_cu.jar ~/.winePD/drive_c/db2java/
$ cp /opt/IBM/db2/V8.1/java/db2jcc.jar ~/.winePD/drive_c/db2java/

运行wine regedit,找到key:

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environmen]

添加或者修改以下2个键值:

CLASSPATH=C:\db2java\db2jcc.jar;C:\db2java\db2jcc_license_cu.jar;. 
PATH=C:\windows\system32;C:\windows;C:\Program Files\Java\j2re1.4.2_18\bin 
$ regedit #add values to CLASSPATH , PATH
开始安装PowerDesigner 15 Beta 2

下面开始真正安装PowerDesigner。

$ winecfg # 在Libraries 中将 oleaut32 临时改为 Builtin
$ wine "c:\PowerDesigner15.exe"
$ winecfg # 在Libraries 中将 oldaut32 改回 Native
$ wine "C:\Program Files\Sybase\PowerDesigner 15\pdshell15.exe"

整个安装过程应该很顺畅,如果遇到问题,可以重头检查一下必需的步骤。

测试VB Script

执行Tools - Execute Commands - Edit/Run Script,在代码编辑框中写入一句简单的VB Script代码,比如: "dim s",然后点击Run,如果没有任何错误弹出,说明VB Script 支持正常。

测试Connection Profile

在File 菜单中点击 Revers Engineer - Databases,选择IBM DB2 UDB 8.x Common Server - Using a datasource,浏览datasource,选择Connection Profile,Configure 一个新的数据库连接。

点击Test Connection,如果出错,查看output (alt+1)中的messages,有助于解决问题。

TroubleShooting

Could not find dependent assembly L"Microsoft.VC80.CRT" (On running PowerDesigner.exe)

解决方法:安装VC80 dll support。

Runtime error: R6034 - An application has made an attempt to load the C runtime library incorrectly (On running PowerDesigner.exe)

解决方法:安装VC80 dll support。

Failed to load DLL: pdflm15 (On running PowerDesigner.exe)

解决方法:安装VC80 dll support。

err:module:import_dll Library MSVBVM60.DLL (which is needed by ...

解决方法:在Windows 安装中复制msvbvm60.dll 或者网上下载到wine 的system32 目录。

err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\windows\\system32\\vbscript.dll") not found (On Installing VBScript.exe)

解决方法:在Windows 安装中复制mfc42.dll 或者网上下载到wine 的system32 目录。

Required property "serverName" is unknown host

解决方法:检查网络连接,服务器设置,服务器地址,端口,数据库名称等。

Non SQL Error : Could not load class com.ibm.db2.jcc.DB2Driver。

解决方法:检查wine 注册表中CLASSPATH 是否包含正确的db2jcc.jar 全路径,注册表修改之后,应该重新运行PowerDesigner 应用程序。

Could not Initialize JavaVM!

解决方法:检查wine 注册表中PATH 是否包含正确的到JRE bin 路径,注册表修改之后,应该重新运行PowerDesigner 应用程序。

参考资料

延展阅读

 

奥运会第三阶段剩余门票查询

每日更新:所有项目剩余门票。 信息来源于:北京奥运官方票务网站页面,仅供参考。 更新 2008-05-14 使用“有票可售"作为状态提取关键字,使结果更为准确。 旧版本使用“最佳可选”作为关键字,因为无票的查询结果会有两种样式的页面,所以旧版本会将一些没有票的场次也列出来。...
每日更新:所有项目剩余门票。 信息来源于:北京奥运官方票务网站页面,仅供参考。

更新 2008-05-14

使用“有票可售"作为状态提取关键字,使结果更为准确。 旧版本使用“最佳可选”作为关键字,因为无票的查询结果会有两种样式的页面,所以旧版本会将一些没有票的场次也列出来。

mail.png


最近更新|Recent Entries

不定期更新|Handy Entries

分类栏目|Categories

按月归档|By Month

2008
07
05
04
03
02
01
2007
12
10
07
06
05
04
03
02
01
2006
12
11
10
09
08
07
06
05
04
03
02
01
2005
11
10
09
08
07
04
03
2004
12
11
10
09
08
07
06
05
04
03
02
01
2003
12
10
09
08
06
2002
09
08
04
03
02
2001
12
09
07
06
05

站内链接|Site Links

推荐站点|Favorite Sites

友情链接|Links


Powered by MT Blogroll
Powered by
Movable Type 3.34