将 Windows 7 部署到 OpenStack - 实例启动时出现 Windows 安装程序错误

将 Windows 7 部署到 OpenStack - 实例启动时出现 Windows 安装程序错误

我创建了 Windows 7 Pro 64 映像,但都出现此错误。我将它们配置为使用 1-74 驱动程序的 virtio 磁盘和网络适配器。它们在本地运行良好(ubuntu 13 上的 kvm、qcow2 驱动器、virtio nic 和磁盘),但当我将它们上传到我组织的 OpenStack 云时,Windows 会抛出错误。

当我尝试创建一个实例时,控制台中出现以下错误:

  • Windows 安装程序无法将 Windows 配置为在此计算机的硬件上运行。 在此处输入图片描述

我确认了错误,虚拟机重新启动,现在在尝试启动操作系统时不断显示以下错误:

  • Windows 无法完成安装。要在此计算机上安装 Windows,请重新启动安装。

在此处输入图片描述

正在读取此知识库我检索了日志文件,如下所示:

安装错误日志

  • 错误 [0x0f0082] SYSPRP LaunchDll:执行“C:\Windows\System32\scecli.dll,SceSysPrep”时发生故障,返回错误代码 1208[gle=0x000003e5]
  • 错误 [0x060435] IBS Callback_Specialize:在决定是否需要专门化或在专门化时发生错误;dwRet = 0x4b8
  • 错误 [0x0603f1] IBS Module_Term_ImageTransfer:无法禁用图像选择 UI;状态 0x80070005[gle=0x00000005]
  • 错误 [0x0601b8] IBS Module_Term_DiskSpace:无法设置磁盘配置 UI 标志。[gle=0x00000005]

安装日志

我不会在这里列出整个文件(下载我的安装日志),但有一个条目与知识库文章中描述的条目类似。最接近的条目是:

  • 2014-04-10 08:36:13,信息 SYSPRP SPPNP:功能驱动程序 iaStorV 未被使用。

解决方法

作为临时解决方法,我可以对损坏的实例执行以下操作以使其正常工作。但是,我需要一个永久的解决方案,以便首先不会出现错误。

  1. 在错误屏幕上按 SHIFT-F10 调出命令提示符。
  2. 运行 CD C:\windows\system32\oobe\msoobe

请帮忙,我已经尝试让它工作了两个星期了!

答案1

我能够通过以下方式创建没有启动错误的良好图像:

  1. 在本地创建映像,并加载 virtIO 驱动程序。最好在安装任何其他驱动程序、更新、软件或自定义设置时登录 Windows 审核模式
  2. 不要安装 cloudbase-init 或 sysprep 镜像
  3. 使用 Glance 将镜像上传到 OpenStack(我们称之为 SEED 镜像)
  4. 根据映像创建一个实例。如果在初始启动期间遇到任何 Windows 错误,请尝试解决它们(例如通过在我的解决方法答案中运行 msoobe)并启动 Windows。您的目标是让 Windows 在 OpenStack 模拟硬件上启动并运行。在此阶段,Windows 将自行调整以完美适应 OpenStack 模拟硬件 - 这在本地 VM 中很难做到。
  5. 如果您忘记了或者只是不想在本地实例上进行这些更新,请完成在 OpenStack 中更新/定制您的实例。
  6. 仍然不要安装 cloudbase-init 或 sysprep 镜像
  7. 关闭实例并拍摄快照(我们称之为 PREP 快照)!请记住:快照就是图像!您稍后可以引用此快照来更新图像,甚至在需要时拆分新风格的图像。
  8. 此时您不需要 SEED 映像或从中创建的实例。您可以删除两者。
  9. 从 PREP 快照启动新实例。请注意,Windows 无需像从 SEED 映像启动实例时那样进行所有硬件调整。
  10. 您现在可以安装 cloudbase-init 并 sysprep 实例。
  11. 关闭系统并拍摄快照(我们称之为图像快照)。
  12. 通过从 IMAGE 快照启动实例来测试它。
  13. 将 IMAGE 快照标记为公开并庆祝!

就我个人而言,我认为这应该是构建新镜像的标准流程。您不仅可以获得在将要部署的相同硬件上制作的镜像,而且与每次在本地机器上更新镜像并上传到 Glance 相比,使用快照功能在 OpenStack 内部更新/测试/分叉镜像将更快/更容易。

相关内容