How to use FOG to supply machine specific drivers for Windows 7 Sysprepped machines
-
This post is deleted! -
If you are lazy, like me, you can let FOG change the registry setting in your images, so you don’t have to create new ones. Then the function should look like this:
[CODE]copyDrivers()
{
machine=dmidecode -s system-product-name
;
machine=“${machine%”${machine##[![:space:]]}“}” #Remove trailing spaces
echo " “;
echo " * FOG Driver copy for $machine”;
echo " “;
mkdir /ntfs &>/dev/null
if [ “$osid” = “5” ]
then
ntfs-3g -o force,rw $win7sys /ntfs
elif [ “$osid” = “1” ]
then
ntfs-3g -o force,rw $part /ntfs
fi
ln -s “/images/drivers/${machine}/” /root/mydrivers
mkdir /ntfs/Drivers >/dev/null
echo -n " * Copying Common Drivers…”;
cp -r /images/drivers/Common/ /ntfs/Drivers
echo “Done.”;
echo -n " * Copying $machine Drivers…";
cp -r /root/mydrivers/* /ntfs/Driversregfile="/ntfs/Windows/System32/config/SOFTWARE" key1="\Microsoft\Windows\CurrentVersion\DevicePath" devicepath="%SystemRoot%\inf;C:\Drivers" reged -e "$regfile" &>/dev/null <<EOFREG
ed $key1
$devicepath
q
y
EOFREGumount /ntfs echo "Done."; echo " "; echo " * Driver copy completed."; sleep 2;
}[/CODE]
-
Oh that reg bit is interesting too. I like that.
I actually currently have all the drivers saved locally to c:\drivers on my image, and the reg pointed in the right direction. What I was really interested in was using that script, but instead of copying drivers over, copying over some scripts to silently set up the computer post-image. I currently have the scripts located on the image, but it seems a bit ridiculous to take the hours to update the VM, take a snapshot of it, copy the scripts over, seal it up, and reupload it when I could just use this fantastic bit of code to push the scripts to my FOG server, have it upload them to the newly imaged computer, and be done with it.
-
Here’s another question for you: is there a way to pull drivers/scripts/whatever off of a network drive or shared drive?
My FOG server is currently in a guest VM with the host’s hard drive mounted as /media/localshare. What I would like to do is have the script also kick off this command:
cp -r /media/localshare/scripts/* /images/scripts
to make sure the scripts being pushed are the most recent, without having to log in to the VM and run that command by hand every time I make an update to them. Will I have to re-mount the network drive inside of the FOG script, even though the drive is always mounted on the FOG server? (my first thought was to use ln -s to make a link to the network drive, but that didn’t work for me either).
-
The Drivers function is a fantastic addition to FOG but i struggle with drivers for each dell model. What do you guys do for drivers? because the driverpacks are quite outdated or bloated with unneccessary drivers, the .cab files on the dell website aren’t as up to date as the individual drivers listed and downloading each driver is tedious and time consuming and also only want to have whats required (.inf and files) to keep it as unbloated as possible. what do you recommend?
Cheers
-
I actually use the cab files on the Dell site, plus a few extra (my company often orders different network cards, and those aren’t in the cab files by default). A lot of the files may not be 100% up to date, but they sure are close.
If you absolutely must have the newest drivers, you could look into using Microsoft’s Deployment Toolkit (MDT). You can use the deployment workbench to strip drivers down to the minimum using the Import Drivers function for the “Out-of-Box” drivers. You can use it to pull drivers off of a 100% functioning computer too (but be careful: it’ll often pull in a bunch of drivers that are unnecessary, depending on what’s all been installed on the computer).
That being said, it’s a little bit tedious as well. You could always try Dell’s automatic update client, allow it to download drivers, then use MDT to convert them to a deployable form. I’ve never had much luck with their update client, though.
-
Thanks for the info, it’s not so much having the newest but the minimal without having an in-complete drivers set. will start with the .cabs and see how it goes thanks again dvlsg
-
No problem. And if you need to fill the holes, you can always use the MDT to grab the extra stuff. My only experience is with the D and E series laptops, but the only extra driver I had to add in with MDT was an Intel Centrino wireless driver, and I believe that’s only because they aren’t standard parts for Dell machines.
-
Hi all,
i’m getting “can’t stat no such file or directory” when trying to copy the drivers… example directory is /images/Drivers/WinXP/Optiplex 755 on imaging node and relevant code is:
ln -s “/images/Drivers/WinXP/${machine}/” /root/mydrivers;
cp -r /root/mydrivers/* /ntfs/WINDOWS/TestDrivers; # folder already exists on the imagei must be doing something silly because when i run the code directly on the server through ssh it works! (change destination directory obviously)… i’ve checked all paths and been conscious of case sensitive. what am i doing wrong? :-S oh and $machine is working it (correct name without trailing space etc… got that code above this section. i’m also not adding it as a function, i want to include it directly into fog code itself (bin/fog)
-
This post is deleted! -
This worked:
machine=dmidecode -s system-product-name
;
machine=“${machine%”${machine##[![:space:]]}“}”; # Remove trailing whitespace
echo -n " * Downloading $machine Drivers…";
cp -r /images/Drivers/WinXP/“Optiplex 755”/ /ntfs/WINDOWS/TestDrivers; #Hardcoded Model/$machinehowever changing:
[I]cp -r /images/Drivers/WinXP/“Optiplex 755”/* /ntfs/WINDOWS/TestDrivers; [/I]#Hardcoded Model/$machine
to
[I]cp -r /images/Drivers/WinXP/“[B]$machine[/B]”/* /ntfs/WINDOWS/TestDrivers;[/I]
or
cp -r /images/Drivers/WinXP/“[B]{$machine}[/B]”/* /ntfs/WINDOWS/TestDrivers;fails. i’m pulling my hair out now! lol
-
This worked:
machine=“Optiplex 755”
[I]cp -r /images/Drivers/WinXP/“[B]$machine[/B]”/* /ntfs/WINDOWS/TestDrivers;[/I][I]so somethings going wrong with the following two lines but i can’t see what because if you print the variable within an echo it displays as it should (no space before or after but one space in between i.e Optiplex 755)[/I]
[B]machine=dmidecode -s system-product-name
;[/B]
[B]machine=“${machine%”${machine##*[![:space:]]}“}”; # Remove trailing whitespace[/B] -
i can’t get the script to work even if i follow the instructions step by on the first page and have the same directories etc… i’m close to giving up
-
Hmm… the difference that stands out to me is the fact that you currently have the folder in place on the image, but the other scripts are creating it. Maybe a permissions issue? But then the fact that you can do it by “hand”… I guess i’m not sure.
If using just “$machine” is working for you, is there a reason you cant just use that?
-
If it makes you feel better, I uploaded a new image over the weekend and now I’m having errors too, haha.
Something about not having enough white space for the CP. Reuploading right now to see the error again…
-
Ah. Yeah, it doesn’t actually perform the clean up, and as a result doesn’t perform the ntfs extend.
The only real difference I can see here is that one image is single partition resizable, and one image is multi-disk single partition non-resizable.
I’m guessing that it’s not running an ntfs extend by design for the multi-disk single partition image. Maybe. Is anyone else who is using this function using an image type other than single partition?
-
using “$machine” only works if i manually hardcode the variable (machine =“Optiplex 755”). that’s strange about the new image!
-
Ahhh okay.
Tell you what, since I’m going to go dig around in the FOG init anyways to see about that ntfs resize, maybe I’ll add a dummy function that involves using $machine and see what I can find. I’m hardly a linux expert though (never even touched it before FOG), so hopefully someone else can give you some advice too.
-
cheers dvlsg! you’re a star
-
Just to rule it out, i got the script to create a new folder and also changed the permission on the drivers folder on the server/node but still no go