1 Reply Latest reply on Nov 18, 2016 3:04 PM by jmoore2333

    LDMS 2016.3 Provisioning WinPE Image File driver load issues- resolved

    srowley Rookie

      Hi all, we just updated our Landesk environment from 2016 to 2016.3 and ran into an interesting issue after the upgrade, and I wanted to share my findings here in case anyone else is running into the same issue. Let me start by first explaining the behavior I have been noticing over the past couple of weeks since our upgrade.

      We provision a fair mix of different machines in our environment. Microsoft Surface Pro 3 and 4, HP EliteDesk 800 g1/g2, EliteOne AiO 800 G1/G2, ProBook 650, HP ZBook, etc. Some of these devices require additional drivers for network and/or storage for WinPE to be added to the LANDESK boot image. Before our upgrade, we had added the drivers we needed to our x86 and x64 boot.wim files to support the client computers we have, and things were working great. However, as we continued to provision new computers since the 2016.3 upgrade, we started running into problems. These clients would initially boot into the WinPE 4.0 environment, but then fail to load drivers. Two problematic machines particularly were a Surface Pro 4 (provisioning from a Surface 3 docking station) and an HP EliteOne 800 G2 AiO. The Surface Pro 4 was failing to load storage drivers, and the EliteOne 800 G2 was failing to load network drivers. Additionally, on both clients, during the first command prompt window running through the driver module loading process, it would stop at a message that would essentially say "the core name in corename.txt could not be found..." etc, etc. I spent the better part of the day trying to manually inject drivers to the WIM file, with no luck. After the loading process failed, I would start a new console and type ipconfig. Normally, you would get IP information on your network adapter, which would indicate the driver is loaded and running properly. The readout would not show anything for a NIC, which told me the driver was not loaded. Additionally, because this is a very customized WIM from LANDESK, I was not able to use regular DISM commands against the boot.wim file to inject drivers I downloaded from the Microsoft Windows Update catalog site for the Intel NIC. DISM would not recognize the \Windows subfolder as a valid WinPE OS folder. I also attempted manually placing the driver files inside the \Windows\System32\DriverStore folder, but the computer still would not pick up on the driver files. I did find, however, that I could load the drivers manually using the drvload command, followed by wpeutil InitializeNetwork and running ipconfig again. See this blog post here to learn more about this process, which can help you test drivers in a WinPE environment before injecting them into your image. After this process, I was finally getting a valid IP, but this of course was after the boot process was failing, before even getting to the template.

      I also found the boot.wim and boot_x64.wim files seemed oddly empty. By that, I mean that if I opened the WIM files, they were only showing two folders in the root- InstalledDrivers and Windows. The boot process was looking for LDDrvLoad.exe and corename.txt. The driver load executable was supposed to be in a separate root folder called ldclient and corename.txt is in a subfolder called temp. These were clearly missing from the new (2016.3) WIM files, which made sense why the boot was failing.

      After trying everything I could think of, I discovered that the upgrade process to 2016.3 actually kept backup files of our previous .WIM files. When I opened these (renamed to boot.wim.BAK and boot_x64.wim.BAK, respectively) I found, to my great delight and relief, that it still had the elusive additional folders we were missing in the new WIM! So, using DISM, I mounted the new WIM file to a temp directory on my computer, and opened the backup file with 7-Zip, which then let me copy the CBA8, InstalledDrivers, ldclient, and temp folders to the temporary folder for the new WIM, then use DISM to close up and commit changes to the WIM file. I then copied this back up to the vboot directory on the core (\\corename\ldmain\landesk\vboot\) to replace the boot.wim files and also on our PXE reps. After trying the PXE boot on the troublesome EliteDesk 800 G2, it finally loaded the template! I'm not sure why we ended up with dud wim files after the upgrade, but we had to manually restore the required folders from the backup files. Thankfully, the setup program backed these up for me, because I didn't think to do that beforehand and would've had a real rough experience had it not done it for me. I'm not sure if other LD customers that do this upgrade are going to run into the same problem, or if this was just some sort of freak situation for us specifically, but I'd like to at least get the word out there in case anyone else here is searching frantically to figure out the same issue. Or if you are planning on upgrading to 2016.3 and OS Provisioning is a big thing for you in your environment, please be aware of this beforehand so you know what's going on if you have the same problem.