with the file attached, it sounds better ...

Pierre Bourgin a écrit :
Hello List,

Please find an updated version of a Windows driver scan system for the
Unattended project and a complete and updated HOWTO for using it.

Sorry for the verbosity.

This obsoletes all previous published code. Files and patches are based on unattended-4.8rc5 code.

Changelog:
* 20881112 - case insensitive search on pattern PCI\\VEN (reported by Jye Meier)
 * 20081006 - deal with .INF encoded in UTF-16le format
 * 20081003 - initial (public) revision

Regads,

Pierre Bourgin

-----------------------------------------------------------------------
What is it ?
-----------------------------------------------------------------------

A perl script that take a look on the PCI device(s) of the current hardware
platform to install (under Windows) and search for Windows driver(s) that
SHOULD match for these PCI device(s) by parsing a collection of Windows
drivers.

Any Windows driver that is supposed to support a given PCI device will be
copied onto the hard drive, from which Windows is installing.
The OemPnPDriversPath entry of the file unattend.txt is updated accordingly.

That way, the Plug-and-Play Windows mechanism will be able to choose and use
these "hinted" drivers.

The benefit is that you don't have to choose manually which Windows drivers
to install with Unattended.

Some devices may not have support from Windows once it's installed due to
lack of driver, but at least all major devices should be OK (storage,
network, video card).

In case of a missing driver, you can "just" add it into your driver
collection for the next time.
Since there is less and less distinct hardware vendors, and since vendors
tend to provide unified drivers that support all their products, you should
not have to add so many items.

-----------------------------------------------------------------------
Installation & configuration
-----------------------------------------------------------------------

As much as possible, try to install file(s) below folder
<unattended>/install/site/, it will help unattended maintenance.

