Pimp my PXE-boot screen

It was “a few” years ago since I did use a HEX-editor… but with a little time over last night I did a small hack to the PXE-boot files.

Why I did it…
1. I wanted to test if I still know how to use a HEX-editor
2. I don’t like the original text.

Do I need to mention: This is NOT supported by anyone and if you break any deployment-solution… don’t blame me.

First, make a backup (*doh*).

The files you are looking for are located on your PXE-point, X:\RemoteInstall\SMSBoot\x86 (and \x64)

I use XVI32 v2.51 www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm to make the changes in the binary files.

Open up PXEBOOT.COM in XVI and search for “Press F12″ (case sensitive).
Then replace the text. If you have a shorter text, fill it out with blank spaces. If you have a longer text… tough luck. :-\

"Press F12 for network service boot"
"Press F12 for snowland deployment "
 

The original text:
hexedit-press-f12

And the changed text:
hexedit-press-f12-snowland

Save and test to PXE-boot a machine.
(If you can’t see the new text, you probably need to copy the changed file to both the x86 and the x64 directory)

That wasn’t to hard, was it?
If it was… don’t bother to try the WDSNBP.COM-file. :-P

The largest textblock that a user can see is the following text, this is what we want to change / pimp.

The details below show the information relating to the PXE boot request for
This computer. Please provide these details to your Windows Deployment Services
Administrator so that this request can be approved.
         1         2         3         4         5         6         7         8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
 

The easy way is just to change the text to something else, but why not use some ascii-art?

If you want to use ascii-art, the maximum width is 51 chars (the width of the third line) and 3 lines high since you need to replace and not add/delete anything.
Of course the first and second line can be a bit longer.

So… start up some texteditor with monospace font (notepad will do) and create some ascii-art.

   __  _  _  __  _    _ _    __  _  _ __
  (__  |\ | |  | |    | |   |__| |\ | |  \  Deployment Services is loading…
  .__) | \| |__|  \/\/  |__ |  | | \| |__/
         1         2         3         4         5         6         7         8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
 

Now that we have some ascii-art with loads of blank spaces we need to replace the right number of spaces with something that we can see.

###__##_##_##__##_####_#_####__##_##_#__###################################
##(__##|\#|#|##|#|####|#|###|__|#|\#|#|##\##Deployment#Services#is#loading…##
##.__)#|#\|#|__|##\/\/##|__#|##|#|#\|#|__/#########
         1         2         3         4         5         6         7         8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
 

The number of # should be exactly the same as the original text.

Start up XVI32 and load WDSNBP.COM, search for “The details below”… now comes the boring/tricky part. Replace the original text with your new ascii-art.

I did a small “translation”-file where I have the orignal row and the new row next to each other, like this for the second row.

This computer. Please provide these defails to your Windows Deployment Services
##(__##|\#|#|##|#|####|#|###|__|#|\#|#|##\##Deployment#Services#is#loading…##
 

Now you can see that the text “computer.” sould be replaced to ” |\ | | “. Yes, it will be hard to read and easy to do wrong.

There is a search/replace option in XVI32, if you use it remember: replace with the exact same number of characters.

Save, PXE-boot and enjoy… :-)

The original:
f12-orginal

The final result:
f12-snowland

The MD5-hash of the WDSNBP.COM and PXEBOOT.COM-files in both x86 and x64 directories is the same so you only have to make the changes in one of them.
wdsnbp-md5-hash