SOLVED Windows Image Hangs on Boot

  • Good morning,

    I am almost positive my problem is not with FOG, however I’m hoping that someone here will have run into it and can help me.

    I’m running a Win10 Pro image on Dell Precision 7710 laptops with a 500GB SSD with the OS, and a 1TB Platter with other data(course material for the school I work for). Deploying from an Ubuntu server. Windows image was created on a ‘Master’ laptop. The full image was then captured from the Master and deployed to the student laptops.

    The problem I’m running into, and that I’ve had even prior to FOG usage, is some laptops will hang on the initial Windows 10 blue icon. Only way to fix it is to power down and restart. Sometimes it hangs 3-4 times, then on the 5 time it will boot normally. The ‘master’ laptop doesn’t appear to have this problem. And some student laptops don’t seem to have the problem either.

    I’ve tried doing the Windows ‘Startup Repair’ but it doesn’t fix it. Sometimes if it hangs 3-4 times in a row it’ll bring up the ‘Automatic Repair’ but that also doesn’t seem to do anything as the laptop can then hang right after the repair.

    Anyone seen this, or have any idea how to fix it?



  • Moderator

    @flipwalker If you have dell systems (sorry I don’t remember) you can get the cab files from here: (Hint: They are all in one place.) Just extract the drivers using 7zip and build the required directory structure.

  • Just a status report for those interested. I did get a functional image going, and it seems to have resolved the issues. However I was never able to get the Setupcomplete to run, however I added a first logon addition to the unattend calling that script specifically and now it works.

    Next on my to do list is getting a driver package put together for the laptops so they have the most up to date drivers installed on boot.

    Thanks for all your help, and we can probably mark this as ‘solved’, but I don’t know how to do that…

  • If you’re referring to the retail version of Windows 10 that’s created by using the Microsoft Windows 10 Installation Media Creation Tool, it’s not quite the same as the GVLK (Generic Volume License Key) version, but I don’t think there would be anything that would prevent the running of the setupcomplete.cmd.

  • @george1421 It was an ISO for Pro that I pulled off the Microsoft site. The SetupComplete is at this exact path:


    Contents of it is:

    sc config FOGService start= auto
    netsh wlan add profile filename=“c:\Image\Wi-Fi-RTI-25B.xml”
    shutdown -t 0 -r

    Do you see anything obvious?

  • Moderator

    @flipwalker As long as its not Win10 OEM then setupcomplete.cmd should execute as long as if its in the right location and you sysprep’d the image.

  • @tom-elliott Pro, I’ll have to wait until tomorrow to tell you the version number, I don’t have a machine at home tonight.

  • Senior Developer

    @flipwalker What version of windows?

    (Not just 10, but education, pro, etc…?)

  • @george1421 SetupComplete still isn’t executing. I can manually execute and it seems to work, but it doesn’t automatically. Any ideas?

  • @imagingmaster21 That’s what I’m working on now. Previously I wasn’t syspreping because I was scared of unattend. But others have convinced me I need to stop being a wuss and try to learn myself real good. I’m almost there. In fact as we speak I just sysprepped a reference image machine and I’m about to capture and test deploy it.

  • @george1421 Well I’ll be a son of a… Oh well. Ok. I went ahead and tried it anyway. Most of it seems to be ok, however my stepupcomplete.cmd doesn’t seem to want to run on its own. Is this because of the AD problem on the reference image? Or did I screw something else up? It worked previously on another test I did.

  • @flipwalker Are you using sysprep generalized and shutdown when you capture?

  • Moderator

    @flipwalker said in Windows Image Hangs on Boot:

    So hypothetically speaking, if the reference image got joined to a domain by FOG(bad FOG, you should read my mind and only do that when I want you to), do I need to scrap it and start over?

    Sorry to tell you this, but yes you must scrap that image. Because connecting your reference image to AD before sysprep will tattoo that machine in AD. Plus you may have GPO policies (that would be applied) that may interact with your system during OOBE. So its better off not to connect the reference image to AD then unconnect it before sysprep. It never ends well.

    Now when you install the FOG client in the reference image, you need to set the service to disabled before your computer is rebooted (for any reason). This will keep the service from running and doing not so helpful things to your reference image. And you are right for the setupcomplete.cmd, use the sc command in there to set the FOG service to auto, and start it if you need. Here is a wiki article on the fog client with sysprep:

  • @george1421 So hypothetically speaking, if the reference image got joined to a domain by FOG(bad FOG, you should read my mind and only do that when I want you to), do I need to scrap it and start over?

    I did find the WAP GPO, so that should be good to go now. The only thing I have in setupcomplete right now is the FOG restart.

  • Moderator

    @flipwalker Sorry working on a work project after hours.

    Yes the firstlogon section is for activities you need to do that requires a command shell.

    The setupcomplete.cmd file we do stuff like create admin user accounts (I know you can do that in the unattend.xml but we don’t) also we start the fog client in the setupcomplete.cmd so that the fog client doesn’t kick in too soon and botch OOBE (review the requirements for the FOG client in the wiki).

    Connecting to a WAP and setting the preferred settings are easily done by GPO and is the preferred method.

    Another point, don’t connect the reference image to AD before you sysprep it. If you need to execute things that need AD, do that in the setupcomplete.cmd or the first run.

  • @george1421 I found the autologin I think.

  • @george1421 So for future reference it doesn’t work. However when I removed it I now have a functional product. What part of your xml causes the login? Do you just put your additional commands in the windows\setup\scripts\setupcomplete.cmd file?

    One of the things I’m trying to get implemented is autojoining a WAP without having to provide students with the password. I have found a script that will hypothetically work, but getting it implemented is worrying me.

  • Moderator

    @flipwalker said in Windows Image Hangs on Boot:


    I’m not sure that will work outside of MDT/WDS/SCCM. The %SerialNumber% is a MDT variable. Anyway, what ever you name it in the unattend.xml file, the FOG client will change it to what matches in the fog database. In my unattend.xml I think I have something like DEFAULT64 or something like that, again it doesn’t matter since the FOG client can and will change the host name to match how you have the system registered in FOG.

    In my unattend.xml file I also have the windows system log in as a local admin and run a few commands and then reboot. This is all done in a hands off or also called lite touch method.

  • So I’ve got a basic unattend file. It’s much shorter then yours. I’m depending on the FOGClient to domain the laptops. Is there a reason I shouldn’t do that? One question that I have is we want our computer names to match the SN, I’ve done a bunch of googling and I’m not sure the command I’ve got in the unattend will do it or not. Seems like there’s mixed opinions on it.

    I’m about to run sysprep and do a test deployment.

    Do you see anything on my unattend that obviously won’t work? Or something critical that I’m missing? My intent is for the computer to boot straight to login screen with 0 hands on from image.

    <?xml version="1.0" encoding="UTF-8"?>
    -<unattend xmlns="urn:schemas-microsoft-com:unattend">
    -<settings pass="specialize">
    -<component language="neutral" xmlns:xsi="" xmlns:wcm="" versionScope="nonSxS" publicKeyToken="31bf3856ad364e35" processorArchitecture="amd64" name="Microsoft-Windows-Shell-Setup">
    <Model>Precision 7710</Model>
    <TimeZone>U.S. Mountain Standard Time</TimeZone>
    -<settings pass="oobeSystem">
    -<component language="neutral" xmlns:xsi="" xmlns:wcm="" versionScope="nonSxS" publicKeyToken="31bf3856ad364e35" processorArchitecture="amd64" name="Microsoft-Windows-International-Core">
    -<component language="neutral" xmlns:xsi="" xmlns:wcm="" versionScope="nonSxS" publicKeyToken="31bf3856ad364e35" processorArchitecture="amd64" name="Microsoft-Windows-Shell-Setup">
    -<LocalAccount wcm:action="add">
    <Description> Admin Account</Description>
    <TimeZone>U.S. Mountain Standard Time</TimeZone>
    <cpi:offlineImage xmlns:cpi="urn:schemas-microsoft-com:cpi" cpi:source="wim:c:/wim/install.wim#Windows 10 Pro"/>
  • Moderator

    @flipwalker As Tom said, only a single unattend.xml file is used. If you look at my sysprep command in the link below, there is only one option to provide a path you can provide to the unattend.xml file. Save your self some grief too, place the unattend.xml file in C:\Windows\Panther for windows 10.

    And to add on to Tom’s comment about AIK, you need to get/use the current version of the OS you are deploying. There are typically updates to AIK with each new release of Win10.