Unattended XPCD
   


Boot Screens
Submitted by Alanoll

Alrighty, let's get some terms and whatnot out of the way. The Boot Screen image, is actually a resource located in the Windows kernel file ntoskrnl.exe. Now comes the complicated part, there are 4 unique kernel files that Windows uses:
  • ntoskrnl.exe - Windows Single Processor Kernel
  • ntkrnlmp.exe - Windows Multi Processor Kernel
  • ntkrnlpa.exe - Windows Single Processor Kernel with more then 3 GB of RAM
  • ntkrpamp.exe - Windows Multi Processor Kernel with more then 3 GB of RAM

AMD Processors as of the time of this writing, are ALL considered Single Processor systems, where as Intel Pentium 4 processors WITH Hyperthreading are Multi Processors and all NON Hyperthreaded processors are Single.

I'll be covering how to make your CD/DVD usable across single processor and multi processor systems.

Before proceeding, you will need to download Boot Editor below.

Download: Homepage | Download

» Preparing to Create the Kernel File

First things first, extract the Boot Editor archive to a folder of your choosing, and attempt to execute. If you get an error about a missing file, you're most likely needing msvbvm60.zip. Extract both those archives into the same folder as Boot Editor, and you should be good to go.
  • Upon first getting the program running, you'll be confronted with this screen:

    Unattended XPCD

    Press NO as I'll be telling you want to do. If you're interested in reading it later, it's the readme file in the Boot Editor directory.

  • The next screen will be:

    Unattended XPCD

    You can safely click CLOSE. It won't harm your system, and you won't screw up any files.

  • Welcome to the main screen of Boot Editor. It should be similar to:

    Unattended XPCD

  • Click the File menu and select New Boot Screen.

  • This window should appear:

    Unattended XPCD

    In the box, type in just a name for your bootscreen. This will be the filename that it's saved under.

  • Now we're going to change the images. The latest version of the Service Pack 2 kernel, has only 4 bitmaps inside, where as the prior version including Windows 2003's kernel have more. You'll understand what the images go to, as in the dropdown box are descriptions for each image.

    Unattended XPCD

  • Once you have selected the image you wish to replace, click the Load Image button at the top

    Unattended XPCD

    and select YOUR image that you want to replace the original with. When you replace the Main - #1 image, also press the << Move button to correct the color pallete of the file.

  • If say you want to move the progress bar animation, when viewing the Main - #1 image, click and drag the progress bar image up and down. You CAN NOT move it left or right.

  • Let's save this for either distribution online, or incase you want to back it up. Press the Make button located at the top of the screen.

    Unattended XPCD

  • The following screen will let your more precisely save the file.

    Unattended XPCD

    • If you want to change the name, double click the name tag, and type.
    • If you're modifying one of the older kernels which still has all of the different versioning images (Profession, Home, Server, Media Center, etc.), here is where you can remove them if you wish. This will not cause an error, they just won't display like they normally would.

      Under the column Put In, double click and select No.

    Click OK when you're done, then click OK on the confirmation.
    The file you just created is really just a zip file that you can upload so others may use your same images. It's saved in your Boot Editor directory under the name you called it, with the extension bootscreen.

» Creating the actual EXE file

Now to actually create the kernel file. As we'll be creating both the single processor and multi processor kernels we're gonna need to do alittle bit of copy paste, and renaming.
  • Locate these two files in your Windows Setup Source

    • ntoskrnl.ex_
    • ntkrnlmp.ex_

    These files are currently compressed, so read this page on how to take care of that.

  • Once you have expanded those two files, go into your system32 directory located within your Windows directory. Rename the current ntoskrnl.exe to ntoskrnl.bak.

  • Rename one of your expanded files from your Windows Source to ntoskrnl.exe into your system32 directory.

  • Back in Boot Editor, press the TEST button, right next to the MAKE button.

  • You will be presented with this screen:

    Unattended XPCD

    Press NO as we're not really testing it.

  • The next box, is just informing you where it's creating the new file and that if we were testing it, it'd be made default.

    Unattended XPCD

    Press OK and continue. Press OK on the concluding screen.

  • Now back in the system32 directory, copy the NewBoot.exe file to the $$ within your $OEM$. For more information read about the distribution folders. Rename the file to singkrnl.exe if you used the single processor file, or dualkrnl.exe if you used the other one. Remember where you save it, you'll need it later.

  • Repeat the last few steps with the other kernel file, and copy it to the same directory renaming to the name you didn't use on the other one.

» Method 1: Creating the Batch File to select the proper kernel

The following batch file, is just a simple script that reads the NUMBER_OF_PROCESSORS variable from the registry and then selects the proper kernel file based on it.

FOR /F "tokens=3 delims=  " %%A IN (\'REG QUERY "HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v NUMBER_OF_PROCESSORS\') DO SET NUMBER_OF_PROCESSORS=%%A

bootcfg /copy /D "Windows XP Professional" /ID 1
if %NUMBER_OF_PROCESSORS%==2 goto DUAL
REM ----For Single proc
bootcfg /RAW "/Kernel=singkrnl.exe" /A  /ID 2
goto End
:DUAL
REM ----For Multiprocess/Hyperthread proc
bootcfg /RAW "/Kernel=dualkrnl.exe" /A  /ID 2
:End
bootcfg /Timeout 2
bootcfg /Default /ID 2


What this script is in reality doing, is making a copy of the original entry (which should be the one for Windows) and calls it Windows XP Professional. It then appends the /kernel entry to use a different kernel file, and then sets the delay to 2 seconds incase something doesn't work, and then sets the new kernel as default.

If you wish to use a different name for your kernel files, I'm sure you can see where to change it. If you wanted a different timeout left, just change the number. If you don't want a timeout, enter 0.

Save this batch file as bootscreen.cmd and save it in your distribution folders. Enter a line in your install routine to execute the batch file. Such as adding

[GUIRunOnce]
"%systemdrive%\install\bootscreen.cmd"


To your WINNT.SIF file. If you already have an entry under [GUIRunOnce] then just copy the quoted portion below the one already present. The path is assuming bootscreen.cmd is saved in $OEM$\$1\install

» Method 2: Direct Integration


1. Run Modifype(See Compression Page) -c to re-checksum the files.
2. rename your single processor kernel file to "ntoskrnl.exe" and multiple processor kernel to
"ntkrnlmp.exe".
3.Compress them using "makecab" (See Compression Page) and drop Makecab's output into the I386 folder on your Xp C.D

» Troubleshooting Boot Editor

Sometimes when I use Boot Editor for long periods of time, it will just stop responding. All you have to do is close it, and restart the program. Double click on your bootscreen file listed on the left, and continue.
Last updated 2008-03-18 05:27:04 by Unknown  [Edit]
All trademarks mentioned on this page are the property of their respective owners
MSFN is not affiliated with Microsoft
Copyright © 2001 - 2013 msfn.org
Privacy Policy