Jump to content











Photo
- - - - -

Fast, Full-Featured, Unattended PXE Install

pxe tftpd opensuse unattended winpe

  • Please log in to reply
9 replies to this topic

#1 Falkoner

Falkoner

    Newbie

  • Members
  • 16 posts
  •  
    United States

Posted 28 October 2011 - 08:52 PM

To begin, I'd like to let anyone trying to answer know that although I spent a couple hours searching for answers, I'm certain I missed topics, so if you know of a topic that seems to answer my question, feel free to just link me to it, although a nice summary would be appreciated as well :)

Currently I have a working PXE server, its set up is as follows:
  • Built on OpenSUSE 11.4
  • Using Advanced TFTP (atftpd) for PXE with pxelinux
  • Using a Samba Share for post-boot files
  • Entire shop is gigabit ethernet
  • DHCP Server for the shop
  • Performs NAT for all computers
The entire setup process for Vista/7 (my main focus) goes fairly smoothly, first the client computer boots into PXE and selects the installation (Win7/Vista, x86/x64) from the menus. Depending on your selection, a different WinPE 3.0 boots, they're simply variants of 64 and 32 bit versions with different startnet.cmd files for the commands. Once WinPE has loaded over PXE(takes a while), it proceeds to mount the Samba share from the server and runs the setup with a switch linking to the correct unattend.xml file(also on the share).
The setup is entirely unattended except for Windows version(Ultimate, Home Premium, etc.), product key, and partitioning, since these are not corporate computers, but random customers. Once the install is finished, the computer reboots, loads into Windows, and from there technicians use DriverPack Solution to install drivers, then they install basic software off the network share using a batch file which runs through various AutoIt scripts and batch files for silent installs.

Yes, it works, and I'm quite happy with it so far, but it doesn't quite meet my high expectations, and I would like to have the optimum solution. So, here's what I need help with fixing, and ideas that I've had which I just need some clarification on:
  • Smaller PE
    As of right now, my WinPE 3.0 is just below 200 MB in size, and sending that much data over TFTP is horrendously slow, even on gigabit Ethernet, I'm totally fine with moving away from WinPE, as long as the switch can fulfill my needs. I looked into MicroPE but all the links to download it are down, so if anyone has other suggestions I'm open. The requirements of the PE are:
    - Must boot from syslinux/pxelinux and run from RAM.
    - Must have network(not necessarily WLAN) and mass storage drivers for virtually every machine, display only needs to be basic, this is going to be used on random customer machines, so I can't make machine-specific driverpacks. Unfortunately this does make the smaller drivers difficult.
    - Be capable of installing Windows Vista/7 32 and 64 bit
    - Doesn't need a GUI, just a commandline from which I can autorun scripts and mount network drives
    - All of this must be able to be done unattended.

    If you think you've got the solution for me, I'd be glad to see it, even if it takes lots of testing, I'm willing and able, or if there's some specific settings for WinBuilder, point them out to me.
  • Faster Winstall
    I've been looking into programs like WinNTSetup and NT 6.x Fast Installer to speed up my installations, but I'm not certain they can do everything I need, such as:
    - Prompting the technician for product key, Windows package(Ultimate, Home Premium, Business, etc), and partitioning setup before beginning
    - Automating the install from thereon out, preferably with the use of an unattend.xml file, including running scripts post-install
    - Being reasonably user-friendly, at least on the prompts, my technicians aren't all too bright :whistling:
    More than anything I just need information on how capable those programs are at automated while allowing me to set the important information for each install
  • Post-Install Drivers
    While popping in DriverPack Solution and running it for most drivers works well enough, I'd prefer a faster automated solution that can be automatically run once the install is completed. I think the DPsFinisher might be what I'm looking for, but I can't find a page that describes how to use it well. Essentially, I need a solution that can:
    - Add all network drivers to the Windows Installation pre-install (once again, this is for any machine, not a set group)
    - OR copy the drivers and an installer for them to the HDD from PE(while we still have network support) after the installation has completed
    - Once the network drivers are installed, it needs to pull all necessary drivers for the specific computer from the network share and install them automatically
    I'll most likely be using the drivers from DriverPacks.net, since they've managed to cover pretty much anything I've come across, at least network-wise.
  • Speed Up Windows Updates
    For now my plan is to put Squid on the server, since all network traffic is routed through it, in order to cache the Windows Updates and speed them up that way, but I'd like to find a solution like AutoUpdater with APUP that's easy to update and local. The only issue I've had with APUP is that it always has to verify the update integrity, and that takes a ridiculous amount of time, if anyone knows a way of disabling that "feature" I'd greatly appreciate it.
  • Software Installation
    I've mostly got the software installs working, but I just have a couple quick questions I think you guys should be able to answer fairly easily, if not I just have to do some digging to find them myself:
    - Is there a method that works for both Vista and 7 that allows you to add a post-install script to the installation?
    - In batch files, how would I go about checking to see if the MSI installer is already in use, to ensure I don't accidentally start two MSI-based installers at once? My script already does the scripts sequentially, but I had issues because occasionally Windows Updates would be running at the same time, and half the programs wouldn't install.
  • Windows XP
    Anyone know any quick easy tutorial for PXE booting an XP installation? I don't even care if it's automated, I just want the option there.
  • Should I Try Imaging?
    I've always felt that imaging installations is one of the best methods for automating installations, but XP has always had issues with it when trying to apply it to a wide variety of machines, have Vista and 7 solved this problem?
