Posts Tagged ‘0x0000007B’

0x0000007B Windows and VMWare

Tuesday, February 19th, 2008

You’ve just converted a physical 64 bit Windows server or workstation to a VM using VMWare converter. You’re excited because you’re rebooting for the first time when, OH SNAP blue screen! If you’re one of the (probably two, maybe 3) people like me who have been struck by this issue you are not alone, I am here to help!

First it is important to make sure that we are referring to the same issue.

-You have converted a physical 64 bit Windows machine to a VM using VMWare.
-You have started the Virtual Machine in VMWare Server
-The Virtual Machine is continually giving you the blue screen of death with “0x0000007B”

If you answered yes to the previous questions than we’re going to turn the blue screen of death, into the blue screen of life my friends.

Its your lucky day!

The only reason I wrote this article is because I had this exact same issue in this exact same scenario, and it literally took me a week to get it resolved.

So now you benefit from my malaise.

Before we begin, I would like to stress how not responsible I am if you lose data, or if something goes a little awry and something doesn’t work out for you because of this guide, and besides I did my best and its not nice to pick on people who are really trying.

Anyhow, we will need a few things to get this show on the road.

–A recent BartPE CD (See my Article on creating a BartPE CD here)
–A backup of your Virtual Machine
    –Simply copy the directory that your Virtual Machine is stored in to another location. (That way if something gets totally blown up you can try again!)
–A decent soundtrack (optional, but helpful)

So now that we have assembled all of our parts and you are jamming away to Dragonforce or Neil Diamond (or a mash-up your brother-in-law made of both), we can begin!

Introduction —

– If you still have the .ISO file for your BartPE disc, create a new CD-ROM drive entry in your “Broken Virtual Machine” pointing to that ISO file.
    OR
– if you do not still have the .ISO file for your BartPE disc, put the CD in your physical CD-ROM drive on the VMWare host machine.
– Ensure that your “Broken Virtual Machine” is set to use the physical CD-ROM drive on the VMWare host machine.

– Start “Broken Virtual Machine”

– After starting “Broken Virtual Machine” You should be presented with the VMWare BIOS, hit ESC to bring up the BOOT menu.
– SELECT the CD-ROM option and press ENTER
– If everything goes correctly you should be presented with a BartPE splash screen.
    –If you are not presented with a BartPE splash screen, try check the settings for “Broken Virtual Machine” to ensure that the CD-ROM drive is set to be connected.
– After BartPE loads, you should see its wicked cool splash screen (Warp speeeeeed!) at this point we are ready to dig in to this guide.

Anything which is lost can be found —

– The problem, which has been very vaguely described and documented (no less) is that for whatever reason 64 Bit versions of Windows do not by default have the symmpi driver.
– The way we fix this is in three steps.
   –First, we find out how broken “Broken Virtual Machine” is.
   –Second, we fix “Broken Virtual Machine”
   –Third, we apologize to it for calling it “Broken Virtual Machine” upwards of 30 times in this guide and buy it a beer.

Broken to a degree you say?

Well, um. Yes.

Sometimes, the registry keys are there but the actual driver files are not. Other times. both the registry keys. and the driver files are there but the service is not set to start on boot.

So we just need to figure out how broken “Broken Virtual Machine” is.

First I will make a list of what should be there, and then we will work backwards to add anything which is missing, sound good? here we go!

In order for VMWare to work on a Windows System it needs a driver called SYMMPI to be present, for some reason by default the 64 Bit versions of Windows this driver is not present.

–The file must be present in:

C:\WINDOWS\SYSTEM32\DRIVERS\SYMMPI.SYS

–A Registry Key:

“pci#ven_1000&dev_0030″ must exist in HKEY_LOCAL_MACHINE -> SYSTEM -> ControlSet001 -> Control -> CriticalDeviceDatabase and be configured properly.

–A Registry Key:

“symmpi” must exist in HKEY_LOCAL_MACHINE -> SYSTEM -> ControlSet001 -> Services must exist and be configured properly.

