SOLVED Automatic hardware detection & driver installs in FOG

  • Senior Developer

    @giejo63 give me a few minutes and I’ll host the files for you.


  • @Tom-Elliott

    @Tom-Elliott said:

    That could be a possibility.

    Are you able to access:
    https://rightclick.fsdnet.ca/display/

    no…
    neither from work or from smartphone.
    Thanks for your help !

  • Senior Developer

    That could be a possibility.

    Are you able to access:
    https://rightclick.fsdnet.ca/display/


  • @Tom-Elliott said:

    It works for me. My guess, somebody is filtering the link at your site.

    no i’m not filtered…
    I’ve tried from work, from home, from my phone
    or maybe the site is unavailable for France …

  • Senior Developer

    It works for me. My guess, somebody is filtering the link at your site.


  • @Tom-Elliott said:

    @giejo63
    Link redirect in WIKI http://tinyurl.com/qe58fo2

    driverinstall.sh -> http://tinyurl.com/qxuxsnj
    machinedrivers.sh -> http://tinyurl.com/oqtymea

    Sorry but the links doesnt work ?
    i can’t access to them

  • Senior Developer


  • Hello
    Thanks for this great work
    Where can we get the 2 scripts ? (machinedrivers.sh and driverinstall.sh) the link in: http://www.fogproject.org/wiki/index.php/Auto_driver_Install is broken

    Can you repost it ?
    Thanks in advance !


  • Great, thanks for the quick reply I will try this!

  • Developer

    #!/bin/sh

    ceol=tput el;
    machine=dmidecode -s system-product-name;
    machine="${machine%"${machine##[![:space:]]}"}" #Removes Trailing Space
    if [ $osid == “5” ]; then
    osn=“Win7”
    elif [ $osid == “6” ]; then
    osn=“Win8”
    elif [ $osid == “7” ]; then
    osn=“Win8.1”
    fi
    dots “Downloading Drivers”;
    mkdir /ntfs/Windows/DRV &>/dev/null;
    echo -n “In Progress”;
    cabextract -d /ntfs/Windows/DRV “/fog/Drivers/$osn/${machine}”/
    .CAB &>/dev/null;
    echo -e “\b\b\b\b\b\b\b\b\b\b\b${ceol}Done”;
    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

    code above will do what you want - change the paths to match your environment or wherever you want to store the cabs but using code example above. you’d put a copy of the cab into /fog/Drivers/Win7/OptiPlex 7010 for example then it will extract the cab and drivers will be installed during sysprep… shouldn’t need any postscripts

  • Developer

    init contains cabextract so you don’t even need to extract the cabs if you want to go down the model route


  • Hey Andrew, I really like this work but I like to do it more simple.
    As we are only using DELL machines at our school I can get cab files containing all drivers per model. I extract these files under /images/drivers/<modelname> and copy the appropriate directory to the client. So I’ve changed your driverinstall.sh a bit to copy these extracted drivers and the folder common to c:\Drivers. I’ ve also changed the registry key in the client image to resemble this:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\DevicePath: REG_EXPAND_SZ:%SystemRoot%\Inf;c:\Drivers

    So windows checks c:\drivers for drivers before going to the internet when installing hardware after the client has been imaged.

    This should make it all a bit easier and you don’t need the machinedrivers.sh BUT and here is the question: my script does not seem to run.
    I’m running fog on ubuntu and placed my scripts in /images/postdownloadscripts on the server. And I’ve made them executable. I don’t know how these scripts are called by FOG, I guess it checks for fog.postdownload in /images/postdownloadscripts and executes that file? In my case it only contains:


    #!/bin/sh

    This file serves as a starting point to call your custom postimaging scripts.

    <SCRIPTNAME> should be changed to the script you’re planning to use.

    Syntax of post download scripts are

    #. ${postdownpath}<SCRIPTNAME>
    ${postdownpath}/driverinstall.sh


    So I’d like to do some debugging, can I append the output to a file changing this script like this:
    ${postdownpath}/driverinstall.sh >> /images/drivers/postdownloadscripts.log because I tried this but with no result.

    Are there perhaps problems with these scripts privileges?
    Maybe you can give me some tips on how to better troubleshoot?

    anyway I like what you’ve done and I will keep searching myself for a solution 🙂

    Txs!


  • It depends on the driver. Usually, you just need the folder from the driver that has the .inf for the device. (Copy the entire folder contents, not just the .inf file) You can test that driver by going to a machine that doesn’t have the driver installed, and doing an “update driver” in task manager, and pointing to the folder. If it installs, you should be good.

    For some devices, the driver is an .exe that you can launch with a silent install command. In that case, the driver folder should have the exe, any associated files, and a drvinstall.bat file as per [url]http://www.fogproject.org/wiki/index.php/Auto_driver_Install#Adding_Silent_Install_drivers[/url]


  • Andrew - this looks like great work. I have a question - when you say

    [CODE]
    You’ll see something like PCI\VEN_XXXX&Dev_YYYY&SUBSYS_ZZZZ… or USB\VID_XXXX&PID_YYYY or ACPI\XXXXXXXXX

    You take the driver for that device, and place it in a folder of /images/drivers/XXXX/YYYY.
    

    [/CODE]

    What files do I place in the folder? The files in the “driver file details” window? If so, is there a better way to get that file list?

    Thanks -

    Library Mark


  • Okay, the script is now posted, along with documentation in: [url]http://www.fogproject.org/wiki/index.php/Auto_driver_Install[/url]

    Please keep in mind that I only updated from FOG .33 to 1.2 3 days ago, and that this script is a complete re-write from what I used to use. I’ve tested it locally on a couple of different systems, and it seems to be running cleanly, but test this script in your environment before going crazy with it, and please post comments on any issues you have.

    A similar script in .33 is how Frontier School Division keeps thousands of mostly Dell computers in 40 separate locations imaged with minimal management effort (6 network administrators). We have two Image files and a driver repository that we maintain centrally. Each of the remote FOG servers sync from the central driver store with rsync.

    Any time we encounter a computer that has a missing driver post imaging, we simply add that driver to the central store, and re-image the computer. When we order machines in mass from Dell, we supply them with a list of computer names, and they send back a csv with the computer name to MAC address list, and they add an asset sticker to the systems. If it’s a new model to us, I have Dell send one machine to my office where I image, and add any drivers required to the central store. I then import the CSV into FOG, assign the image, and create the imaging task.

    At the school, we arrange for the systems to be unboxed, plugged in and turned on. The systems boot, image, join the domain and are ready to use. FOG is an amazing project that saves us a ton of time and effort.

  • Moderator

    This sounds great 🙂

    I’ll be keeping an eye for when you post your script.

    🙂


  • Looks like I can parse dmesg to get the pnp device ID of SMO8810 for the freefall sensor. Adding PNP drivers to the script.

384
Online

8.2k
Users

15.1k
Topics

141.8k
Posts