Turbo booting
#1
Posted 25 January 2008 - 11:49 AM
And think, the reason that boot times take as long as they do is, that we (needlessly?) perform 2 independant hardware detections and 2 driver installations. (At least on XP/w2k3 projects)
nativeEX_barebone does not boot faster because it supports less hardware, but because it only performs 1 hardware detection and 1 driver installation.
Just try the following. Put HwPnP into your nativeEx_barebone and run it. You will not gain any funktionality, but burn lot's of time.
So by moving the whole hardware detection/driver installation to the same process, we should speed up the boot time considerably.
#2
Posted 25 January 2008 - 07:03 PM
As you already mentioned wit '1 hardware detect ...':Since my last tests with CD-DVD bootimes, i gave this topic a lot of thought.
And think, the reason that boot times take as long as they do is, that we (needlessly?) perform 2 independant hardware detections and 2 driver installations. (At least on XP/w2k3 projects)
nativeEX_barebone does not boot faster because it supports less hardware, but because it only performs 1 hardware detection and 1 driver installation.
Just try the following. Put HwPnP into your nativeEx_barebone and run it. You will not gain any funktionality, but burn lot's of time.
So by moving the whole hardware detection/driver installation to the same process, we should speed up the boot time considerably.
In nativeEx_barebone there is also an app like HwPnP (called StartPNP).
But it is only only copied to PE if bearwindows's Universal Video Driver script is selected and started to detect this driver. Therefore the app's code is limited to look into the 'video' class.
HwPnP looks into much more classes, depending on cmd line.
I'm sure that a well suited HwPnP script with options for all required classes (and switch off of StartPNP), can reduce the amount of boot time remarkably.
Peter
#3
Posted 25 January 2008 - 07:39 PM
So you mean, to split the hardware detect clearly between those 2 detection methodes should possibly bring the same effect?As you already mentioned wit '1 hardware detect ...':
In nativeEx_barebone there is also an app like HwPnP (called StartPNP).
But it is only only copied to PE if bearwindows's Universal Video Driver script is selected and started to detect this driver. Therefore the app's code is limited to look into the 'video' class.
HwPnP looks into much more classes, depending on cmd line.
I'm sure that a well suited HwPnP script with options for all required classes (and switch off of StartPNP), can reduce the amount of boot time remarkably.
Peter
#4
Posted 25 January 2008 - 07:46 PM
No, I meant that it can save a lot of time if you start HwPnP with a cmd line which only checks the wanted HW classes.So you mean, to split the hardware detect clearly between those 2 detection methodes should possibly bring the same effect?
(I remember that anywhere I read a HWPnp cmd line syntax description, which makes this possible)
Peter
BTW: If you us HWPnP, StartPNP is not possibel. Therefore a script scheduling HWPnP in RunOnce, should look for StartPNP in RunOnce and remove it from the target registry.
That again remembers me on some of my (unpublished) concerns, that RunOnce must be organized by as 'preISO' script.
@Holger: I just see you in the list of visitors:
Is it possible to include your PENetwork PnP detection (optional) into such a script, too?
#5
Posted 25 January 2008 - 08:08 PM
But how would that script know the right order? It's not like RunOnce entries would work in any order.That again remembers me on some of my (unpublished) concerns, that RunOnce must be organized by as 'preISO' script.
#6
Posted 25 January 2008 - 08:11 PM
#7
Posted 25 January 2008 - 08:16 PM
But how would that script know the right order? It's not like RunOnce entries would work in any order.
Since a while I'm thinking about to organize that (writing requests into a file, comparable with the autostart mechanism) and finally write the reg entries by an app which uses this file.That again remembers me on some of my (unpublished) concerns, that RunOnce must be organized by as 'preISO' script.
But I always have some issues with priority. Currently priority #1 is 'Native Launch App'. And if you have read all posts about that, currently there is a goal of 7 months ...
Peter
#8
Posted 25 January 2008 - 08:26 PM
btw, Holger can you do me favour and include a little fix in your script?I will think about to include an ('cmdline') option to start a different hardware detection program - if this is what you mean.
Since you don't use anymore a seperate program to make the unicode patch, the script does not work anymore under XPSP1.
Maybe a nice little checkmark?
#9
Posted 04 March 2008 - 12:56 AM
just want to let you know that it seems to be no problem with my script.
Here some infos - I did only tests with the "LiveXP"-project:
I did some tests again with XPSP1 and got the problem of system hangups/frozen state while starting DHCP client (was it your problem too?).
So it took a while to found the problem.
However, I just replaced the file "NTKRNLMP.EXE" (1850KB) in the target folder with a same named file (1997KB) of the "SP1.cab".
After rebuilding the ISO I did not get hangups anymore (like in the screenshot).
I took a look (that seems to be wrong language ) into the "TXTSETUP.SIF" of the XPSP1-source and found the following string: "ntkrnlmp.exe = 100,,,,,,2_,2,3".
So because at the beginning of the setup file DirID 100 is set to: "100 = %spcdname%,%spcdtagfilei%,,\i386,1" I come to the conclusion that it is an error here in one script.
At the moment I don't know why the line in the "Copy and Expand" script is used:
If,%OS%,Equal,XP,If,%SP%,Equal,SP1,CopyOrExpand,%source_win%\NTKRNLMP.EXE,%target_sys%
I think this should be corrected.
Maybe it's just an old error which is/was already fixed...
What I have also no idea of is the fact that these "ntkrnl...exe's" are always in the "i386" dir and one more in the "SPX.cab" file.
Greets
Holger
#10
Posted 04 March 2008 - 12:52 PM
First: There are trobles only with XP2 SP1However, I just replaced the file "NTKRNLMP.EXE" (1850KB) in the target folder with a same named file (1997KB) of the "SP1.cab".
After rebuilding the ISO I did not get hangups anymore (like in the screenshot).
...
What I have also no idea of is the fact that these "ntkrnl...exe's" are always in the "i386" dir and one more in the "SPX.cab" file.
In my source CD (XP Professional German with slipstreamed SP1) both "NTKRNLMP.EXE" are identical:
Size: 1.893.888 bytes Version: 5.1.2600.1106
I have a hang with 'Install clients for microsoft networks', that is before the DHCP stuff.
I'm the author of that line.At the moment I don't know why the line in the "Copy and Expand" script is used:
If,%OS%,Equal,XP,If,%SP%,Equal,SP1,CopyOrExpand,%source_win%\NTKRNLMP.EXE,%target_sys%
Reason:
Even, if in HAL, Special files etc. all multiprocessor stuff is removed from txtsetup.sif, during boot in SP1 the missing NTKRNLMP.EXE is complained.
BTW: I changed the line to
If,%OS%%SP%,Equal,XPSP1,ShellExecute,"hide","expand.exe","#$q%source_win%\%spFile%#$q -F:NTKRNLMP.EXE #$q%target_sys%#$q"Next delivery i'll move it to the server.
Peter
#11
Posted 04 March 2008 - 09:19 PM
@Peter:
I'm a little bit confused now - do you mean with XPSP2 only or XPSP1?First: There are trobles only with XP2 SP1
Can you please then give me some details so I can reproduce this fail behaviour?
@Med:
Please can you also give me some more details (project) for reproducing.Since you don't use anymore a seperate program to make the unicode patch, the script does not work anymore under XPSP1.
Thank you both and greets
Holger
#12
Posted 04 March 2008 - 10:08 PM
Sorry about myI'm a little bit confused now - do you mean with XPSP2 only or XPSP1?
Can you please then give me some details so I can reproduce this fail behaviour?
Should beFirst: There are trobles only with XP2 SP1
First: There are trobles only with XP SP1
Peter
#13
Posted 04 March 2008 - 10:41 PM
No need to anymore, since i upgraded in february to version 24 of PENetwork things work flawless even under XPSP1. Before i always had to downgrade to version 10 or 11.Hi
@Med:
Please can you also give me some more details (project) for reproducing.
#14
Posted 05 March 2008 - 05:08 PM
XP SP1 and 2003 gold setupldr.bin read file name ntkrnlmp.exe.If,%OS%,Equal,XP,If,%SP%,Equal,SP1,CopyOrExpand,%source_win%\NTKRNLMP.EXE,%target_sys%
However that's a renamed ntosknrl.exe at WinPE.
Setupldr.bin select uni processor HAL from default txtsetup.sif.
Uniprocessor HAL and multiprocessor kernel fails at network: system freeze.
Don't mix uniprocessor HAL and multiprocessor kernel.
Use Uniprocessor HAL togehter with uniprocessor kernel.
As for turbo booting:
don't register a single dll at boot time
use as less PNP as possible
create a valid infcache.1, this includes *.inf file timestamps
sort file layout at CD
#15
Posted 05 March 2008 - 05:22 PM
Hi cdob,XP SP1 and 2003 gold setupldr.bin read file name ntkrnlmp.exe.
However that's a renamed ntosknrl.exe at WinPE.
Setupldr.bin select uni processor HAL from default txtsetup.sif.
Uniprocessor HAL and multiprocessor kernel fails at network: system freeze.
Don't mix uniprocessor HAL and multiprocessor kernel.
nice to see the 'newbie' under your name
If you have a look at my post #10
Should I deliver a copy of ntoskrnl.exe renamed to ntkrnlmp.exe?Even, if in HAL, Special files etc. all multiprocessor stuff is removed from txtsetup.sif, during boot in SP1 the missing NTKRNLMP.EXE is complained.
Peter
#16
Posted 05 March 2008 - 11:26 PM
Can you do a favour? Fix this newbie title for future? I'm learning PE still.nice to see the 'newbie' under your name
I knew some PE background, but can't answer a lot of questions.
Yes, that's it.Should I deliver a copy of ntoskrnl.exe renamed to ntkrnlmp.exe?
Or deliver a ntkrnlmp.ex_, containing a ntoskrnl.exe.
Be aware kernel ntoskrnl.exe can be ntoskrnl.ex_ or ntoskrnl.exe. A SP use ntoskrnl.ex_. A slipstreamed hot fix use ntoskrnl.exe.
How do you do this at WinBuilder? Remeber I'm a newbie only.
Or find and fix the true reason: why does network fail at multiprocessor kernel mixed with uniprosessor HAL?
I don't knewa reason and fix.
#17
Posted 06 March 2008 - 07:39 AM
PE boots slowly because necessary drivers are getting installed. "Normal" Win verifies current hardware, but it boots faster, I think, because necessary drivers are already pre-installed.
Why MS uses Drivers.cab instead of having all drivers pre-installed. I believe, because of historical reasons (i.e. from pre-NTFS compression) times and necessety to run on FAT
NTFS compression of pre-installed drivers may very well replace drivers.cab. Same with slow networking startup. Why should we install AFD, TCP/IP, Server, and a lot of other drivers/services at runtime? With "normal" windows we don't re-install everything network-related just because of different NIC. INFs are very flexible, and we pay for this flexibility at each PE boot
Alexei
PS
You can do a simple experiment to verify my proposal:
- Boot PE on one PC, start Network. When startup is finished unload the registry to a .reg
- Do the same on very differnt PC
- Compare two dumps.
You should see the differences are much less, then between the registry we pre-build in WB and what we have at PE runtime.
#18
Posted 06 March 2008 - 07:47 AM
Can you do a favour? Fix this newbie title for future? I'm learning PE still.
I knew some PE background, but can't answer a lot of questions.
The forum's server will will you upgrade to 'Member' automatically with your 10th post.
Yes, that's it.
Or deliver a ntkrnlmp.ex_, containing a ntoskrnl.exe.
Be aware kernel ntoskrnl.exe can be ntoskrnl.ex_ or ntoskrnl.exe. A SP use ntoskrnl.ex_. A slipstreamed hot fix use ntoskrnl.exe.
How do you do this at WinBuilder? Remeber I'm a newbie only.
CopyOrExpand,%source_win%\NTKRNLMP.EXE,%target_sys%
Or find and fix the true reason: why does network fail at multiprocessor kernel mixed with uniprosessor HAL?
I don't knewa reason and fix.
Me neither!
Peter
#19
Posted 06 March 2008 - 04:51 PM
I think, as i already wrote in some other topic, there are 3 ways to get drivers working in PE.I've already mentioned t once some time ago, but anyway...
PE boots slowly because necessary drivers are getting installed. "Normal" Win verifies current hardware, but it boots faster, I think, because necessary drivers are already pre-installed.
Why MS uses Drivers.cab instead of having all drivers pre-installed. I believe, because of historical reasons (i.e. from pre-NTFS compression) times and necessety to run on FAT
NTFS compression of pre-installed drivers may very well replace drivers.cab. Same with slow networking startup. Why should we install AFD, TCP/IP, Server, and a lot of other drivers/services at runtime? With "normal" windows we don't re-install everything network-related just because of different NIC. INFs are very flexible, and we pay for this flexibility at each PE boot
Alexei
PS
You can do a simple experiment to verify my proposal:
- Boot PE on one PC, start Network. When startup is finished unload the registry to a .reg
- Do the same on very differnt PC
- Compare two dumps.
You should see the differences are much less, then between the registry we pre-build in WB and what we have at PE runtime.
1. install through txtsetup.sif - (easiest way, nochance of using parameters)
2. install through HwPnP - (takes the longest, but installs all features)
3. preinstallation into registry - (fastest to boot, all features available)
The problem with version 3 is that it's not that easy.
A. How does one easily install a driver during build time?
B. You might noticed once, that when you plug in your USB printer or scanner in a different port, XP will tell you it found a 'new' hardware and will start installing the driver again. I guess the same would happen with all preinstalled drivers in a universal PE.
C. Is it possible to preinstall all the drivers of driverpacks or would they interfere with eachother?
If A, B and C can be solved 3 would be without a doubt the best and fastest choice.
#20
Posted 06 March 2008 - 05:33 PM
There must be another secret:I think, as i already wrote in some other topic, there are 3 ways to get drivers working in PE.
1. install through txtsetup.sif - (easiest way, nochance of using parameters)
2. install through HwPnP - (takes the longest, but installs all features)
3. preinstallation into registry - (fastest to boot, all features available)
The problem with version 3 is that it's not that easy.
A. How does one easily install a driver during build time?
B. You might noticed once, that when you plug in your USB printer or scanner in a different port, XP will tell you it found a 'new' hardware and will start installing the driver again. I guess the same would happen with all preinstalled drivers in a universal PE.
C. Is it possible to preinstall all the drivers of driverpacks or would they interfere with eachother?
If A, B and C can be solved 3 would be without a doubt the best and fastest choice.
I recorded the work of PENetwork during PE boot.
The attached script and files contain everything PENetwork changed.
Opinion: If I do these changes during build, the execution of PENetwork during boot can be replaced.
Test results = :
- No valid network in PE
- Start of PENetwork aborts with 'error with service TCPIP (2)'
Maybe somebody else does some more tests with the attachement.
Peter
presetNet.zip 49.98KB 527 downloads
#21
Posted 06 March 2008 - 05:49 PM
With our boot time install of files, we tend to overwrite a lot of registry entries.
Noidea what TCPIP(2) means, but i got this error too, when i tried to integrate aNet.script into naughtyPE.
#22
Posted 06 March 2008 - 06:00 PM
No I didn't. I'm currently in the very beginning of 'how to use trackWBInstall'.Peter did you check that, before starting network, the registry settings are still like they should be?
With our boot time install of files, we tend to overwrite a lot of registry entries.
I just wanted to give this hint here.
Maybe if I remove several registry entries around 'Cryptic' etc. it will work.
Give me some time.
Peter
#23
Posted 06 March 2008 - 09:08 PM
I think, as i already wrote in some other topic, there are 3 ways to get drivers working in PE.
1. install through txtsetup.sif - (easiest way, nochance of using parameters)
2. install through HwPnP - (takes the longest, but installs all features)
3. preinstallation into registry - (fastest to boot, all features available)
Not all drivers may be installed by the third method, ie preinstallation into the registry at build time. I've been trying to do this with mass storage drivers the last couple of days. I can get drivers installed correctly as they would be under a normal full OS, ie with CriticalDeviceDatabase entries, service entries, etc. What works on a normal XP does not work for an XP PE (but does for Vista PE). Mass storage drivers entered into txtsetup.sif are used at boot and drivers are available, but with CriticalDeviceDatabase entries, service entries, etc they are not used at boot and drives are not available? What is different so that txtsetup.sif works but the other fails?
Regards,
Galapo.
#24
Posted 06 March 2008 - 10:12 PM
Where exactly is the CriticalDeviceDatabase in the registry found?Not all drivers may be installed by the third method, ie preinstallation into the registry at build time. I've been trying to do this with mass storage drivers the last couple of days. I can get drivers installed correctly as they would be under a normal full OS, ie with CriticalDeviceDatabase entries, service entries, etc. What works on a normal XP does not work for an XP PE (but does for Vista PE). Mass storage drivers entered into txtsetup.sif are used at boot and drivers are available, but with CriticalDeviceDatabase entries, service entries, etc they are not used at boot and drives are not available? What is different so that txtsetup.sif works but the other fails?
I usually simply set start to boot for a driver and it works.
But what i would love to know is, how can i start a service or a driver manually after i wrote all necessary data into the registry of a running system, without a reboot!
"net /start service" does not work unless the service was already at boot up in the registry defined.
#25
Posted 06 March 2008 - 10:24 PM
HKLM\system\ControlSet001\Control\CriticalDeviceDatabaseWhere exactly is the CriticalDeviceDatabase in the registry found?
Yes, but are these drivers mass storage drivers, which are needed at boot?I usually simply set start to boot for a driver and it works.
Yes, I've wondered the same. Some drivers by 'default' seem to require a reboot.But what i would love to know is, how can i start a service or a driver manually after i wrote all necessary data into the registry of a running system, without a reboot!
"net /start service" does not work unless the service was already at boot up in the registry defined.
Regards,
Galapo.
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users