0. retrieve a collection of Windows drivers into the Windows drivers "root"
   directory ; we use here <unattended>/install/site/win_drivers/ :

   For instance, the DriverPacks.net collection of Windows drivers: retrieve
   all the .7z files from their web site ( http://driverPacks.net ) then
   uncompress all these archive file(s) into install/site/win_drivers/ .
   Full drivers collection (20080530) is about 1.3GB of hard drive space:

     $ mkdir -p <unattended>/install/site/win_drivers/DriverPacks-20080530
     $ cd <unattended>/install/site/win_drivers/DriverPacks-20080530
     $ ls ..../download/DriverPacks/*.7z │ xargs -n 1 /usr/bin/7za x

   Depending on your needs, you will probably have to add some specific
drivers: for instance, I have:
     $ ls -d <unattended>/install/site/win_drivers/*/*
     dell/cardbus-ctlr-ti-7510
     dell/modem-conextant-d480
     dell/wlan-intel-bg2200
     DriverPacks-20080530/D
     VMware-server-1.0.7-32bit/video
     [...]

1. From the attached archive, retrieve nt5x-install script as file
   <unattended>/install/site/nt5x-install .
   It's not usefull to update <unattended>/linuxboot/nt5x-install !

2. patch file <unattended>/install/dosbin/install.pl with the provided patch. NOTE: this patch is generated against the 4.8rc5 install.pl file.

3. Add file <unattended>/install/dosbin/search-win-drivers.pl with the one
   from the archive.

4. Update your <unattended>/install/site/config.pl with the following
   elements:
## Windows drivers scanning: uncomment to enable $u->{'_temp'}->{'scan_windrivers'} = '';
      ## Windows drivers scanning: drivers collection root path:
      $u->{'_temp'}->{'scan_windrivers_path'} = "z:\site\win_drivers" ;

      ## Windows drivers scanning: use updated version of ntx5-install
      $u->{'_meta'}->{'ntinstall_cmd'} = '/z/site/nt5x-install' ;

      ## Windows drivers scanning:
      ##   howto exclude PCI_CLASSID Ethernet Controller (0x0200)
      ##   from search of Windows Drivers scanning
      #$u->{'_temp'}->{'scan_windrivers_options'} = '-c 0200' ;

      ## Windows drivers scanning: where to store matching driver(s)
      ##   (relative to /c/ ):
      #$u->{'_temp'}->{'scan_windrivers_dest'} = 'drv-scan' ;

5. Restart a Windows installation via Unattended to use it. The effect of this code happens before you choose (manually) which driver(s) to add to the installation. You can check the scan result in the file
     /c/netinst/logs/search-win-drivers.log

-----------------------------------------------------------------------
Technical details
-----------------------------------------------------------------------

Script install/dosbin/search-win-drivers.pl, called by dosbin/install.pl,
enumerates PCI device(s) on the current hardware platform by parsing the
output of 'lspci -n' shell command and retrieve its PCI identifier
("PCI_VENDOR", "PCI_DEVICE", "PCI_CLASS").

For each PCI device, It looks recursively in all *.INF file(s) below
the Windows driver collection ($u->{'_temp'}->{'scan_windrivers_path'}) to
search for the magic string "PCI\VEN_[PCI_VENDOR]&DEV_[PCI_DEVICE]" .

Please see the online help of the scanner search-win-drivers.pl for details
on its mechanisms:
  $ perldoc <unattended>/install/dosbin/search-win-drivers.pl |less

Once finished, install/dosbin/search-win-drivers.pl returns a list of
folder(s) that contains drivers to copy onto the hard drive.
Its output is written into /c/netinst/log/search-win-drivers.log .
It also lists the PCI device(s) that no Windows driver matched.

install.pl then continues its usual operations and update the content
of string OemPnPDriversPath with the supplementary folder(s) provided by
search-win-drivers.pl output.

Script nt5x-install will take care of copying these directories onto the
hard-drive.

Please note that in order to limit the lengh of string "OemPnPDriversPath",
install.pl makes a map between the real path(s) of drivers and their
corresponding paths on hard drive. It also help to avoid collisions among
(manually choosed) driver folder(s).

So all drivers folders will be copied with the following names onto the
hard-drive : /c/drv-scan/1/, /c/drv-scan/2/, /c/drv-scan/3/, ....
The maps between full drivers paths and their copied destination is
available in unattend.txt as [_meta]/'scan_windrivers_dest_map' string.


-----------------------------------------------------------------------
FAQ, Knowm limitations
-----------------------------------------------------------------------

- If using this scanner, you probably don't need anymore  to do the full
  uncompress DriverPacks.net and PnP mechanism as described in the links below:
    http://ubertechnique.com/unattended/BTS_Driver_Packs
    (thread) 
http://www.mail-archive.com/unattended-i...@lists.sourceforge.net/msg05535.html

- The search of drivers in the full DriverPacks.net collection is taking
  about 10 to 20 seconds to achieve (about 900 .INF file(s) to parse).

- this scanner may provides a lot of possible driver(s) if used with the
  DriverPack Collection.
  If fact, this collection provide drivers for both  Windows 2000,XP,2003,
  so a given driver may imply 2 or 3 folders.
  The scanner can't distinguish between Windows flavors, since this
  information is not available in .INF files.
  This is not a problem since this is the Windows PnP's job.
example: On a DELL Latitude D620 laptop, I have 57 folders ! ... but it works anyway.

- Windows drivers must provide an .INF file in order to be usable by this
  scan system. If they do not provide, try to unpack the provided files
  (un-cab, extract for .exe, etc.).

- works only with linux boot and nt5x-install : DOSEMU is not supported.

- TXTSETUP.OEM interaction untested (specific to mass storage drivers).

- no check of which OS to install is performed on driver(s) search:
search-win-drivers.pl scanner returns any matching device. ... Anyway, this is the expected behaviour: provides drivers that SHOULD
  match, not try to subsitute to the Plug-and-Play mechanism of Windows(TM).

- PCI devices exclusion of search-win-drivers.pl is only based on
  PCI_CLASSID; in the future, we should use a more generic form for
  exclusion, like '<class>:<vendor>:<device>'

- an "unmatched" PCI device does not means unsupported: it may be supported
  via buildin drivers collection of windows,

- it should be nice to extend this code to other buses, like USB or SCSI.

- " virtual " bus(es) that Windows may use won't be probably supported: the
  goal is to help installing, not replace the PnP Windows mechanism.

- This scanner does not support Windows as underlying OS: should have to
  write a PCI bus scanner from Windows API (ala lspci).

#end

Attachment: search-win-drivers-unattended-4.8rc5-20081215.tar.gz
Description: application/gzip

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
unattended-devel mailing list
unattended-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/unattended-devel

Reply via email to