Question: Even after using programs to customize your unattended install, what is the most annoying part about setup?
Answer: Easy, text mode!
Despite advances in customizing windows xp setup, one part has remained elusive: the beginning. How frustrating is it to cut in half the time it takes to install windows, yet you still have to sit at the text mode screen that says, "loading windows setup, loading Adaptec SCSI controller,etc". That has always annoyed me. I've never owned anything Adaptec, so why do i have to wait as windows setup loads a bunch of SCSI drivers for Adaptec??? Booting from CD could take a couple minutes as you wait for setup to load it's drivers (I counted 80 in all).
In the past i have loosely described methods to try to reduce this wait time. Now i reveal for the first time how to reduce text mode setup's wait time by over 50%
How does text mode work when you boot from CD or run setup from a GUI and reboot?
When you boot from CD setupldr.bin starts the setup process. This is the "blue screen" you see booting from CD.
Setupldr.bin is hard coded to load core files such as the HAL, Kernel, Keyboard driver. It then loads setupreg.hiv, which is a registry hive file. The key part about the .hiv file is it has a mini copy of the CurrentControlSet, which loads all your drivers. This hive file is later merged with several .inf files to compose the initial registry (or in the case of an upgrade the registry is split and merged with the .inf files).
Setupldr.bin is then hard coded to load various sections from txtsetup.sif that have .load, such as:
These sections specify what drivers to load during setup. Txtsetup.sif also specifies the name of the drivers, that you see at the bottom of the blue screen when you boot from CD. Such as:
mouclass = mouclass.sys
mouhid = mouhid.sys
mouclass = "Mouse Class Driver"
mouhid = "HID Mouse Filter Driver"
In this case, setupldr.bin will load mouclass.sys and mouhid.sys and at the bottom of the screen you'll see "mouse class driver" and "hid mouse filter driver".
Like i mentioned, XP Setup loads 80 files (!) booting from cd, which takes a long time. And some files such as SCSI drivers you might never need. So the question becomes: Is there any easy way to tell setup not to load unwanted drivers that you don't need booting from the XP CD?
Tell setup not to load files
Looking through setupldr.bin, i saw "load" and "noload" mentioned twice. This got me thinking: If setupldr.bin looks for sections that have [xxx.load] in them to load files, maybe you can make a [xxx.noload] section so setup doesn't load those files. I wasn't that far off.
Looking at the txtsetup.sif for NT4 i found the following for [SCSI.Load]
; List of scsi miniport drivers we are to load and where
; they get copied to if installed. Note that the shortname
; must be the same as the service name in the driver load list.
; <shortname> = <miniport_filename>,<directory>
mkecr5xx = mkecr5xx.sys,4,noload
aic78xx = aic78xx.sys,4
mitsumi = mitsumi.sys,4,noload
Which implies you can tell setup not to load a file by adding ,,noload to a file.
Attached to this post is a copy of my txtsetup.sif for XP SP2 Pro. the only thing i changed in this file is i added noload. Search the file for noload and you'll see what i mean. Using this method i reduced the files XP Setup loads from 80 to 42. Reducing the load time by about 50%. No more waiting for drivers you don't need such as a Toshiba Floppy drive driver.
My custom txtsetup.sif stops setup from loading these drivers:
FAT support (i only use ntfs so what's the point of loading FAT?)
NO SCSI (i dont have any SCSI drivers)
No Toshiba floppy support (i dont have a toshiba)
NO Compaq support (i dont own a compaq so why would i want compaq drivers??)
However if you wanted to you could probably reduce the drivers down even more, maybe down to 20 (out of the original 80). My txtsetup.sif does NOT remove support for:
Intel support (i think virtual machines use intel so i left it even though i use AMD)
There is also a second way to speed things up even more...
Part 2: Expand needed files
By default XP setup will expand any files it needs on the fly into memory. The problem with this is when you are installing from CD this could be a big performance hit on setup, and it'll take up more memory. One way to avoid this performance hit is by expanding the files setup needs.
1. Run i386\winnt32.exe /noreboot
2. Once done you'll have a folder called $WIN_NT$.~BT - this has the files used to boot/start setup
3. Any compressed files in this folder (ending in an understore, such as file.sy_) expand. Such as expand -r cdfs.sy_. Once every file is expanded copy them back into the i386 folder, and delete any compressed versions (such as cdfs.sy_). Now when you boot from CD setup will run the files directly from cd, instead of expanding them into memory.
I tested using a default install of XP SP2 Pro, using the txtsetup.sif attached. I made an ISO, burned to CDRW, then booted my computer from it and did a clean install on a new partition. I formated it NTFS - Quick. I had no problems during the install. Nothing was logged in setuperr.log. Installing from hard drive i only had a 2-3 second wait as setup loaded the 42 drivers i specified. Booting from cd it took about a minute to load the drivers but i didn't time it.
Using both methods will probably speed up booting from CD by over 50%. With further customizations it could be even greater. These methods combined with GUI setup customizations such as nlite will greatly speed up the booting process.
I have a feeling this method will become very popular simply because it's very easy to use and has no bugs. Since no files are removed from the CD, you don't need to worry about setup at a later point needing a file.