Windows 7 : universal image with Postdownload script : issues



  • Hi,

    I had read some tutos and understood many things but its not working correctly …

    Informations about my stuff :

    Server :

    FOG Version : Running Version 1.3.5-RC-8 ; SVN Revision: 6066
    OS : Debian GNU/Linux 8

    Specifications : all images are on a Synology NAS storage : mounted with NAS_ip:/images

    The AIM : create universal image. After a deploy, want to FOS will able to install drivers for the good model. Her, just a test with an Optiplex 7010.

    Other informations : upload and dowload tasks work like a charm. This topic is only for a downloadpostscript problem.

    On NAS, there is :
    /images : many images of differents devices
    /images/dev/postinitscripts/fog.postint with

    Code : /dev/postinitscripts/fog.postint

    #!/bin/bash
    ## This file serves as a starting point to call your custom pre-imaging/post init loading scripts.
    ## <SCRIPTNAME> should be changed to the script you're planning to use.
    ## Syntax of post init scripts are
    #. ${postinitpath}<SCRIPTNAME>
    

    /images/postdownloadscripts with 2 files : fog.postdownload and fog.drivers :

    Code : fog.postdownload :

    #!/bin/bash
    ## blabla 
    if [ $osid == "5" -o $osid == "6" -o $osid == "7" ]; then #only handling Win7/8/8.1
        clearScreen;
        mkdir /ntfs &>/dev/null
        ntfs-3g -o force,rw $part /ntfs #mount image 
            dots "Mounting Device";
        if [ "$?" = "0" ]; then
            echo "Done";
            . ${postdownpath}fog.drivers # run fog.drivers script
            umount /ntfs; # unmount when all is done :-)
        else
            echo "Failed To Mount Device";
            sleep 30;
        fi
    fi
    

    Code : fog.drivers :

    #!/bin/sh
     
    ceol=`tput el`;
    machine=`dmidecode -s system-product-name`; # Gets machine model
    machine="${machine%"${machine##*[![:space:]]}"}" #Removes Trailing Space
    system64="/ntfs/Windows/SysWOW64/regedit.exe"; # dirty way to determine if it's 64bit or not
    if [ -f "$system64" ]; then
        setarch="x64"
    else
        setarch="x86"
    fi
    #############################################
    if [ $osid == "5" ]; then
        osn="Win7"
    elif [ $osid == "6" ]; then
        osn="Win8"
    elif [ $osid == "7" ]; then
        osn="Win8.1"
    fi
    #############################################
    dots "Preparing Drivers";
    mkdir /ntfs/Windows/DRV &>/dev/null;
    echo -n "In Progress";
     
    cabextract -d /ntfs/Windows/DRV "/images/Drivers/$osn/${machine}"/*.CAB &>/dev/null;
     
    regfile="/ntfs/Windows/System32/config/SOFTWARE"
    key="\Microsoft\Windows\CurrentVersion\DevicePath"
    devpath="%SystemRoot%\inf;%SystemRoot%\DRV";
    reged -e "$regfile" &>/dev/null <<EOFREG
    ed $key
    $devpath
    q
    y
    EOFREG
    echo -e "\b\b\b\b\b\b\b\b\b\b\b${ceol}Done"; # this just removes "In Progress and replaces it with done :-)"
    
    folder with the Dell .CAB file : /images/Drivers/Win7/OptiPlex 7010/7010-win7-A09-NWJXJ.CAB (i checked the folder name with the FOG interface, Inventory section of the host)
    

    i created a win7 image with VirutalBox with :

    • small install of win7
    • folder C:\Windows\DRV
    • not in domain

    I saved this image with FOG on the NAS.
    When i tries to deploy it on my OptiPlex 7010, they are some issues : (debug task mode)

    • ntfs-3g : No mountpoint is specified : where the value $part is defined ?
    • Préparing Drivers …… Done
    • umount : can’t umount /ntfs : invalid argument
    • Mounting Directory ……… Done
    • /usr/share/fig/lib/funcs.sh : line 895 → 905 : write error : No Space Left On Device
    • Mounting Directory ……… Done
    • Changing hostname ………………………………… < Freeze

    After a “CTRL+C” break :

    • ls /ntfs/Windows/DRV : 0 files

    If i run manually ./images/postdownloadscript/fog.drivers :-

    • fog.drivers : line 23 : dots : command not found
    • hard disk computer seem to write some datas …. « Done »
    • ls /ntfs/Windows/DRV : 7010 with
      –> win7/x64
      –> audio
      –> chipset
      –> ect

    After a reboot by ctrl+alt+suppr : i can run Windows 7 but there are 0 files into C:\Windows\DRV

    What’s wrong with my setup ?


  • Moderator



  • Hello.
    After some new researches, i found informations about sysprep.
    And I discovered new issues : the unsigned drivers.
    In my first attempt, I had many error during Sysprep causing by unsigned drivers. Same error on 820G3, Optiplex7010 & HP8000.
    Well. I found the solution : in my reference image and before the Sysprep op, i installed two importants updates : KB2685811 & KB2685813.
    After a reboot, i sysprep /generalize /oobe /shutdown the image (I took a snapshot before).
    And i retry with theses computers : no error during the sysprep :)
    And i can confirm, the SetupComplete ran : after the deploy, i can confirm :

    • the FOGService is started
    • drivers are OK (excepted ACPI for DELL but i will fix that later)
      BUT the domain jonction fail … for all computers … error 1355.

    I didn’t use any unattend file … after the deploy, I answer at the questions.
    There is a link about the unattend file and the FOG Domain jonction feature ?



  • Oh … i’m really sorry for this mistake.
    In fact, i realized some tests with Sysprep before to know the SetupComplete.cmd.
    On Win10, I created an unattend file for the registry hack but … after deploy, i alway seen the OOBE screen. At this time, i said “What the hell with this screen ?” and … went back to Windows 7 for tests. Before THIS mistake, i didn’t understand the link with Sysprep and the SetupComplete.cmd but now … i think I understand :)
    Today, i will try some tests with Sysprep.
    But, just to understand, why the domain jonction feature is broken if i have a SetupComplete.cmd in the Windows\Scripts\ folder ?
    You say “SetupComplete will not run” … Maybe it’s totally another problem … ?


  • Moderator

    @Jonathan-Cool said in Windows 7 : universal image with Postdownload script : issues:

    Hm, maybe i did a misktake.
    The FOG documentation said : “f you plan to use Sysprep before image capture and are also planning to use the FOG Client” … but, i never use the “Sysprep.exe”.

    Well I guess that explains it right there. Without sysprep your drivers will not import and setupcomplete.cmd will not run. Shame on you for not following the rules…



  • Hm, maybe i did a misktake.
    The FOG documentation said : “f you plan to use Sysprep before image capture and are also planning to use the FOG Client” … but, i never use the “Sysprep.exe”.
    On my Vbox, i just

    • create the SetupComplete.cmd with the script*lines
    • disable FOG
    • upload the image on FOG

    On client, i just donwload the image …



  • @george1421 I read the OEM / VLK things.

    After a “slmgr -dli”, i think i have a VLK license :
    In “Description”, i can see “VOLUME_KMSCLIENT channel”.
    And, the product number not start by “OEM” …

    Source : http://mywindowshub.com/determine-windows-license-type-oem-retail-volume/
    PS : we used a KMS Server to activate all Win7 in our office.


  • Moderator

    @Jonathan-Cool Your source media used to create your reference image, is that oem or vlk?

    If its OEM I can understand why it not work.

    First of all from the legal side M$ EULA for OEM media doesn’t allow for system reimaging if you alter the media at all. You can reimage using oem media as long as its from the original OEM dvd unaltered. This is a Microsoft requirement and not anything to do with fog. For imaging you must use the VLK media and VLK license.

    Since OEM media license does not allow imaging you should stop now and get the properly licensed media.

    I have heard of people using OEM media (against the MS EULA) for imaging. I think they called the setupcomplete.cmd file from the unattend.xml file using the first run section. But again that is only what I heard and never tried.



  • @Jonathan-Cool said in Windows 7 : universal image with Postdownload script : issues:

    2 side problems with SetupComplete.cmd :

    • the fog service is not turning back on
    • IF i turn the service at “start” manuelly, the domain jonction feature fail with error 1355

    I have not theses problems without SetupComplete.cmd.

    I tried to put the dism command-line in second and the sc config in first … same result.
    Strange :(

    Now, i ask my self if the SetupComplete is really executed …

    Edit : i will try this script :

    mkdir C:\TestSetupComplete
    sc config FOGService start= auto
    dism /Online /add-driver /driver:C:\Windows\DRV /Recurse /ForceUnsigned
    shutdown -t 5 -r
    

    And now, the feedback … :

    • “mkdir C:\TestSetupComplete” : no folder was created …
    • sc config FOGService start= auto : FOG is always disabled
    • dism : maybe it’s good because i have no drivers problems
    • shutdown : just after the deploy, i not sure if the computer really reboot …


  • @george1421 said in Windows 7 : universal image with Postdownload script : issues:

    @Jonathan-Cool I would also test from cmd prompt that sc config FOGService start= auto works as expected with your OS.

    @george1421 Yes, it’s works. I already tried ;)


  • Moderator

    @Jonathan-Cool I would also test from cmd prompt that sc config FOGService start= auto works as expected with your OS.



  • 2 side problems with SetupComplete.cmd :

    • the fog service is not turning back on
    • IF i turn the service at “start” manuelly, the domain jonction feature fail with error 1355

    I have not theses problems without SetupComplete.cmd.

    I tried to put the dism command-line in second and the sc config in first … same result.
    Strange :(

    Now, i ask my self if the SetupComplete is really executed …

    Edit : i will try this script :

    mkdir C:\TestSetupComplete
    sc config FOGService start= auto
    dism /Online /add-driver /driver:C:\Windows\DRV /Recurse /ForceUnsigned
    shutdown -t 5 -r

  • Moderator

    @Jonathan-Cool So your current problem is that the fog service is not turning back on in the setupcomplete.cmd?

    What happens if you change the order in the setupcomplete.cmd file. Make the sc command come first maybe dism is doing something right, but causing the sc command to fail. The sc command looks right and should work.



  • Hi,
    I used the 2nd method but, in the fog.log on the client, error 1355 …
    It’s strange because, with an other image without any SetupComand.cmd and a classic install of FOG Client into the image reference, it’s works.

    I used the Global settings to set ID of my domain. It’s not a typo …

    With the image using the SetupComplete.cmd, domain jonction feature fail …

    I think Windows correctly reads the SetupComands.cmd because the first problem seem solved (Drivers Injection). But, after the reboot, in services, i seen “FOGService : Disabled”.

    My SetupComplete.cmd :

    rem Injection des pilotes avant le premier Login Screen
    dism /Online /add-driver /driver:C:\Windows\DRV /Recurse
    
    rem Demarrage du service FOG avant le premier Login Screen
    sc config FOGService start= auto
    shutdown -t 5 -r
    

  • Moderator

    @Jonathan-Cool There is two ways to have the target computers to connect to domain.

    1. Have unattend.xml do this. You must provide the domain connection information in your unattend.xml. I do it this way because we have a complicated OU structure and we I have some scripts in the post install that decide where (physical location) the target computer is being installed and type of computer (desktop, laptop) to calculates the OU where the computer will exist. Once the target OU is calculated the unattend.xml file is updated using a sed expression. Then during OOBE, windows setup connects the computer to the domain.
    2. Have the fog client connect the computer to the domain. To do this, you must install the fog client into your reference image but disable the service. You must disable the service to keep the fog client from starting too early in OOBE in the windows setup process. Then use the setupcomplete.cmd batch file to re-enable the fog client service. This is the script you posted below. You must also have the fog client options enabled in the FOG web gui.


  • Hi,
    Thank you @george1421 :)
    After some tests, it seem to work but not at 100 per cent.
    What i did :
    On the Win7x64 Vbox image :

    • add a script SetupComplete.cmd with this line :
      dism /Online /add-driver /driver:C:\Windows\DRV /Recurse

    I reUP the image on FOG server and tried on the 820G3 : it’s seem to work ! … but … the domain jonction seem to be broken.

    I said "What is going on now ???"
    I tried the same image on the same computer (820G3) and … same result.
    I tried the image on the Opti7010 and … same resultat : the domain jonction feature didn’t work anymore.
    I said "I am going crazy ?"
    I Googled this fact … and i find some answers (on this link : https://wiki.fogproject.org/wiki/index.php?title=FOG_Client#FOG_Client_with_Sysprep)

         Disable FOGService: Windows Control Pannel -> View by Small Icons -> Administrative Tools -> Services -> Right click FOGService -> Properties -> Startup Type -> Disabled
    Re-enable FOGService post-imaging:
    
    Create the below file.
    
    C:\Windows\Setup\scripts\SetupComplete.cmd
    
    Place these lines within the file, and then save.
    
    sc config FOGService start= auto
    shutdown -t 0 -r
    

    Well, if i add theses lines on my SetupComplete.cmd, it’s will work this time (Drivers AND domain jonction) ? Or i am in the wrong way ?


  • Moderator

    @Jonathan-Cool It is possible that these two devices are hidden behind another device. I am just giving a random example.

    Its possible that the wifi and audio chips on the motherboard are connect via a usb3 controller on the motherboard. You will not be able to see or load the drivers for the wifi or audio until the driver for the usb3 controller is loaded. The driver load process is only one pass (my guess). In that once it installs all known drivers it doesn’t look a second time for new devices that show up because the device in front was loaded.

    It is hard to explain but I see it perfectly in my mind…

    So what can you do?

    This is just a guess, you can try in the setupcompleted.cmd file run DISM to force the drivers to load for all missing ones.

    something like: dism /online /add-driver /driver: "c:\windows\drv"

    But I have to warn this is only a guess. I have not had to do this my self. We only buy Dells and they work every time, no funny business.



  • Hi,
    It’s me again …
    I just need a precision about drivers : in this case, for Win7x64 and a HP820G3 (seem to be the same problem for Win10x64) : after the deploy and the unique reboot to join the domain, i can see in “Manage Device”, two “other” devices.

    IF I right-click on theses devices, update Drivers … and choose the C:\Windows\DRV location, Windows “finish” the installation.
    Why Windows can’t do this installation just after the deploy ?
    Is it a signature problem with theses devices ? (Wifi and Display Audio Driver).
    This problem break my dream of a Golden Full-automated Windows Image :(


  • Senior Developer

    @Jonathan-Cool Ideally yes. But won’t know until it’s tested.



  • You right, it’s was me … ;)
    But, the script contained a little typo, remember ;)
    And now, i understood why the domain fail … simply because i CTRL+C for debug … and after, i rebooted the computer … but, the hostname changer process didin’t run ! And i has a bad hostname …
    I just want to thanks all of you for your help.
    With this post, i understood many thinks and i improve myself day after day ;)
    I’m very happy to learned news features with FOG and new knowledge ;)
    It’s solved !

    PS : this script works with Windows 10 ?


Log in to reply
 

473
Online

38965
Users

10708
Topics

101618
Posts

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