I know it's a lot, and I really appreciate all of you who didn't TL;DR this post, if I complete this project, I'd love to put together a nice tutorial which engulfs every piece necessary to recreate a system just like the one above, so your help is greatly appreciated and I hope to somewhat repay it.

#2 Wonko the Sane

Wonko the Sane

    The Finder

  • Advanced user
  • 13745 posts
  • Location:The Outside of the Asylum (gate is closed)
  •  
    Italy

Posted 28 October 2011 - 09:54 PM

To begin, I'd like to let anyone trying to answer know that although I spent a couple hours searching for answers, I'm certain I missed topics, so if you know of a topic that seems to answer my question, feel free to just link me to it, although a nice summary would be appreciated as well :)

Two hours/7 main points, some of which forking in several items is probably less than 15 minutes/problem, I it is a MIRACLE if you have managed to see the point of the iceberg.... :w00t:

5. Software Installation
I've mostly got the software installs working, but I just have a couple quick questions I think you guys should be able to answer fairly easily, if not I just have to do some digging to find them myself:
- Is there a method that works for both Vista and 7 that allows you to add a post-install script to the installation?
- In batch files, how would I go about checking to see if the MSI installer is already in use, to ensure I don't accidentally start two MSI-based installers at once? My script already does the scripts sequentially, but I had issues because occasionally Windows Updates would be running at the same time, and half the programs wouldn't install.

You mean in the PE or in the actual "first boot" of the install? :unsure:
In the batch, first thing disable Windows Update, run sequentially your installers, the re-enable Windows Update as last action of your batch. ;)
http://www.tech-foru...updates-113747/

6. Windows XP
Anyone know any quick easy tutorial for PXE booting an XP installation? I don't even care if it's automated, I just want the option there.

Do you mean a RIS install? :unsure:
http://diddy.boot-la...t/pxe/index.htm

7. Should I Try Imaging?
I've always felt that imaging installations is one of the best methods for automating installations, but XP has always had issues with it when trying to apply it to a wide variety of machines, have Vista and 7 solved this problem?

Yes, Vista :ph34r: and 7 are a bit more tolerant.
Maybe you can find here something of interest:
http://reboot.pro/9830/

I know it's a lot, and I really appreciate all of you who didn't TL;DR this post, if I complete this project, I'd love to put together a nice tutorial which engulfs every piece necessary to recreate a system just like the one above, so your help is greatly appreciated and I hope to somewhat repay it.

TL;DR :w00t: :dubbio:

More generally if the issue is the slowness of PXE boting, you could explore the possibilities of other methods/protocols.
Hint ;):
Search for posts by members "Sha0" and "erwan.l" with keywords "iscsi", "gPXE", "WinAOE".

:cheers:
Wonko

#3 steve6375

steve6375

    Platinum Member

  • Developer
  • 6629 posts
  • Location:UK
  • Interests:computers, programming (masm,vb6,C,vbs), photography,TV,films,guitars
  •  
    United Kingdom

Posted 28 October 2011 - 10:23 PM

