Windows 10 driver injection doesn't install during sysprep



  • I know this isn’t directly an issue with Fog, but I wanted to see if anyone else has experienced this problem. In short, manually injecting drivers does not appear to work correctly with Windows 10. Windows 7 worked properly when modifying the devicepath in the registry but not anymore, the drivers do not get installed during Sysprep, resulting in the computer not joining the domain during the Sysprep phase. After the computer reboots to Windows then the drivers are found. I know some have recommend setting the driver path in the offline servicing section of the sysprep answer file, but that answer is not valid. That phase is never processed unless the image is applied using WinPE. You can see the workflow in the attached pic as well as more explanation here.
    0_1484707685071_sysprep.png
    https://technet.microsoft.com/fi-fi/library/cc749307(v=ws.10).aspx

    I know it’s a long shot, but I was hoping someone had a workaround.
    Thanks


  • Moderator

    @falko I got pulled off because we have a sick VM host server.

    Also considering if the unattend.xml fails to use DISM /online in the setupcomplete.cmd to inject the drives that got missed (assuming there was any). One other thing that we do is inject the dell cab winpe pack into the reference image before image capture. That dell cab driver pack contains network and storage drivers. So those are “built into” our reference image from the start.

    Again I’m taking jdd49 experience that its not working and trying to come up with a plan before I touch the system.


  • Moderator

    @george1421 how did the testing go?
    I plan to start checking out windows 10 deployments myself and had seen you mentioned adding the sysprep part in your post download script post
    Hope to test this the wknd


  • Moderator

    @jdd49 FWIW: What hardware are you using?



  • Thanks everyone for the suggestions. I’ll continue testing and report back if I find a solution.



  • @Quazz Fairly certain. Domain join is being done by the sysprep answer file, not the fog client. Drivers are not installed in time for the sysprep answer file to join the domain, but on the next reboot they do get installed.



  • @jdd49 I ran into this same problem beginning with Windows 8 not recursively pulling from folders I added to “c:\windows\inf”.

    My later tests using “offlineServicing” were only partially successful. Many modern devices have devices hanging off devices, which the “offlineServicing” doesn’t seem to want to wait around for to detect and install once the parent device is fully enumerated. If there was a way to force “offlineServicing” to trip more than once that’d be great but …

    Now I’m working on my first large scale Windows 10 image deployment; we’ll see what happens.


  • Moderator

    @jdd49 Do you know for certain it’s the driver at fault here? Because I use the inf folder method on all my images and it always works for me.

    There are other things that could cause domain joining (I’m assuming done by FOG client?) not to work properly.



  • @Quazz Same location for both. Windows 7 just copy drivers to c:\windows\inf works fine. Doing the same for Windows 10 does not.


  • Moderator

    @jdd49 I will test/disprove if it is working this afternoon. I’ll grab a o7040 and rename the driver directory on the fog server which should block all drivers being installed then image with win10. Our reference image only has the winpe dell drivers installed. Let me confirm if all of the hardware is detected.


  • Moderator

    @jdd49 Correct, but it was my understanding you were using a different location to house your drivers on Windows 7?



  • Yes they are inf, if not it wouldn’t work for Windows 7 either, as far as I know.


  • Moderator

    @jdd49 That’s impossible, there’s obviously something else going on that’s causing your problems. Drivers in the inf folder are installed on first boot, before OOBE. Are they actually inf drivers? Not cab?



  • @Quazz Unfortunately I have tried that too. Still the same result. Drivers not installed in time for domain join, but upon next reboot they are installed. This all worked fine in Windows 7, I’m thinking there just might not be any workaround for Windows 10.


  • Moderator

    @george1421 said in Windows 10 driver injection doesn't install during sysprep:

    Yes I’ve seen this before.

    You need to add this to the unattend.xml file for Win10

        <settings pass="offlineServicing">
            <component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                <DriverPaths>
                    <PathAndCredentials wcm:action="add" wcm:keyValue="1">
                        <Path>C:\Drivers</Path>
                    </PathAndCredentials>
                </DriverPaths>
            </component>
        </settings>
    

    Or where ever your install files are kept. The registry change was last officially supported in XP, and with Win7 they did keep that function in the system for legacy reasons. With Win10 that option was removed. You MUST use the unattend.xml method now.

    #wiki worthy, should probably go here somewhere: https://wiki.fogproject.org/wiki/index.php?title=Auto_driver_Install


  • Moderator

    @jdd49 I recommend placing inf drivers in C:\Windows\inf (you can put them in a subfolder) in that case, to test it out (and just in general it’s a good idea), you can even remove it with SetupComplete since they’re installed before OOBE phase (on first boot).

    You can grab driverpacks online (so essentially almost every NIC is supported)



  • What I have discovered is setting the devicepath in the registry does work with Windows 10, but not during the First Boot phase, but after the answer file is applied for the specialize phase and reboots again, then the devicepath is read. The problem with that is that the network driver is not yet installed when joining the domain from the answer file.

    In your case, perhaps a generic nic driver is found that works during the domain join(or maybe you aren’t joining the domain with sysprep). Difficult to say.


  • Moderator

    @jdd49 That is interesting. I wonder why its working in my environment??



  • That was the first thing I tried, unfortunately it doesn’t work. If you look at the diagram I posted, the offlineservicing pass does not get applied without mdt or sccm. It requires WinPE. In terms of using Fog, the only stages that get applied are First Boot and Windows Welcome.


  • Moderator

    Yes I’ve seen this before.

    You need to add this to the unattend.xml file for Win10

        <settings pass="offlineServicing">
            <component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                <DriverPaths>
                    <PathAndCredentials wcm:action="add" wcm:keyValue="1">
                        <Path>C:\Drivers</Path>
                    </PathAndCredentials>
                </DriverPaths>
            </component>
        </settings>
    

    Or where ever your install files are kept. The registry change was last officially supported in XP, and with Win7 they did keep that function in the system for legacy reasons. With Win10 that option was removed. You MUST use the unattend.xml method now.


Log in to reply
 

Looks like your connection to FOG Project was lost, please wait while we try to reconnect.