Link to home
Start Free TrialLog in
Avatar of oneobserver
oneobserver

asked on

Converting Win2K Server to Hyper-V using P2VHD - How to remove drivers

I have a client with a Win2K server running a legacy application that we need to convert to a virtual machine before the old HW dies on us. I have success converted the hard drive to a VHD image using SysInternals P2VHD application by cloning the RAID image onto a single disk and the  attaching that disk to the host machine and using P2VHD. I then created a new virtual machine, and attached this drive as the dis for it. When the VM boots you get the initial Win2K Server boot graphic for 10-15 seconds and then the BSOD comes up with:

*** STOP: 0x0000007B (0xF201F84c, 0xC0000034, 0x00000000, 0x00000000) INACCESSIBLE_BOOT_DEVICE

The second component of the Stop code indicates that the problem is a driver issue, from what I can gather from Googling the codes. The original system has an Intel motherboard with a Promise IDE RAID controller that hosted the original Boot Drive. Since the boot.ini file looks normal, I am assuming that the problem is the Promise drivers are still trying to load and Promise drivers and switch to them to access the boot device. I have NEVER had to do surgery on a boot drive at this level. Can somebody help me through the steps to remove the Promise drivers and change the boot drive back to just a plain IDE? I can mount this VHD to another VM running Win 2008, so I can delete things from the image and explicitly edit registry files, if somebody can give me the steps. If this is going to require a repair reload of the original OS, that may be an issue, as we are having trouble locating the original OS CD, and I no longeer have any copies of my own. Please let me know what I need to do.
Avatar of Eduardo Goicovich
Eduardo Goicovich
Flag of Chile image

Remove the disk driver at the source vm system and put a generic one

Go back to the original physical computer
Boot Windows
Go to 'Start' --> 'Control Panel' --> 'Administrative Tools' --> 'Computer Management' --> 'Device Manager'
Expand the 'IDE ATA/ATAPI controllers selection'
Double click the 'controller' entry (not the 'Channel' entries)
Go to the 'Driver' tab
Select 'Update Driver'
Select to 'Install from a list or specific location (advanced)'
Select 'Don't search. I will choose the driver to install'
This should display a list with your specific controller and a Standard / generic controller.  Select the standard / generic controller.
Finish the wizard
Shutdown the system
Attempt to migrate the system again
Avatar of oneobserver
oneobserver

ASKER

Can't quite do that, as I have to keep the original system alive and working while we migrate to the VM.

I will try and diconnect the old RAID drives, and put the clone in place of them on the system and see if it will let me do those steps with the clone. I'll try that tonight after they close.
Hi Oneobserver,

As mentionned one the following articles, Disk2VHD relies on VSS to perform live P2V conversion and windows 2000 does not have VSS. Therefore this utility is not suited to perform windows 2000 P2V conversion:
http://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/47d59e59-edda-4d8d-912b-921181b65037/
http://technet.microsoft.com/en-us/library/cc764232.aspx

In your case with windows 2000 you're supposed to use ImageX to take an image of Windows 2000 offline from winPE environment and then deploy your image to a VM.
More documentation here:
http://technet.microsoft.com/en-us/library/cc722145(WS.10).aspx

1. create bootable winPE image containing ImageX (do that using WAIK)
2. boot windows 2000 computer from the winPE DVD and run imageX capture.
You have to insert the DVD + a USB device then run the following command:
    imagex /capture c: e:\sata.img “vista”
