Fixes for Installing Windows 7 on Newer Hardware
We have discovered yet another reason to leave Windows 7 behind. New hardware—which is better, faster, and stronger—is not able to support Windows 7 without customizations.
For instance, recently we (Danny Russell and Sulabh Upadhyaya) were tasked with downgrading a Dell Optiplex 7040 with preloaded Windows 10 to Windows 7, the operating system the firm still ran. It turned out to be much less straightforward than your typical deployment.
After encountering issues using our standard methods, we tried creating multiple bootable USBs, spent hours troubleshooting, and finally uncovered that the new Optiplex 7040s have Skylake chipsets. The Skylake processor is a follow-up to the Broadwell and provides increased CPU and GPU performance while reducing power consumption. Two great features. However, the new processor also means that certain drivers and hotfixes have to be installed into the ISO for Windows 7 before it can be deployed.
Dell’s implementation of the Skylake Chipsets into its new desktops may be its first attempt to move on from Windows 7 for good. Most of Dell’s newer Desktops have these processors.
That was not the first time we had an issue deploying Windows 7 to more advanced hardware. On an earlier project, also with Optiplex 7040s, we found that the deployment kept getting stuck in a reboot loop once WinPE was loaded. We had already added the Win 8.1 Driver to the WinPE boot image, which is usually all that is needed when you have a newer version of WinPE and are deploying an older OS. We verified, using the drvload method, that the driver we were attempting to load was the correct version for the network adapater.
While troubleshooting we happened to look into the folder where the boot WIM resides and saw that there were two boot WIMs in this location with odd names. Our guess is that at some point the process of mounting the WIM for driver adds had an issue and did not commit and seal correctly, leaving it in this unstable state; this was the source of our first headache. We created a new boot WIM and everything started to work as expected.
Once the image process seemed to be underway, or at least making more progress than it had before, it would again get stuck in a reboot loop. The issue here was with a specific kmpdf.sys file that we found booting into safe mode. This is a known issue with the following setup: WinPE 8.1 while installing Windows 7 x64 using Samsung SSD drives that have a feature for Non-Volatile Memory Express, or NVMe for short. This feature required special drivers for Windows 7, as it is not included natively by Windows 7 (it is supported on later OS versions). The fix for this required adding two offline Microsoft Hotfixes to the task sequence. Once these were added, all was well again.
Note: The below steps are for Dell hardware being imaged in an MDT environment, though they will probably work fine on other computers as well.
UPGRADE MDT TO 2013U2
1. If not already installed, download Windows ADK 10 1511 from here. Make sure to select Deployment Tools and Windows PE from the list of features to install.
2. If not already installed, download and install the Microsoft Deployment Toolkit 2013 Update 2 from here.
3. Download and install 7zip if not already installed.
DOWNLOAD WIN10 PE DRIVERS, WIN7 DRIVERS, AND SPECIFIC SKYLAKE PROCESSOR DRIVERS
4. Download the Windows 10 PE driver CAB here. Extract to a temp directory.
5. Download the Intel USB 3.0 Driver here. Extract to a temp directory. Confirm the model is under the ‘Compatible Systems’ tab. 6. Dell 7040-click here. Extract to a temp directory. Download the Windows 7 PE driver CAB file for the 7040.
7. Dell 3040-click to download. Extract to a temp directory. Download the Windows 7 PE Driver Cab
IMPORT DRIVERS TO MDT AND CREATE SELECTION PROFILES
8. Right click Out of Box Drivers and select New Folder, name it Dell PEx64. Right click and choose Import Drivers. Browse to your extracted Windows 10 PE CAB files\x64 directory and import.
9. Right click Out of Box Drivers and select New Folder, name it Optiplex 7040. Right click and choose Import Drivers. Browse to your extracted Optiplex 7040 CAB files\x64 directory and import.
10. Right click Out of Box Drivers and select New Folder, name it Dell W7Skylake. Right click and choose Import Drivers. Browse to your extracted Drivers\Win7\x64 folder under the Intel USB3.0 driver temp folder and import.
11. Go to Advanced Configuration > Selection Profiles. Right click Selection Profiles and select New Selection Profile. Name the New Selection Profile “Optiplex 7040 Drivers”. Select Out of Box Drivers > Optiplex 7040.
12. Go to Advanced Configuration > Selection Profiles. Right click Selection Profiles and select New Selection Profile. Name the New Selection Profile “Dell W7Skylake”. Select Out of Box Drivers > Dell W7Skylake.
MODIFY DEPLOYMENT SHARE PROPERTIES
13. Right click on MDT Deployment Share. Go to Properties. Deselect x86 from Platforms Supported.
14. Go to the Rules tab under the MDT Deployment Share Properties and add OSDDiskAlign=1024 to the rules
15. Go to the Windows PE tab under the MDT Deployment Share Properties and Under Platform x64, select the Drivers and Patches tab. Choose the All Drivers Selection Profile. Make sure only the top two checkboxes are selected, the Network and Storage drivers.
16. If the deployment share has just been updated to MDT2013U2 then right click on the Deployment Share. Select Update Deployment Share. Select the ‘Completely Regenerate Boot Images’ radial and proceed through the wizard.
UPDATE THE WDS SERVER BOOT IMAGE ON ALL SITES
17. Within the Windows Deployment Services right click on the Boot Images folder and add the newly generated boot image. It will be located under DeploymentShare\Boot folder as iso.
18. This may need to be done on multiple servers if there are multiple offices.
ADD NEW DRIVER INJECTION STEPS
19. Edit the Task Sequence. Go to Add. Select General. Select Inject Drivers. Select the new Inject Drivers step. Rename the step to Inject Drivers Dell Optiplex 7040. Select Install all drivers from the selection profile: Optiplex 7040. Under Options insert a WMI Query to confirm this is only installed on Dell 7040 machines.
20. Edit the Task Sequence. Go to Add. Select General. Select Inject Drivers. Select the new Inject Drivers step. Rename the step to Inject Drivers Dell W7Skylake. Select Install all drivers from the selection profile: Dell W7Skylake. Under Options insert a WMI Query to confirm this is only installed on Dell machines.