re. Post-install of drivers. You need to add an entry to the unattend.xml to set a path to tell windows where to find the drivers.
e.g. set the path to c:drv - then place all network drivers in separate folders under c:drv. Windows will search the whole folder and install the correct driver.
Than add a run entry in another section of the unattend.xml to install the rest of the drivers which can be pulled from your share.
http://technet.micro...28WS.10%29.aspx

#4 Falkoner

Falkoner

    Newbie

  • Members
  • 16 posts
  •  
    United States

Posted 31 October 2011 - 03:41 PM

Two hours/7 main points, some of which forking in several items is probably less than 15 minutes/problem, I it is a MIRACLE if you have managed to see the point of the iceberg.... :w00t:


Haha, I suppose I should of said a few hours on each topic :P I wouldn't have gotten this far without it :)

You mean in the PE or in the actual "first boot" of the install? :unsure:
In the batch, first thing disable Windows Update, run sequentially your installers, the re-enable Windows Update as last action of your batch. ;)
http://www.tech-foru...updates-113747/


To be honest, both, I may end up needing to copy files after the drive has been formatted and partitioned while I still have networking inside the PE, and I also need to be able to run a script to start driver installations(maybe) and software installations(certainly). Thanks for the link too, already applied it to my software installs :D

Do you mean a RIS install? :unsure:
http://diddy.boot-la...t/pxe/index.htm


Yeah, I suppose I just need to look a bit more into it myself before asking much about it.

Yes, Vista :ph34r: and 7 are a bit more tolerant.
Maybe you can find here something of interest:
http://reboot.pro/9830/


Oh yes! Thank you! I remember being linked to this from WinBuilder a few months back, but I couldn't find it again when I looked later, thanks!

TL;DR :w00t: :dubbio:

More generally if the issue is the slowness of PXE boting, you could explore the possibilities of other methods/protocols.
Hint ;):
Search for posts by members "Sha0" and "erwan.l" with keywords "iscsi", "gPXE", "WinAOE".

:cheers:
Wonko

I'll look into it, thanks for all your help!

re. Post-install of drivers. You need to add an entry to the unattend.xml to set a path to tell windows where to find the drivers.
e.g. set the path to c:drv - then place all network drivers in separate folders under c:drv. Windows will search the whole folder and install the correct driver.
Than add a run entry in another section of the unattend.xml to install the rest of the drivers which can be pulled from your share.
http://technet.micro...28WS.10%29.aspx


And I would assume the drivers are installed from the network once the setup has finished and I'm still in WinPE, correcty?

Great answers so far, if I can get help on shrinking my WinPE down, I think I'll be all set, I looked into WindowsNTSetup and I believe it can do everything I need for the setup, really appreciate it so far!

Also, in relation to drivers, it looks like WindowsNTSetup has an option to add drivers into the DriverStore, are there any negatives to just adding all my NIC drivers using that, rather than installing them using the method steve6375 suggested?

Edited by Falkoner, 31 October 2011 - 03:44 PM.


#5 Wonko the Sane

Wonko the Sane

    The Finder

  • Advanced user
  • 13745 posts
  • Location:The Outside of the Asylum (gate is closed)
  •  
    Italy

Posted 31 October 2011 - 07:01 PM

Just for the record, and to help mantaining the interconnectedness of all things, the corresponding thread on MSFN is this one:
http://www.msfn.org/...ed-pxe-install/

:cheers:
Wonko

#6 RoyM

RoyM

    Frequent Member

  • .script developer
  • 415 posts
  • Interests:"Booting and Owning".
  •  
    United States

Posted 01 November 2011 - 02:50 AM

***************************************************************************************
Falkoner Said
I may end up needing to copy files after the drive has been formatted and partitioned
while I still have networking inside the PE
OR copy the drivers and an installer for them to the HDD from PE
(while we still have network support) after the installation has completed
***************************************************************************************

Heres some snippets to help you get started
Many other methods could also be employed with these examples. (i.e.) a .cmd file with a choice
you could then use a choice to copy Your_Shareshare1Driversx86 to X:Drivers or %Temp% etc.

[Interface]
pFileBox1=Your_Shareshare1Driversx86,1,13,9,441,309,20,dir

These will add the drivers to your PE and install them during unattend

