Deploy Windows 7 to OpenStack - Windows Setup Error when instance boots

1

I created Windows 7 Pro 64 images and all are getting this error. I configured them to use virtio disk and network adapter using the 1-74 drivers. They work fine locally (kvm on ubuntu 13, qcow2 drive, virtio nic and disk), but when I upload them to my org's OpenStack cloud Windows throws an error.

When I tried to create an instance I got the following error visible from the console:

  • Windows Setup could not configure Windows to run on this computer's hardware. enter image description here

I acknowledged the error, the vm rebooted and now it's constantly showing the following error while trying to boot the OS:

  • Windows could not complete the installation. To install Windows on this computer, restart the installation.

enter image description here

Reading from this KB I retrieved the log files, which look like this:

setuperr.log

  • Error [0x0f0082] SYSPRP LaunchDll:Failure occurred while executing 'C:WindowsSystem32scecli.dll,SceSysPrep', returned error code 1208[gle=0x000003e5]
  • Error [0x060435] IBS Callback_Specialize: An error occurred while either deciding if we need to specialize or while specializing; dwRet = 0x4b8
  • Error [0x0603f1] IBS Module_Term_ImageTransfer: Failed to disable the image selection UI; status 0x80070005[gle=0x00000005]
  • Error [0x0601b8] IBS Module_Term_DiskSpace:Failed to set the disk config UI flag.[gle=0x00000005]

setupact.log

I won't list the whole file here (download my setupact.log), but there was entry like the one described in the KB article. The closest entry was this:

  • 2014-04-10 08:36:13, Info SYSPRP SPPNP: The function driver iaStorV is not in use.

Workaround

As a temporary workaround I can do the following to the broken instance to get it to work. However, I need a permanent solution so that the error doesn't come up in the first place.

  1. On error screen press SHIFT-F10 to bring up command prompt.
  2. Run CD C:\windows\system32\oobe\msoobe

Please help, I've been trying to get this to work for 2 weeks now!

windows-7
openstack
sysprep
asked on Server Fault Apr 10, 2014 by Alex • edited Apr 10, 2014 by Alex

1 Answer

0

I was able to create a good image with no startup errors the following way:

  1. Create the image locally, and load the virtIO drivers. Preferably log into Windows Audit mode while installing any additional drivers, updates, software or customizing settings
  2. DO NOT install cloudbase-init or sysprep the image
  3. Upload the image to OpenStack with glance (let's call it the SEED image)
  4. Create an instance based on the image. If you get any Windows errors during initial launch, try to resolve them (Like by running msoobe in my workaround answer) and boot into Windows. Your goal here is to get Windows to boot up and running on OpenStack emulated hardware. During this phase Windows will adjust itself to perfectly fit the OpenStack emulated hardware - something that would have been difficult to do in a local VM.
  5. Finish updating/customizing your instance in OpenStack if you forgot or simply didn't want to do these updates on your local instance.
  6. Still DO NOT install cloudbase-init or sysprep the image
  7. Shut down the instance and TAKE A SNAPSHOT (let's call it the PREP snapshot)! Remember: a snapshot IS an image! You will later be able to reference this snapshot to make image updates, or even split off new flavors of images if needed.
  8. At this point you don't need the SEED image or the instance you created from it. You can delete both.
  9. Launch a new instance from the PREP snapshot. Notice how Windows doesn't need to do all the hardware adjustments that it did when you launched an instance from the SEED image.
  10. You can now install cloudbase-init and sysprep the instance.
  11. Shut down the system and TAKE A SNAPSHOT (let's call it the IMAGE snapshot).
  12. Test your IMAGE snapshot by launching an instance from it.
  13. Mark the IMAGE snapshot as public and celebrate!

Personally, I feel like this should be the standard process for building new images. Not only do you get an image that was made on the same hardware it will be deployed on, but updating/testing/forking the image will be much faster/easier to do inside OpenStack with the Snapshot functionality as compared to updating the image on your local machine and uploading to glance every time.

answered on Server Fault Apr 16, 2014 by Alex

User contributions licensed under CC BY-SA 3.0