vmware: 利用已有Windows 安装创建虚拟机
如果已有安装配置好的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 ...