If,%pAddDrivers%,Equal,True,Begin
If,NotExistDir,%TargetDir%Drivers,Dirmake,%TargetDir%Drivers
DirCopy,%pFileBox1%*,%TargetDir%Drivers,SHOW
RegHiveLoad,WB-Software,%RegSoftware%
RegWrite,HKLM,0x1,"WB-SoftwareMicrosoftWindows NTCurrentVersionUnattendSettingsPnPUnattendDriverPaths1",Path,%CDDrive%Drivers
RegHiveUnLoad,WB-Software
End

More Snippets For Unattend File like steve6375 mentioned:

If,%pAddDrivers%,Equal,True,Begin
TXTAddLine,%UaFile%," <component name="Microsoft-Windows-PnpCustomizationsWinPE" processorArchitecture="%UaArch%" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.micro...nfig/2002/State" xmlns:xsi="http://www.w3.org/20...tance">",Append
TXTAddLine,%UaFile%," <DriverPaths>",Append
//TXTAddLine,%UaFile%," <!-- First PathAndCredentials list item -->",Append
// Valid Passes for KEY auditSystem, offlineServicing
// you can specify three different device-driver paths by using the Key values of Path1, Path2, and Path3.
TXTAddLine,%UaFile%," <PathAndCredentials wcm:action="add" wcm:keyValue="1">",Append
TXTAddLine,%UaFile%," <Path>%CDDrive%Drivers</Path>",Append
// <Path> This string type does not support empty elements. Do not create an empty value for this setting.
TXTAddLine,%UaFile%," <Credentials>",Append
// Credentials is an optional setting used to access the Universal Naming Convention (UNC) path specified by the Path
// Domain specifies the domain name of the account used for authentication. If the account is not a domain account,
// then the computer name should be used instead of the domain name. For example, if a computer named SYSTEM1 is connected to the FABRIKAM domain,
// then you can specify credentials in one of the following ways:
// FABRIKAMUser_Name and the User_Name account password. In this case, the value for the Domain setting is FABRIKAM.
// SYSTEM1User_Name and the User_Name password on the SYSTEM1 machine. You can use any account on the system.
// In this case, the value for the Domain setting is SYSTEM1.
// TXTAddLine,%UaFile%," <Domain>%pNetworkLocation%</Domain>",Append
TXTAddLine,%UaFile%," <Username>%pHostUser%</Username>",Append
TXTAddLine,%UaFile%," <Password>%pHostPassword%</Password>",Append
TXTAddLine,%UaFile%," </Credentials>",Append
TXTAddLine,%UaFile%," </PathAndCredentials>",Append
TXTAddLine,%UaFile%," </DriverPaths>",Append
TXTAddLine,%UaFile%," </component>",Append
End

***************************************************************************************
Falkoner Said
to ensure I don't accidentally start two MSI-based installers at once?
My script already does the scripts sequentially, but I had issues because occasionally
Windows Updates would be running at the same time, and half the programs wouldn't install.
***************************************************************************************

Is RunSynchronous what you are refering to for these installers, or did you use another method
The problem with RunSynchronous is you are limited to 2 commands.
But you can easily follow the examples below and run a .cmd
from RunSynchronous, then use Start /wait in your .cmd's

Have you tried RegQuerying this key before commencing another install/update;
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInstallerInProgress

TXTAddLine,%UaFile%," <RunSynchronous>",Append
TXTAddLine,%UaFile%," <!-- First synchronous command to execute -->",Append
TXTAddLine,%UaFile%," <RunSynchronousCommand>",Append
TXTAddLine,%UaFile%," <Order>1</Order>",Append
TXTAddLine,%UaFile%," <Path>%cmd1%</Path>",Append
TXTAddLine,%UaFile%," <Description>cmd1</Description>",Append
TXTAddLine,%UaFile%," <Credentials>",Append
// <Domain> This string type does not support empty elements. Do not create an empty value for this setting.
//TXTAddLine,%UaFile%," <Domain>%pNetworkLocation%</Domain>",Append
TXTAddLine,%UaFile%," <UserName>%pUser1%</UserName>",Append
TXTAddLine,%UaFile%," <Password>%pPassword1%</Password>",Append
TXTAddLine,%UaFile%," </Credentials>",Append
TXTAddLine,%UaFile%," </RunSynchronousCommand>",Append


