我一直为我的笔记本电脑(Sony Vaio-VGNCR26B)安装双启动系统,两个操作系统分别是 Win7 和 Ubuntu 12.04 LTS(我认为现在指的是 12.04.1 LTS)。以前,我能够使用 VBox 启动本机 Windows。出于好奇,我决定转向裸机虚拟机管理程序,例如 Xen。
首先,我克隆了整个 160 GB 的驱动器,以确保没有丢失任何东西。然后,我使用 Clonezilla 单独克隆了 Windows 分区。清空硬盘,并通过 LVM 安装 Ubuntu 12.04.2 LTS。(注意:我给了 Ubuntu 9 GB 的空间)。之后,登录新系统,我下载、构建并安装了 Xen 4.2.0。最后,我为 Windows 7 构建了一个 VM。
然后,我在为 Windows 创建的新 120 Gb 逻辑卷上安装了 Win7。这在逻辑卷内创建了两个分区。存储 \Boot 文件夹的 100MB 左右的系统分区和另一个分区分配给根文件系统。成功安装后,我使用 partclone 在当前根分区上恢复了保存的 Windows 映像。在克隆操作期间,我看到源映像(分区)为 117 GB,而目标分区为 120 Gb。
克隆操作完成后,我得到了一个 Windows 虚拟机,它进入启动 Windows 屏幕,然后停止并显示 BSOD(STOP:0x0000007b)。高级启动选项没有帮助,因为它只是表明我必须尝试使用救援磁盘进行系统还原。启动到 Win7 救援模式并执行 Bootrec /fixboot(或 /fixmbr)没有帮助。有趣的是,Bootrec /ScanOs 显示 0 个 Windows 安装。所有这些错误都指向无效的分区表。即使我可以在 linux 下安装分区而没有任何问题,Windows 系统救援也可以看到该分区。我还尝试过从注册表中打开驱动程序,方法是将所有带有“Scsi Miniport”引用的键的起始值设置为 0(0h)。我还检查了驱动器签名是否是问题所在,但注册表中的签名和磁盘唯一 ID 是相等的。
那么,有人知道修复磁盘几何结构的任何技术吗?它会破坏虚拟机上的数据吗?我应该如何将 117 GB 分区克隆到 120 GB“驱动器”上?
我提前感谢您花时间回答我的问题!
请注意:我的所有数据都已备份。因此破坏性技术是可以的,但任何好的实践技巧都将不胜感激。
答案1
您遇到的第一个问题不是磁盘几何结构,而是 Windows 中的存储控制器/驱动程序。问题是,本机双启动 Windows 系统使用系统内置的任何存储控制器,而 Xen domU 使用较旧的 IDE 控制器来呈现模拟磁盘(即使您正在通过物理分区 - 它仍在模拟存储控制器)。要正确启动 Windows,您需要修复 Windows 中的存储驱动器 - 也就是说,您需要在启动时在 Windows 中安装新的存储控制器。主要问题是,为了安装新的存储驱动程序,您必须成功启动 Windows。我相信大多数 P2V 指南都要求您在本机平台上安装此存储驱动程序前您关闭 Windows 并在虚拟平台上启动它。因此,您可能需要返回双启动并在本机计算机上启动 Windows,安装新的存储驱动程序,然后关闭它并启动 Xen 并启动 Windows VM。您可以在 Google 上找到大量有关 Windows P2V 的指南,这些指南将指导您完成这些步骤。
仅将 Windows 分区传递到 Xen domU 的问题在于,它只会传递该分区,而不会传递 MBR 或任何内容。对于 Windows 7 来说,这可能尤其糟糕,因为它使用单独的启动分区,并且实际上需要这两个分区。通过启动到恢复模式并执行 fixmbr,您可能会在实际 Windows 分区的前几个扇区上写入 MBR,这会破坏一些数据。可能有办法纠正它,但此时最简单的方法可能是在 Windows 上从头开始。
最后再说一点 - 大多数计算机都带有 Windows 的 OEM 许可证。我不是许可专家,但 Windows 几乎肯定会抱怨硬件平台的变化,需要在新硬件下重新许可/激活,这可能无法正常工作,因为 Xen BIOS 没有神奇的 Windows OEM 许可证位。