Bâshrat the Sneaky Posted March 29, 2005 Posted March 29, 2005 You guys really want to do it the hard way... But of course it's the better way. As soon as anyone can outline it DETAILED, I'll add it to the DriverPacks as an option.As much as I'm interested, I don't have the time to figure it out.
erik_demon Posted March 29, 2005 Posted March 29, 2005 @X-SaviorNice job, this is a really good start.The key here is indeed DRVINDEX.INFYou don't have to Re-install you OS to test this.The file DRVINDEX.INF can be found in your %systemroot%\inf folderI read somewhere that the file was not digitily signed (I thought RyanVM mentioned that somewhere) so it should be easy to modify the file.I don't have much time this week, but next week I will test the following:- I will create a CAB file called DP_Erik.cab and put it in my systemroot\Driver Cache\i386 folder.- I will add/modify the following lines in the DRVINDEX.INF file:[Version]signature="$Windows NT$"CabFiles=SP2,driver,DP_Erik[DP_Erik];driver files (I think I will test in on my monitor drivers)[Cabs]driver=driver.cabSP2=SP2.cabDP_Erik=DP_Erik.cab- Uninstall my monitor drivers- Reboot, and hope for the best I will report back somewhere next week.@Bâshrat:When we got this working and well, either X-Savior or myself will write a detailed "how-to". It would be very cool to contribute something to your Driverpacks B) .EDIT:@X-SaviorIn the TXTSETUP.SIF I used directory 4 (\System32\Drivers)DRVINDEX.INF looks for it's drivers in the following folder:%systemroot%\Driver Cache\i386that is number: 39
RogueSpear Posted March 30, 2005 Posted March 30, 2005 Ok I'm following all of this without too much difficulties because I looked into myself a number of months ago. At that time I decided it was simply too much for me to tackle. What I remember though was wondering about layout.inf, which I believe IS digitally signed.If true integration can be achieved without breaking (editing) layout.inf, then what is the true purpose of this file? It almost seems to be redudant to me.Second. Does the driver index file map out the drivers contained within drivers.cab? I know that when you slipstream SP2 over Gold, you end up with drivers.cab and sp2.cab (unless you merge with nLite or manually). Both of these contain drivers as I understand it. Soooo.. can we make say DP_MS.cab, DP_LAN.cab, etc? Because without any compression, the collection of BTS DriverPacks is enormous to just keep around the hard drive. Especially when I have my unattendeds copy over the i386 directory and install basic apps, a 30 gig laptop drive starts to look pretty small pretty fast.
RyanVM Posted March 30, 2005 Posted March 30, 2005 I know that the driver INFs in i386 basically use layout.inf as their [sourceDisksFiles] section, which is why adding files to driver.cab is extraordinarily difficult.
X-Savior Posted March 30, 2005 Author Posted March 30, 2005 Ok, I GOT IT! I tested all afternoon and made some headway but the results will surprise most of you I think.Here is what I have done... I had 2 Files I was working with...USB100M.SYSUSB100M.INFAll you need is the *.SYS too be in the "%Systemroot%\Windows\Driver Cache" folderand the *.INF in the "%Systemroot%\Windows\INF". THATS IT!So here is what I did,1) I compressed the USB100M.SYS into the I386 folder on the DVD.2) Edited the DOSNET.INF and added the following...[FLOPPYFILES.1]D1,USB100M.SYS[FILES]D1,USB100M.SYS3) Next I added to the TXTSETUP.SIF241 = "DRIVER CACHE"USB100M.SYS = 1,,,,,,,241,0,04) Lastly on the Windows DVD I placed the USB100M.INF into the"$OEM$\$$\INF " Folder.Done.After I re-installed the OS I plugged in the USB Card, it detected it, asked if I wanted to look online, said no... Then Selected Search and it found it and installed it.This is not QUITE as perfect as I would like. I want it to just do it without asking anything but none the less it works just fine. Something I noticed is that after the first time it installs it created a USB100M.PNFNot sure what that is about.
RogueSpear Posted March 30, 2005 Posted March 30, 2005 Well for what it's worth, when I do a fresh install of XP SP2 for a client and then later deploy the unit and plug in their MS Optical mouse (USB), I get that same dialog box about the drivers. And I KNOW that these are built in drivers. All I do is click on search and away it goes. Annoying at best for sure.If you look in your i386 folder you should see a ton of pnf files compressed. Each inf file needs a corresponding pnf. I forget what it stands for at the moment, but I remember researching it in regards to RIS installations.
X-Savior Posted March 30, 2005 Author Posted March 30, 2005 Yea, I saw what it was but I forget too. So, with the method I outlined you should be able to include ANY drivers. I am most concerned with Peripheral's and stuff like that.I would still like to persue creating an additional cab... something like Extra.cab and integrate it. I think Windows checks the cabs before asking to search for the drivers I think. Now, can you use Winrar to create a Cab file or are they SPECIAL Microsoft files. I know WinRAR can look into them an extract the files. Do I just create a new file and start adding drivers to it and then reference it like Drivers.cab and on XP Pro I think there is SP2.cab and something else. I am taking what I have learned about my MCE 2005 DVD and making a XP Pro DVD re-done from the ground up. That way I will be ready to go for 64-Bit when it arrives... YAAAAAA!!!! Anyone have any suggestions to improve on my methods?
erik_demon Posted March 30, 2005 Posted March 30, 2005 Some bits and peaces of information about .PNF filesMost confusion issues happen because of the way Win32 retains device driver information. When it first detects a Plug & Play device, it uses the matching INF file to build a PNF database file.Site 1The PNF file gets created by the system when the inf file is used toinstall the device. You don't need to create them.Site 2EDIT:@X-SaviorThere is a special program to creat .CAB filesIt is Cabarc.exeYou can download it hereYou can use this link to learn all about the Cabarc commandsEDIT 2:cabarc -r -p N DP-Erik.cab *This command makes DP-Erik.cab in with:-r = Used to recurse into subdirectories when adding files -p= Used to preserve path names (so that you can use sub dirs)
erik_demon Posted March 31, 2005 Posted March 31, 2005 Okay, I now created a DP-Erik.cab fileBut it has a lot of subfolders inside.A few line from the DRVINDEX.INF file[driver]1394vdbg.sys2gmgsmt.sf23145pcl.gpd3155pcl.gpd3165pcl.gpd31x5hc01.cnt31x5hc01.hlp31x5hs01.cntAs we take a look at the files above, we can see that these files are on the root of the driver.cab fileNow I want to know if I can also use subfolder in the DRVINDEX.INF fileIs this possible:[DP-Erik]DP\000_chipset\intel_inf_drivers\815.catDP\000_chipset\intel_inf_drivers\815.infDP\000_chipset\Via\VIAHyperion4in1455v\WinXP\viaagp1.catDP\003_display\samsung710T\SM710T.infSee the image below for an overview of my DP-Erik.cab
Bâshrat the Sneaky Posted March 31, 2005 Posted March 31, 2005 (edited) That was exactly the main problem... it's impossible to put them all in one folder because of many identical filenames...I wonder if it's possible to do it a way similar to this:[Directories]d4 = DP\Cd5 = DP\Gd6 = DP\Ld7 = DP\Md8 = DP\Sd9 = DP\WEDIT: and then of course:[BTS_DriverPacksd4,landriver.sys,d5,atidriver.sysd5,nvidiadriver.sysBut even THEN we'd have LOTS of identical filenames... and I strongly doubt we could ever do it that way (or anything similar)...I think we need the knowledge of an insider to get this done properly... (and without needing weeks/months to find it out) Edited March 31, 2005 by Bâshrat the Sneaky
erik_demon Posted March 31, 2005 Posted March 31, 2005 I wonder if it's possible to do it a way similar to this:It would be nice if this should work. Then atleast I can do this for my own driverpack which has no more then 10 drivers included. You can avoid identical filenames in your pack aswell, but then you should have to make references to 412 Directories (DP Masstorages and DP chipset excluded) EditOr... You can can create 412 .CAB files Edit 2: then you start to wonder how Microsoft tackled this problem, maybe I should send them an e-mail
Bâshrat the Sneaky Posted March 31, 2005 Posted March 31, 2005 Microsoft tackled it in this way: they simple LIMITED the number of supported drivers. Simple, yet effective And probably they set restrictions to the drivers.*BUT*I have some good news While testing the new versions of the DriverPacks, I was checking the dosnet.inf file if it was edited correctly (the answer is NO, still figuring out WHY). While I was doing that, I noticed these entries:d1,usetup.exe,system32\smss.exed1,ntdll.dll,system32\ntdll.dllSo it DOES work! d1 = \I386 and system32 is a subfolder of I386, with indeed those files in it. So eventually it does work, but the question is if it also works for .cab files?
erik_demon Posted March 31, 2005 Posted March 31, 2005 That is GREAT news ,I will try to experiment with INF files this weekend.ATM, I really know absolutly nothing about INF files , I think that I will pay Gosh's site a visit.EDIT:Is it really necessary to create a CAB file??can't we just put the DP folders uncompressed in the "%Systemroot%\Windows\Driver Cache" folder?This worked for X-Savior (okay, he only did it with 2 files, but should that matter?), the only thing he didn't do was to make references in DRVINDEX.INF
X-Savior Posted April 1, 2005 Author Posted April 1, 2005 Hey There,This all sounds very interesting. I think we might be on to something here. I tried to make a cab (Prior to learning about this program). My test did not work. It seems for any driver to install all it needs is the INF in the INF folder after the OS Install and the *.SYS in the \Driver Cache folder. THAT'S IT!So to make a Cab properly my test should work. I will test tonight. I made all the references to my "Extra.cab" ande the install did not kick up a fuss at all. I referenced it in several locations. I wrote them down but can't find them now. The file was placed properly with the other Cab's in /Driver Cache.Ok, found it. I Referenced in DOSNET.INF[FILES]D1,EXTRA.CABDRVINDEX.INFCABFILES=SP2,DRIVER,EXTRA[EXTRA]USB100M.SYS[CABS]EXTRA=EXTRA.CABTXTSETUP.SIFEXTRA.CAB = 1,,,,,,,39,0,0DriverCabName=Driver.Cab,SP2.Cab,Extra.CabThen I added the INF file to$$\InfDoes this look corrent to you guys? I don't think I overlooked anything. Install never kicked up a fuss so I assume everything was in order.
erik_demon Posted April 1, 2005 Posted April 1, 2005 (edited) Yeah, this looks very promising, I can't wait to see the result EDIT:I found something a bit suprising,there are NO .inf files in Driver.cab or SP2.cabEDIT2:It seems like all .inf files are directly in the i386 folder, and they all get copied to the %systemroot%\inf folder by txtsetup.sif, this should mean that using the $$\Inf folder also worksEDIT3:Okay, it seems that every file in the Driver.CAB and SP2.CAB file have a reference inside txtsetup.sifjust some examples from both DRIVER.CAB and SP2.cab files:hpcjrrps.dll = 100,,,,,,,,3,3hpwm535m.gpd = 1,,,,,,,,3,3hpwm5con.ini = 1,,,,,,,,3,3eplvcd00.dll = 1,,,,,,,,3,3eplvcd00.ini = 1,,,,,,,,3,3lxaacln4.out = 1,,,,,,,,3,3epndde01.dat = 1,,,,,,,,3,3 epndde02.cfg = 1,,,,,,,,3,3cn160.hlp = 1,,,,,,,,3,3ir_begin.wav = 1,,,,,,,,3,3atievxx.exe = 1,,,,,,,,3,3kodak.jpg = 1,,,,,,,,3,3 ncss4406.icm = 1,,,,,,,,3,3It seems like 3,3 tells setup to do *something* with the files in the .CAB fileI think that this is very important (maybe also for installing drivers via the new made CAB file) does anyone know what it means??****, I can't wait till I have some time to help testing, I think we now are very close!!EDIT 4:It seem to be a bit different with .sys files:apmbatt.sys = 1,,,,,,,4,1,1enum1394.sys = 1,,,,,,,,3,3,,1,4cmdide.sys = 1,,,,,,3_,4,1,,,1,4exabyte2.sys = 1,,,,,,,4,1ndisip.sys = 100,,,,,,,4,1rio8drv.sys = 1,,,,,,,4,0,0 riodrv.sys = 1,,,,,,,4,0,0 ql12160.sys = 1,,,,,,4_,4,1,,,1,4But still also here there is pretty much the sameAlso I think that = 1,,,,,,4_,4,1,,,1,4 and = 1,,,,,,3_,4,1,,,1,4 is for Masstorage drivers, they also exist under [sCSI]EDIT 5:Yes, I seem to be write about the Masstorage drivers:abp480n5.sys = 1,,,,,,4_,4,1,,,1,4amsint.sys = 1,,,,,,4_,4,1,,,1,4aliide.sys = 1,,,,,,3_,4,1,,,1,4These files are inside driver.cabEdit 6:these value are used by windows for the nvidia drivers:nv4_disp.dll = 100,,,,,,,,3,3nv4_disp.inf = 100,,,,,,,20,0,0nv4_mini.sys = 100,,,,,,,,3,3nv4_disp.dll, and nv4_mini.sys are in SP2.CAB, and nv4_disp.inf is in the i386 folderIt now seem that *added* drivers in .CAB files (I mean drivers that are not windows core driver, and are no part of the *originale* windows setup files) = 100,,,,,,,,3,3 for all their files, except the INF, it uses = 100,,,,,,,20,0,0 and is located in the i386 folder Edited April 1, 2005 by erik_demon
Recommended Posts