As for your Gigabit Ethernet, Which exact Lan Hardware are you using in your Linux. You know how picky it can be.
A tutorial for your setup would be ideal, any help or support I can offer == just ask or PM me.
RoyM

#7 Rui Paz

Rui Paz

    Frequent Member

  • Advanced user
  • 201 posts
  •  
    Portugal

Posted 01 November 2011 - 04:26 PM

  • Speed Up Windows Updates
    For now my plan is to put Squid on the server, since all network traffic is routed through it, in order to cache the Windows Updates and speed them up that way, but I'd like to find a solution like AutoUpdater with APUP that's easy to update and local. The only issue I've had with APUP is that it always has to verify the update integrity, and that takes a ridiculous amount of time, if anyone knows a way of disabling that "feature" I'd greatly appreciate it.


Hi,

If you have a Windows machine around you can use it as your local server for Windows Updates installing WSUS.
http://www.microsoft...lang=en&id=5216

___
Rui Paz

#8 steve6375

steve6375

    Platinum Member

  • Developer
  • 6629 posts
  • Location:UK
  • Interests:computers, programming (masm,vb6,C,vbs), photography,TV,films,guitars
  •  
    United Kingdom

Posted 01 November 2011 - 07:16 PM

Another thing you might like to consider is to script the WinPE v3 environment so that it first searches all available drives connected to the system for a network driver. You can do this by finding the PCI ID of all the ethernet network devices in your target system once it has booted to WinPE and then searching all the INF files for the correct network driver and then load it using DRVLOAD.
This means that you have to have all network drivers for all systems on an external USB drive that is connected to the system after it has PXE booted - however it is quite quick as only one network driver is loaded and not all of them. As you have to be physically at the system in order to start a PXE boot, I don't see this as a hardship (as long as it has a USB port!). The advantage is that you don't have to keep modifying your PXE boot,wim file to inject new network drivers and keep making it bigger and bigger as the months go by - and thus slower and slower. If you get a new system that needs new net drivers, you simply add them to a folder on your USB drive.
See http://sites.google....scripts/drvload for how I did it.
You could of course boot to WinPE off of the same USB drive, which would be faster than PXE... and there is nothing to say you cannot have some net drivers in the boot.wim file but just have the option of looking for extra net drivers on an external device.

#9 Falkoner

Falkoner

    Newbie

  • Members
  • 16 posts
  •  
    United States

Posted 02 November 2011 - 04:38 PM

***************************************************************************************
Falkoner Said
I may end up needing to copy files after the drive has been formatted and partitioned
while I still have networking inside the PE
OR copy the drivers and an installer for them to the HDD from PE
(while we still have network support) after the installation has completed
***************************************************************************************

Heres some snippets to help you get started
Many other methods could also be employed with these examples. (i.e.) a .cmd file with a choice
you could then use a choice to copy Your_Shareshare1Driversx86 to X:Drivers or %Temp% etc.

[Interface]
pFileBox1=Your_Shareshare1Driversx86,1,13,9,441,309,20,dir

These will add the drivers to your PE and install them during unattend

If,%pAddDrivers%,Equal,True,Begin
If,NotExistDir,%TargetDir%Drivers,Dirmake,%TargetDir%Drivers
DirCopy,%pFileBox1%*,%TargetDir%Drivers,SHOW
RegHiveLoad,WB-Software,%RegSoftware%
RegWrite,HKLM,0x1,"WB-SoftwareMicrosoftWindows NTCurrentVersionUnattendSettingsPnPUnattendDriverPaths1",Path,%CDDrive%Drivers
RegHiveUnLoad,WB-Software
End

More Snippets For Unattend File like steve6375 mentioned:

