grrr .... with the file.

On Fri, Feb 13, 2009 at 07:08:52PM +0100, Pierre Bourgin wrote:

> 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.
> 
> This obsoletes all previous published code. 
> Files and patches are based on unattended-4.8rc5 code.
> 
> Regards,
> 
> Pierre Bourgin
> 
> [copy of README-search-win-drivers.txt from attached archive]
> 
> 
> Changelog:
> * 20090213 - Updated instructions related to site/config.pl content
>              (reported by Steven Blackery)
> * 20090213 - Added search-win-drivers.pl example output.
> * 20090213 - Updated instructions related to site/config.pl content
>              (reported by Juan Jose Pablo and Steven Blackery)
> * 20081112 - case insensitive search on pattern PCI\\VEN 
>              (reported by Jye Meier)
> * 20081006 - deal with .INF encoded in UTF-16le format
> * 20081003 - initial (public) revision
> 
> All Files and patches are based on unattended-4.8rc5 code.
> 
> -----------------------------------------------------------------------
> 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 script <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 DISABLE its usage
>     #$u->{'_temp'}->{'scan_windrivers'} = '';
>     
>     ## Windows drivers scanning: drivers collection root path:
>     ## default is "/z/site/win_drivers"  (in search-win-drivers.pl):
>     #$u->{'_temp'}->{'scan_windrivers_path'} = "/z/site/win_drivers" ;
>     
>     ## Windows drivers scanning: use patched 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 %systemdrive% once Windows is installed):
>     ## default is 'drv-scan' (in dosbin/install.pl)
>     #$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
> 
> You can also run search-win-drivers.pl script directly from the shell to see
> what happens: it's a standalone script that just produce output:
> 
>   $ /z/dosbin/search-win-drivers.pl -d /z/site/win_drivers
>   # request lspci about PCI device(s) ...
>   # found 18 PCI device(s) on current hardware platform.
>   # - desc=Intel Corporation 82915G/P/GV/GL/PL/910GL Memory Controller Hub 
> (rev 04)
>   #   busid=00:00.0 vendor=8086 device=2580 class=0600
>   #   infstr=PCI\VEN_8086&DEV_2580
>   # - desc=Intel Corporation 82915G/P/GV/GL/PL/910GL PCI Express Root Port 
> (rev 04)
>   #   busid=00:01.0 vendor=8086 device=2581 class=0604
>   #   infstr=PCI\VEN_8086&DEV_2581
>   # - desc=Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express 
> Port 1 (rev 03)
>   #   busid=00:1c.0 vendor=8086 device=2660 class=0604
>   #   infstr=PCI\VEN_8086&DEV_2660
>   [snip]
>   # - desc=ATI Technologies Inc RV516 [Radeon X1300/X1550 Series]
>   #   busid=01:00.0 vendor=1002 device=7187 class=0300
>   #   infstr=PCI\VEN_1002&DEV_7187
>   # - desc=ATI Technologies Inc RV516 [Radeon X1300/X1550 Series] (Secondary)
>   #   busid=01:00.1 vendor=1002 device=71a7 class=0380
>   #   infstr=PCI\VEN_1002&DEV_71a7
>   # - desc=Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI 
> Express (rev 01)
>   #   busid=40:00.0 vendor=14e4 device=1677 class=0200
>   #   infstr=PCI\VEN_14e4&DEV_1677
>   # 18 PCI device(s) to consider.
>   # found 18 distinct inf string(s) for PCI devices.
>   # Parsing drivers .inf file(s) below folder /z/site/win_drivers ...
>   # - file /z/site/win_drivers/DriverPacks/D/G/A1/CX_72281.inf        match 
> 'PCI\VEN_1002&DEV_7187'
>   # - file /z/site/win_drivers/DriverPacks/D/C/I/2k3/915.inf  match 
> 'PCI\VEN_8086&DEV_2580'
>   # - file /z/site/win_drivers/DriverPacks/D/C/I/xp/915.inf   match 
> 'PCI\VEN_8086&DEV_2580'
>   [snip]
>   # - file /z/site/win_drivers/fjs-p300/chipset-ich2-ich6/915.inf     match 
> 'PCI\VEN_8086&DEV_2580'
>   # Checked 1187 .inf file(s).
>   # Matching .inf file(s): 34 distinct folder(s):
>   /z/site/win_drivers/DriverPacks/D/C/I/2k
>   /z/site/win_drivers/DriverPacks/D/C/I/2k3
>   /z/site/win_drivers/DriverPacks/D/C/I/xp
>   /z/site/win_drivers/DriverPacks/D/G/A1
>   [snip]
>   /z/site/win_drivers/fjs-p300/chipset-ich2-ich6
>   # - file /z/site/win_drivers/DriverPacks/D/S/SMG/smwdmch5.inf       match 
> 'PCI\VEN_8086&DEV_266e'
>   # - file /z/site/win_drivers/DriverPacks/D/C/I/xp/915.inf   match 
> 'PCI\VEN_8086&DEV_2580'
>   # - file /z/site/win_drivers/DriverPacks/D/C/I/xp/ich4core.inf      match 
> 'PCI\VEN_8086&DEV_244e'
>   [snip]
>   # Enumerate unmatched device(s): 1 device(s)
>   # - unmatch device: PCI\VEN_8086&DEV_265c (desc: 'Intel Corporation 
> 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03)')
> 
> -----------------------------------------------------------------------
> 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
> 
> - You should also move your PCI devices drivers from i386/$oem$/$1/ folder
>   into the scanable collection of drivers (below site/win_drivers/).
> 
> - 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.
>   ... Anyway, this is the expected behaviour: provides drivers that SHOULD
>   match, not trying to subsitute to the Plug-and-Play mechanism of Windows.
> 
> - 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).
> 
> - 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, SCSI
>   or HDAUDIO buses.
> 
> - " 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 to be runned from Windows. To do so, we should
>   have to write a PCI bus scanner from Windows API (ala lspci).
> 
> - 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).
> 
> - Time of scanning/reading so many .INF files could be reduced by using a
>   cache mecanism, but such a cache might generate a huge memory footprint
>   while running search-win-drivers.pl ?
> 
> #end
> 
> ------------------------------------------------------------------------------
> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
> -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
> -Strategies to boost innovation and cut costs with open source participation
> -Receive a $600 discount off the registration fee with the source code: SFAD
> http://p.sf.net/sfu/XcvMzF8H
> _______________________________________________
> unattended-devel mailing list
> unattended-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/unattended-devel
> 

Attachment: search-win-drivers-unattended-4.8rc5-20090214.tar.gz
Description: GNU Zip compressed data

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
unattended-devel mailing list
unattended-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/unattended-devel

Reply via email to