This command is taking an image of volume C: and copy it to sata.img on the USB E:
3. create the destination VM on hyper-v and give it an empty VHD
4. connect the USB to the hyper-v host, access to the diskmgmt.msc console. From there, you can set the USB drive to offline. Once the USB drive is offline you can mount it on HyperV as a pass-through disk.
5. insert the WinPE DVD previously built into the Hyper-V host and boot the new VM from there
6. from the winPE environment you should be able to locate and format your local VHD drive using diskpart
7. you should then be able to apply the image of the C:\ drive of the 2000 machine with this command line:
imagex /apply c:\sata.img “vista” e:\ (where e:\ is the c:\ drive of the VM once you'll have restarted)

All these steps are not exactly straighforward and I only did it once. But you could refer to this specifc book: "Windows Server 2008 R2 Hyper-V: Insiders Guide to Microsoft HyperVisor" page 108 from John Kelbley and Mike Sterling...

Hope it helps.

I just recently had a similar situation (e.g. Windows 2000 Server running a legacy app). I used System Center Virtual Machine Manager to virtualize the Windows 2000 Server. The process was flawless. You might attempt your virtualization again using SCVMM.

MO
Mqorteqa,

I don't have access to System Center, as this is a VERY small shop, so I am stuck with alternative measures.

OliverLo,

I had found the 1st two articles, but hadn't made the connection to the steps you proposed. Yours makes sense, except for one thing: I was able to make a WinPE Boot disk using the steps that I found at http://www.computerhope.com/forum/index.php?topic=87312.0, but I don't have ImageX available in my resulting package. Which package in WAIK has ImageX in it so I can make sure it is included when I create my disk?
Nevermind. I accidently missed one of the batch files. Specifically the one that copies the tools into the image. Trying again...
Just download the trial of System Center Virtual Machine Manager 2008 R2 SP1 and use it to do your P2V migration. If you don't find the additional management capabilities of benefit you don't have to buy it. By the way MSRP on the workgroup edition is only about $500 if you do decide you want a full license for it after the trial is over.

Here is a link to download: http://technet.microsoft.com/en-us/evalcenter/cc793138.aspx

MO
If your attempts to go with OliverLo's plan doesn't work out, just use the SCVMM trial to do your migration. It's fairly easy and wizard driven.

MO
I'm downloading it now as my fall-back position. Client is tight on money, but I may be able to get them to spring for this. Depends on how mellow they are after getting back from vacation next week...

If nothing else, I'll go play with it on my Hyper-V machine.
Like I said you can use it just for the purpose of running your P2V migration. You can accomplish the migration during the trial and then remove the program after you're done. No cost.

MO
Hi OneObserver,

You have to manually built your own WinPE environment with ImageX inside.

Steps to create a WinPE environment containing ImageX:
1.      Download WAIK for Windows 7 or 2008 from the following web site:
http://www.microsoft.com/download/en/details.aspx?id=5753
2.      Install the WAIK on a windows 7 or 2008 OS
3.      Access to the directory “c:\Program Files\Windows AIK\Tools\PETools” and execute this command line for a X64 system:
copype.cmd amd64 c:\MyWinPE
The c:\MyWinPE folder will be automatically created.
4.      Copy ImageX.exe to the c:\MyWinPE\iso folder
copy "c:\Program Files\Windows AIK\Tools\amd64\imagex.exe" c:\MyWinPE\ISO
5.      Create a wimscript.ini to ease the image process by configuring exclusions.
You could use this content in your script:
[ExclusionList]
ntfs.log
hiberfil.sys
pagefile.sys
“System Volume Information”
RECYCLER
Windows\CSC
[CompressionExclusionList]
*.mp3
*.zip
*.cab
\WINDOWS\inf\*.pnf
You must then place this file in the c:\MyWinpE\iso directory.
6.      You have to add the winPE base image to the ISO directory, please do as follow:
copy "c:\Program Files\Windows AIK\Tools\PETools\amd64\winpe.wim" c:\MyWinPE\ISO\Boot.wim
7.      You now have to built the iso WinPE image:
oscdimg.exe -n -bc:\MyWinPE\etfsboot.com c:\MyWinPE\ISO c:\MyWinPE\MyWinPE.iso
Please apply this command line as written here (no space after -b)

Let me know if it works.
OliverLo,

I was able to get a a WinPE disk built last nighht using the instructions from the link I included. the problem was that I couldn't see the C: drive on the Win2K machine, because the WAIK builds a Win7 version of he WinPE and there are no drivers for the Promise RAID that hosts the original Win2K Machine. I could find XP drivers, but no Win7 ones. I'll be trying the SCVMM later ths morning when I get back to the client's office.Yours is a good answer, just not working for this piece of HW.
ASKER CERTIFIED SOLUTION
Avatar of Michael Ortega
Michael Ortega
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Suggestion came too late. Just completed the installation of VMM on the existing Hyper-V server host, and now it has mucked up some part of the acls, as it will not start any of the existing VMs now. I had originally placed the VM files under a directory called Virtual machines and the Hard Drives in a parallel directory called Virtual Drives. Both managers can see the settings files and the VHD files, but attempting to start either of the existing VM results in:

"Unnamed VM" could not initialize

an attempt to read or update the virtual machine
configuration failed because access was denied.

"Unnamed VM" could not initilize. (Virtual machine ID
1A4E96D-8657-4ADF-800E-11F0204FB54D)

"Unnamed VM" could not read or update the virtual machine
configuration because access was denied: General Access
denied error (0x80070005). Check the security settings on
the folder in which the virtual machine is stored (Virtual
machine ID 1A4E96D-8657-4ADF-800E-11F0204FB54D)

I am now pretty much dead in the water. A quick check of Google turned up several refereces to this happening if you move the Virtual Disks (I didn't) and don't preserve acls. The best one gave a the fix as running the following:

icacls “<virtualmachinefolder>” /grant “NT VIRTUAL MACHINE\<virtualmachineguid>”:F /T (for example icacls “D:\Virtual Server\Virtual Machines\Server” /grant “NT VIRTUAL MACHINE\598AFA1B-1726-44B7-8435-E00B2ACAF2B5¿:F /T

I am having issues applying that since I am not sure where that final "Server" came from in his path, as all my virtual machines folders in that directory have the same name as the machine ID.
Everytime I attempt to run that command using my directory structure:

C:\Users\administrator.RTANGLE>icacls "D:\Hyper-V\Virtual Machines\Virtual Machines\1A4E96D8-8657-4ADF-800E-11F0204FB54D" /grant "NT VIRTUAL MACHINE\1A4E96D8-8657-4ADF-800E-11F0204FB54D":F /T

I get back:

Invalid parameter "Machines\Virtual"
Ater retyping the command several times was finally able to get it to grant access to all the folders and files for each machine. But now I can't get past, can't read or update saved state file. Sigh! I'm going to break this part of the problem out to a new question, since it isn't part of the original issue.
Yikes. I've never had that happen before. I'm not even sure how it's related to the SCVMM install. Sorry about that. I've had problems in the past with simply being able to install SCVMM. In fact, it simply wouldn't not install and that's why I was trying to make the recommendation to install it on a VM or other physical server running 2008 R2.

MO
It monkeyed with the permissions somehow on this thing and caused a great deal of panic!!

Luckily, I just figured it out and got everything back up again. Well almost, still working on getting the non-critical VM re-imported... but major panic averted for now. Needless to say, I will NOT be touching this again until next weekend. So please place this question on hold until Saturday.

Headed home for some sleep if I can get my heart to slow down...
OK. Back at this again and the basic process is pretty slick using the VMM, but it had the same issues I had when trying to build the WinPE environment by hand. No compatible driver available for the Promise Fastrack RAID on the motherboard that the C: drive is built on, and no drivers for the onboard ethernet card that is already being used. I can work around the ethernet issue by installing another card in the system that is supported, but have no idea how to address the Promise RAID one. Anybody have any suggestions?
I have already cloned the data from the Promise RAID onto a single IDE HD that I can, and have, mounted onto the Hyper-V Server, but I am not seeing an option for build a VM from an attached drive.
Hi Oneobserver,

If I understood correctly you want to use the data that is directly stored on the IDE HD from Hyper-V. This is the most optimized choice in term of disk access performance. You need to configure a pass-through disk in this case. Please refer to this article:
http://blogs.technet.com/b/askcore/archive/2008/10/24/configuring-pass-through-disks-in-hyper-v.aspx
Don't forget to set the disk to offline once connected to avoid conflict with the host operating system.

Nope, that's not it either as I can get that same effect by using p2vhd an making a virtual hard drive. Still has the problem of the image wanting to use the promise drivers to access the RAID and immeadiately giving a BSOD. I have a request into promise for Vista drivers and am awaiting their response. If I can get those then the VMM offline conversion process should solve my problem. The big part of that "if" is whether or not a driver exists...
Just catching up the thread. I've never had specific experiences with non-DELL server equipment. If you know DELL they you're probably familiar with their PERC RAID controllers. Converting from DELL (even with 10 year old) PERC controllers have never been a problem. With any luck Promise will have a driver available that will work.

MO
Unfortunately Promise won't support an on-board controller, saying I have to contact the vendor. And Intel says the board is too old and won't even allow me to make an email inquiry about it from their website. That leaves me stuck between that proverbial rock and a hard place... Not sure I could ever recommend an Intel motherboard based server ever again based on this experience.
How about using Acronis to backup & restore using their universal restore option? You could use the eval license so you're not out of pocket. This should allow you to pull an image of the source system and then restore to a virtual machine in Hyper-V using their universal restore/bare metal restore technology.

MO
Go back 6 steps and review ;-). That is essentially what I did. The image of the drive expects the Promise Drivers to boot with, so gives a BSOD shortly after starting the boot process. I was hoping the VMM process would automatically strip those out as part of the conversion. Baring that, I need to remove the drivers by hand and it's been SO LONG since I have had to do that on a Win2K I don't remember how. I am about down to doing a repair install on the image to get base IDE drivers back in place, if I can just locate a copy of Win2K to use.

Given that I am using a copy of an image, I guess I can't really hurt anything by trying the repair load on the image...
Saga continues and I am just this close ]...[ to a solution for this...

Nothing that I could come up with allowed me to do a direct conversion, so I am working down the path of a bare metal restore onto a newly loaded from Scratch Win2K virtual machine. Step 2  of my instructions require setting up the Recovery Console in the Virtual machine. When I do that, and test if I can get it to come up so I can restore the registry hives properly, I am back to that dreaded BSOD with the error:

STOP:  0x0000007B (0X85E6B030, 0xC000014F, 0x00000000, 0x00000000)
INACCESSIBLE_BOOT_DEVICE

Which puts me right squarely back where I started. Sigh!

Can somebody give me instructions on how to properly install the recovery console under Hyper-V for Win2K with the proper drivers, or at least tell me how to make a driver disk with the proper drivers on a floppy image?
This problem has become moot, as I was apparently over thinking the solution to the problem. Ended up just installing the CRM DB SW and then restoring the data on top of it and now have a working installation. The client will be testing through the rest of the week to be sure.

I would still like to be able to correctly install the Recovery Console, but have a couple of work arounds for that for now.

I am awarding the points to mgortega, for the suggestion to use SCVMM. Other than the RAID issue and the initial scare when installing it, it has been the slickest part of the new setup. I have used it twice to clone an old machine to a VM and the point and shoot interface works really slick.