If,%pAddDrivers%,Equal,True,Begin
TXTAddLine,%UaFile%," <component name="Microsoft-Windows-PnpCustomizationsWinPE" processorArchitecture="%UaArch%" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.micro...nfig/2002/State" xmlns:xsi="http://www.w3.org/20...tance">",Append
TXTAddLine,%UaFile%," <DriverPaths>",Append
//TXTAddLine,%UaFile%," <!-- First PathAndCredentials list item -->",Append
// Valid Passes for KEY auditSystem, offlineServicing
// you can specify three different device-driver paths by using the Key values of Path1, Path2, and Path3.
TXTAddLine,%UaFile%," <PathAndCredentials wcm:action="add" wcm:keyValue="1">",Append
TXTAddLine,%UaFile%," <Path>%CDDrive%Drivers</Path>",Append
// <Path> This string type does not support empty elements. Do not create an empty value for this setting.
TXTAddLine,%UaFile%," <Credentials>",Append
// Credentials is an optional setting used to access the Universal Naming Convention (UNC) path specified by the Path
// Domain specifies the domain name of the account used for authentication. If the account is not a domain account,
// then the computer name should be used instead of the domain name. For example, if a computer named SYSTEM1 is connected to the FABRIKAM domain,
// then you can specify credentials in one of the following ways:
// FABRIKAMUser_Name and the User_Name account password. In this case, the value for the Domain setting is FABRIKAM.
// SYSTEM1User_Name and the User_Name password on the SYSTEM1 machine. You can use any account on the system.
// In this case, the value for the Domain setting is SYSTEM1.
// TXTAddLine,%UaFile%," <Domain>%pNetworkLocation%</Domain>",Append
TXTAddLine,%UaFile%," <Username>%pHostUser%</Username>",Append
TXTAddLine,%UaFile%," <Password>%pHostPassword%</Password>",Append
TXTAddLine,%UaFile%," </Credentials>",Append
TXTAddLine,%UaFile%," </PathAndCredentials>",Append
TXTAddLine,%UaFile%," </DriverPaths>",Append
TXTAddLine,%UaFile%," </component>",Append
End

***************************************************************************************
Falkoner Said
to ensure I don't accidentally start two MSI-based installers at once?
My script already does the scripts sequentially, but I had issues because occasionally
Windows Updates would be running at the same time, and half the programs wouldn't install.
***************************************************************************************

Is RunSynchronous what you are refering to for these installers, or did you use another method
The problem with RunSynchronous is you are limited to 2 commands.
But you can easily follow the examples below and run a .cmd
from RunSynchronous, then use Start /wait in your .cmd's

Have you tried RegQuerying this key before commencing another install/update;
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInstallerInProgress

TXTAddLine,%UaFile%," <RunSynchronous>",Append
TXTAddLine,%UaFile%," <!-- First synchronous command to execute -->",Append
TXTAddLine,%UaFile%," <RunSynchronousCommand>",Append
TXTAddLine,%UaFile%," <Order>1</Order>",Append
TXTAddLine,%UaFile%," <Path>%cmd1%</Path>",Append
TXTAddLine,%UaFile%," <Description>cmd1</Description>",Append
TXTAddLine,%UaFile%," <Credentials>",Append
// <Domain> This string type does not support empty elements. Do not create an empty value for this setting.
//TXTAddLine,%UaFile%," <Domain>%pNetworkLocation%</Domain>",Append
TXTAddLine,%UaFile%," <UserName>%pUser1%</UserName>",Append
TXTAddLine,%UaFile%," <Password>%pPassword1%</Password>",Append
TXTAddLine,%UaFile%," </Credentials>",Append
TXTAddLine,%UaFile%," </RunSynchronousCommand>",Append


As for your Gigabit Ethernet, Which exact Lan Hardware are you using in your Linux. You know how picky it can be.
A tutorial for your setup would be ideal, any help or support I can offer == just ask or PM me.
RoyM


Would it be possible to have the unattend load one set of drivers first, specifically the NIC drivers, before checking another folder, now a network share, for even more drivers?

Also, the computer has two cards, one for the Internet, the other for the internal network, they're an Intel 82541GI Gigabit and Intel 82540EM Gigabit.

Hi,

If you have a Windows machine around you can use it as your local server for Windows Updates installing WSUS.
http://www.microsoft...lang=en&id=5216

___
Rui Paz


This same suggestion was made on msfn, while I certainly like the idea, and was considering adding a virtual machine specifically for it, and it seems the most plausible, because these are customer machines, not corporate, I would need to edit registry settings to make clients connect to the server, and then change them later so they would connect to the online server once they were out of the shop. Also, apparently MS has issues with it being used for non-corporate reasons(not sure why), so I might be stuck with AutoPatcher.