First we check to see if C:\WINDOWS\SYSTEM32\DRIVERS\SYMMPI.SYS exists on your boot drive. I am assuming your boot drive is C: and your Windows installation directory is C:\WINDOWS.

C:\WINDOWS\SYSTEM32\DRIVERS\SYMMPI.SYS

In BartPE click on GO, and then open a command prompt.

–type C: and press ENTER

–type cd\ and press ENTER

–type dir and press ENTER

–Make sure that this looks like the C:\ drive on “Broken Virtual Machine”
–if you see a C:\Windows or C:\WINNT folder than most likely this is your boot drive if not, try and figure out your boot drive by trying different things.
–Try and remember where you installed Windows, usually it is C:\WINDOWS or C:\WINNT we will assume your installation path is C:\WINDOWS

–type dir c:\windows\system32\drivers\SYMMPI.SYS
    — Good Output –
        C:\>dir c:\windows\system32\drivers\SYMMPI.SYS
         Volume in drive C has no label.
         Volume Serial Number is 94C7-D124
         Directory of c:\windows\system32\drivers
        02/18/2005  03:40 AM            84,992 symmpi.sys
                1 File(s)         84,992 bytes
                0 Dir(s)   1,961,406,464 bytes free
        — Bad Output —

C:\>dir c:\windows\system32\drivers\symmpi.sys
         Volume in drive C has no label.
         Volume Serial Number is 042C-5F95

         Directory of c:\windows\system32\drivers

        File Not Found
    — end example output–

        if the file is there, you’re in luck! if not, we will have to find you a copy but don’t worry just yet, it is not too difficult to find usually.

    — If you have symmpi.sys move on to the next step.
    OR
        — if you do not have symmpi.sys stick around for a moment.
        — Many times OEM vendors or folks who build their own PCs know to copy the contents of the Windows installation CD to some obscure location on the hard disk, we’re hoping this is the case!
        — Lets see if we can get lucky.

– type dir /s symmpi.sy_

(What we’re doing is searching C:\ (or your boot drive) for a file called symmpi.sy_) Note: .sy_ is the compressed sys driver file.
        — Good Output —
            C:\>dir /s symmpi.sy_
             Volume in drive C has no label.
             Volume Serial Number is 94C7-D124

             Directory of C:\AMD64

            03/22/2006  07:00 AM            37,033 SYMMPI.SY_
                       1 File(s)         37,033 bytes
        — Bad Output —
            C:\>dir /s symmpi.sy_
            Volume in drive C has no label.
             Volume Serial Number is 94C7-D124
            File Not Found
        — end example output —

– If it turns out that you have a copy of SYMMPI.SY_ on your computer, note the location, in the case above its C:\AMD64

–type H: and press ENTER
All we have to do now is extract the file.
–type extract C:\AMD64\SYMMPI.SY_ C:\WINDOWS\SYSTEM32\DRIVERS\SYMMPI.SYS
Note: If you get an error about extract not being a valid 32 bit application you’re not in the right path. It is trying to use the 64 binary. type H: and press enter and try again.
extract should complete.
–type dir c:\windows\system32\drivers\SYMMPI.SYS
        OR
– If it turns out that you do not have a copy of SYMMPI.SY_ you will need to copy it off of your 64Bit Windows installation media.
Put the CD-ROM in your drive
Figure out which drive letter BartPE has assigned to your CD-ROM Drive (I will assume it is D:)
– type D: and press ENTER
– type dir /s SYMMPI.SY_
— Good Output —
C:\>dir /s SYMMPI.SY_
Volume in drive D has no label.
Volume Serial Number is 94C7-D124
Directory of D:\AMD64
03/22/2006  07:00 AM            37,033 SYMMPI.SY_
                                    1 File(s)         37,033 bytes
— Bad Output —

C:\>dir /s SYMMPI.SY_
Volume in drive D has no label.
Volume Serial Number is 94C7-D124
File Not Found
— end example output —
– type H: and press ENTER
All we have to do now is extract the file.
– type extract D:\AMD64\SYMMPI.SY_ C:\WINDOWS\SYSTEM32\DRIVERS\SYMMPI.SYS
Note: If you get an error about extract not being a valid 32 bit application you’re not in the right path. It is trying to use the 64 binary. type H: and press enter and try again.
extract should complete.
– type dir c:\windows\system32\drivers\SYMMPI.SYS

