In-place upgrade of Windows Server 2008 R2 Server-Core Domain Controller to Windows Server 2012 hangs at black screen


Symptoms


Consider the following scenario:
  • You have a computer that is running Windows Server 2008 R2 Server-Core edition
  • Server-Core is hosting Domain Controller role
  • On Server Core you run in-place upgrade to Windows Server 2012
In this scenario, the Windows Server 2012 setup upgrade hangs at a solid black screen with a mouse pointer as seen in image below.




Note: The problem described in this article is specific to server-core enabled domain controllers that are in-place upgraded to Windows Server 2012 server core. This condition does not occur on GUI or Full-DCs that are in-place upgraded to Windows Server 2012.

Cause


The NTDSA.DLL & NTDSAI.DLL files are not installed when Windows Server 2008 R2 server core DC is upgraded to Windows Server 2012. This is confirmed through debug and OS image analysis. A Debug session from NTSD attached to LSASS.EXE with loader snaps enabled shows the following sequence while attempting to load NTDSA.DLL

023c:0240 @ 00048468 - LdrpLoadDll - ENTER: DLL name: C:\Windows\system32\ntdsa.dll
023c:0240 @ 00048468 - LdrpLoadDll - INFO: Loading DLL C:\Windows\system32\ntdsa.dll
023c:0240 @ 00048468 - LdrpFindOrMapDll - ENTER: DLL name: C:\Windows\system32\ntdsa.dll
023c:0240 @ 00048468 - LdrpResolveDllName - ENTER: DLL name: C:\Windows\system32\ntdsa.dll
023c:0240 @ 00048468 - LdrpResolveDllName - RETURN: Status: 0xc0000135
023c:0240 @ 00048468 - LdrpResolveDllName - ENTER: DLL name: C:\Windows\system32\ntdsa.dll
023c:0240 @ 00048468 - LdrpResolveDllName - RETURN: Status: 0xc0000135
023c:0240 @ 00048468 - LdrpFindOrMapDll - RETURN: Status: 0xc0000135
023c:0240 @ 00048468 - LdrpLoadDll - RETURN: Status: 0xc0000135
023c:0240 @ 00048468 - LdrLoadDll - RETURN: Status: 0xc0000135


where the 0xc0000135 status code maps to:
HexDecimalSymbolicFriendly error string
0xc0000135-1073741515STATUS_DLL_NOT_FOUNDThis application has failed to start because %hs was not found. Re-installing the application may fix this problem.

These binaries are installed as part of the “Active Directory Domain Services” optional role. The DirectoryServices-DomainController role is disabled by default and is not enabled because there is no role with that name on the Windows Server 2008 R2 operating system. Since there is nothing to match up among the available Windows Server 2012 manifests, the upgrade hangs.

Resolution


To resolve the situation where the server is stuck on the upgrade, continue to reboot the server until the rollback to the previous OS version and state is triggered. After the permanent hang at the black screen, reboot the server twice. Setup will detect the failed upgrade attempt and will roll back the system to the previous OS version.

Note: You should not experience any data loss in this process. Server-core DCs that were healthy and functioning prior to the OS version upgrade attempt should be continue to function.

You can make the in-place upgrade succeed by adding a "Replacement Manifest" to the setup source files. Please contact Microsoft Customer Technical Support to retrieve the manifest. Ensure to reference this article so the agent can provide you with the manifest file free of charge.

These are the steps to follow to use this manifest to upgrade a server Core Domain Controller:
  1. Expand the contents of the CAB file retrieved from Microsoft to get the manifest file "DirectoryServices-DomainController-ServerCoreUpg-Replacement.man".
  2. Copy the Windows Server 2012 installation DVD contents to a hard disk folder such as d:\products\ws12.
  3. Create a folder d:\products\ws12\sources\replacementmanifests.
  4. Place the manifest file retrieved from Microsoft into the new folder.
  5. Use the server location created in step 2 as the source for your server upgrade.

Workaround

The workaround to get out of this situation if you cannot use the approach mentioned above:
  1. Promote new Windows Server 2012 Server core DCs on different physical or physical machines.
    Instead of in-place upgrading existing W2K8 R2 Server core DCs, promote new Windows Server 2012 server core DCs on new physical or virtual machines. Retire the down-level W2K8 R2 server-core DCs as required.
  2. Remove the ADDS role on the W2K8 R2 Server core computer prior to the in-place upgrade to Windows Server 2012.

More Information


When the upgrade hangs and you reset the machine, Windows boot loader defaults to booting "Windows Server 2012". You could trigger the rollback in the Windows boot loader by selecting the "Windows Setup Rollback" boot opiton. You can also boot the machine with the default setting:



If the "Windows Server 2012" boot option was used, SETUP detects the failed in-place upgrade and automatically triggers the rollback to the previous OS version.



Note: The size and aspect ratio of screenshots depicted in this article have been modified for brevity.

You might run into a problem with Internet Explorer after the rewind: