Here is a P2V challenge I could use some advice with.

 

I have a source Windows 2003 physical machine that was upgraded several years ago from Windows 2000.  So its system is at C:\WINNT instead of C:\Windows.  The target is a RHEV VM. 

 

Booting the source machine from the virt-p2v CD and trying virt-p2v-server fails apparently because the Windows directory is c:\WINNT. 

 

What about the old-fashioned way – provision a new VM and use Microsoft ntbackup to backup the system drive and system state on the physical and restore to bare virtual metal on the newly provisioned VM?  Well , that also blows up because Windows 2003 installs into C:\Windows and doesn’t give an option to put it anywhere else.  So the target VM has an existing installation in C:\Windows while the source physical machine uses C:\WINNT.  So then the system state restore doesn’t work right and the resulting VM ends up a horrible mess. 

 

OK, so how do you build a new Windows 2003 system using C:\WINNT instead of C:\Windows?  Microsoft has a KB article with some suggestions.  The 2003 setup program will prompt for an alternate directory if it sees another installation on the target disk.  So the trick is, format the target disk with NTFS, create a \Windows directory on the target disk, then run the 2003 setup program.  It will find the \Windows directory and then prompt for an alternate directory.  Build a fresh install into C:\WINNT and then the system state restore should work properly.

 

Wonderful, how to create that \Windows directory?  Microsoft documents several suggestions including using an automated answer file on a floppy, or booting an old DOS flopppy or Windows 98 CD and formatting and creating the directory on the target disk by hand before doing the 2003 installation.  None of these work.  DOS and Windows 98 have no clue about virtio disks.  I’m not sure how to go about making a floppy image with the answer file we need.

 

If this were all physical, the easiest way would take the target disk, plug it into a Windows system, format it and create the directory, then put the disk back in the target server, do the build into \WINNT, and then ntbackup restore.  But I don’t see any option for RHEV to allow the virtual equivalent.  RHEV seems to go to lots of trouble to marry virtual disks to the VMs that create them and doesn’t allow the flexibility to move those virtual disks around.   This is a bummer.

 

I see a few options:

1 – Modify virt-p2v-server to also allow migrations with C:\WINNT – or even better, to parse boot.ini on the source physical machine to find the right Windows directory.

 

2 – A hack; Build a 2003 VM in the standard way in \Windows.  Now build Windows 2003 again on the same virtual disk, this time into \WINNT.  Boot the \WINNT copy, edit boot.ini to remove references to \Windows if present, delete the \Windows tree by hand.  Reboot, test, and now ntbackup-restore. 

 

3 – Preload the virtio block driver into the source physical machine.  Grab a reputable disk image copier with the ability to store disk images on a network share someplace.  Boot the source machine from CD and make an image of its C drive.  Make an ISO file out of that CD, boot the target VM from the ISO and copy the image onto the target virtual disk.

 

4 – I wonder if a Fedora live CD/ISO has the ability to format and write to NTFS partitions?  BTW, for any Fedora people reading this, I’m  **BEGGING** you – get rid of the elaborate Gnome graphics background pictures!  Do you have any idea how long that fancy background picture takes to paint when looking at the console of a Fedora VM inside RHEV Manager, inside a Windows RDP session, across a slow Internet link???

 

-          Greg Scott