I will assume that the SYMMPI.SYS file is now in c:\windows\system32\drivers\SYMMPI.SYS
——–

Now we are ready to muck around in the registry
Now is about the time where I really hope you took my advice and made a backup of “Broken Virtual Machine”.

–pci#ven_1000&dev_0030
–type H: and press ENTER
–type regedit and press ENTER
–You should be presented with regedit (hope you backed up your VM… da da da..)
As you are currently viewing the Windows registry for your Live CD environment and that is just next to useless, we’re going to load a different hive.
–Click on HKEY_LOCAL_MACHINE, then click on FILE -> Load Hive
–Navigate to your boot drive (C:) and then to C:\WINDOWS\SYSTEM32\CONFIG
–Double-click on system, it will present you with a dialog box asking what to name the new hive call it something such as SYSTEM2 (it doesn’t really matter)
–SYSTEM2 is the actual system hive for “Broken Virtual Machine”, neat huh?
A word about regedit in BartPE for whatever reason I would say 60% of the time I tried to load this hive regedit would close, if you try it enough times it will actually work.
–expand SYSTEM2 -> ControlSet001 -> Control -> CriticalDeviceDatabase
–Look for a key called pci#ven_1000&dev_0030
–if you have a key called pci#ven_1000&dev_0030
–click on pci#ven_1000&dev_0030
–There should be two strings in pci#ven_1000&dev_0030
–ClassGUID which has a value of {4D36E97B-E325-11CE-BFC1-08002BE10318}
–Service which has a value of symmpi
–if those two strings are either not present in pci#ven_1000&dev_0030 or contain different information, change them.       
        OR
–if you do not have a key called pci#ven_1000&dev_0030
–RIGHT-CLICK on the LEFT PANE and click new -> key
–key name is pci#ven_1000&dev_0030
–RIGHT-CLICK in the RIGHT PANE and click new -> string value the name of this value is ClassGUID the value is {4D36E97B-E325-11CE-BFC1-08002BE10318}
–RIGHT-CLICK in the RIGHT-PANE and click new -> string value the name of this value is Service the value is symmpi

You should now have the first of two required registry keys properly setup.
———

–symmpi

–While still in regedit click all of the – symbols to close all of the open keys until you are back at the main hives.
–expand SYSTEM2 -> ControlSet001 -> Services
–if you have a service called symmpi left-click on it.
    OR
–if you do not have a service called symmpi RIGHT-CLICK on the LEFT-PANE and click new -> key
– key name is symmpi
–If the symmpi key is setup properly you should have 7 keys in the right pane.
–(Default) (value not set) STRING
–ErrorControl (DECIMAL) 1 DWORD
–Group  SCSI miniport STRING
–ImagePath system32\DRIVERS\symmpi.sys STRING
–Start 0 (DECIMAL) DWORD
–Tag 33 (DECIMAL) DWORD
–Type 1 (DECIMAL) DWORD
–If you have all of the keys in the right pane, most likely you will notice that the ImagePath key is missing and Start is set to 4 instead of 0.
–RIGHT-CLICK on the RIGHT PANE and select new -> String Value name = ImagePath value = system32\DRIVERS\symmpi.sys
–Double-Click on Start in the RIGHT-PANE, make sure DECIMAL is selected and change it to 0 if it is not 0 already.
–if you do not have all of the keys listed above create them using the method listed below.
–RIGHT-CLICK on the RIGHT PANE and select new -> type is either String Value or DWORD (see table above for types, names a values)
–Note: when entering DWORD values it helps to ensure that you have DECMIAL selected.

–After you have added, adjusted or just verified the configuration of the symmpi service configuration contract the registry hive until you are back to SYSTEM2 and then unload it.
—————————

Final thoughts.

How annoying was that?

I’m going to say very, hopefully it helps someone out.