Another thing you might like to consider is to script the WinPE v3 environment so that it first searches all available drives connected to the system for a network driver. You can do this by finding the PCI ID of all the ethernet network devices in your target system once it has booted to WinPE and then searching all the INF files for the correct network driver and then load it using DRVLOAD.
This means that you have to have all network drivers for all systems on an external USB drive that is connected to the system after it has PXE booted - however it is quite quick as only one network driver is loaded and not all of them. As you have to be physically at the system in order to start a PXE boot, I don't see this as a hardship (as long as it has a USB port!). The advantage is that you don't have to keep modifying your PXE boot,wim file to inject new network drivers and keep making it bigger and bigger as the months go by - and thus slower and slower. If you get a new system that needs new net drivers, you simply add them to a folder on your USB drive.
See http://sites.google....scripts/drvload for how I did it.
You could of course boot to WinPE off of the same USB drive, which would be faster than PXE... and there is nothing to say you cannot have some net drivers in the boot.wim file but just have the option of looking for extra net drivers on an external device.


Well, no matter what I wouldn't be adding them to the WIM, if I use the method built into WinNTSetup, they're simply added to the DriverStore, but I'd prefer to avoid that, since it would add to the install size, but then I'd simply update the driverpack to be added to the DriverStore on the network share.

However, I believe your method will work well with the idea I had a while back, I love the idea of scanning for a single driver, rather than loading all of them, so my plan is to copy the drivers from the network share onto the C: partition while still inside the PE, then install them(possibly using your script) from that folder after first login. Once I have network access, I can then utilize your script again with a mapped drive to install all the other necessary drivers off a network share. Main reason for using PXE is to avoid USB drives and CDs altogether, so this works great for me.

#10 RoyM

RoyM

    Frequent Member

  • .script developer
  • 415 posts
  • Interests:"Booting and Owning".
  •  
    United States

Posted 03 November 2011 - 12:43 AM

Falkoner Said

Would it be possible to have the unattend load one set of drivers first,
specifically the NIC drivers, before checking another folder, now a network share, for even more drivers?
*********************************************************************************************************
See posting for:
// you can specify three different device-driver paths by using the Key values of Path1, Path2, and Path3.
TXTAddLine,%UaFile%," <PathAndCredentials wcm:action="add" wcm:keyValue="1">",Append
TXTAddLine,%UaFile%," <Path>%CDDrive%Drivers</Path>",Append

You could use Path1 specifically for NIC
<PathAndCredentials wcm:action="add" wcm:keyValue="1">
<Path>SambaShareDriversNICx86</Path>

Path2 for other essential drivers
<PathAndCredentials wcm:action="add" wcm:keyValue="2">
<Path>SambaShareOtherDriversx86</Path>

Path3 for all drivers/DriverPacks.net
or any setup you would like to implement.

You could even do a custom search with a combination of steve6375's idea of using the PCI id's.
Or Something like Search for NIC PCI id's in Path1 and then copy them over to the PE to X:Drivers
or the partition of your choice, or even a common network shared folder,
so only the drivers for that specific machine get copied and then installed with your prefered method.
I currently have no examples for you like that, but it could easily be acheived from within a batch.

Something Like !
Boot to PE
scan hardware for PCI ID's and > PCI_ID.txt file
parse the PCI_ID.txt file for installed NIC cards and then search Path1 for correct drivers
copy drivers to location of your choice (i.e. C:Drivers ) or even immediately install
You have many options at your disposal with some clever coding.

Some time back, I had an issue with PeNetwork.exe not working correctly.
It turned out to be a simple path fix, (found later on), which was introduced from another script.
Being frustrated with the situation I wrote my own WPenetwork.script

In essence it used Winbuilder to write a .cmd and AutoUnattend.xml to initiate my Network, Video, and Drivers for the PE
Once the bug was found I abandoned the project. The only part unfinished was adding full driver support/integration.
However, it did work quite well for Video Settings, starting services, IPv4, IPv6, Domain & Workgroup, DHCP/Static,
Multiple Network Shares, Users/passwords, running multiple commands before/after network start,
and any Unattend settings you want to add to your PE.

If you want a copy of my script I would be glad to share, just PM me.
You may use it for examples or even hack on it for your needs.

Good Luck
RoyM





Also tagged with one or more of these keywords: pxe, tftpd, opensuse, unattended, winpe

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users