Universal Network Boot Disk

What better way is there to compliment your new universal Ghost image and impress your boss then a universal network boot disk? A PXE server? OK, so maybe it’s not the greatest thing in the world, but it sure beats carrying around lots of floppies with you. Not to digress, but why is it that we are still using floppies? The IBM PC was invented in 1981 and here it is 2005 and just last year Microsoft sent out a white paper to companies pleading with them to support booting from USB Flash Devices (UFD). Come on guys, wake up! UFDs are bigger, more reliable and a lot more fun than floppies. Now that Windows PE 2005 supports booting from UFDs we need to pressure these companies to support booting from them.

OK, back to the network boot disk. The one I’m talking about is Bart’s Network Boot Disk. One word: freeware. Yes, freeware! I love Bart! He’s also the one that makes PE Builder. Check it out: it’s very cool stuff! Download the full BFD package and extract it to a directory. Now execute “bfd msnet A:” from the command line. This will make a self-booting network boot disk using the MS-DOS 7.1 files (an interesting side note here is that Bart has had legal problems with Microsoft and PE Builder. It’s a mystery then why he would bundle the MS-DOS 7.1 files directly into this package even though these files are available in particularly every corner of the Internet). Congrats, you just made a universal network boot disk!

Listed on the same page are driver CAB files for practically every NIC ever made! Now here’s the slick part: you can just drop in the CAB files you need into A:libndis and the disk will rebuild itself accordingly! How cool is that? You’ll notice that the drivers haven’t been updated for at least 2 years and may not include support for the latest NICs. That was the problem when we got in motherboards supporting the Intel 915 chipset. The network boot disk would not find the NIC and even when we manually picked it off the menu the driver would not work (it was a variant of the Intel Pro 100VE). Let’s look into how the boot disk works. Every PCI device has a unique hexadecimal id. Let’s boot from the network boot disk you created and run pciscan -v:

We can clearly see that there are vendor ids and device ids. Based on these two pieces of information the boot disk can determine what driver to load. If you download PCISCAN from his web site it gives a much better explaination then I give. PCISCAN gets its information from nic.map. Let’s look for this vendor id in this file:

ret=”SMCPWR2.COM”
ven=10B8 “SMC”
dev=0005 “SMC9432TX EtherPower II 10/100”
ven=1011 “DEC”
dev=0002 “DC21040”
0014 “DC21041”
0009 “DC21140”
0019 “DC21143”

There is it! I booted the disk using Virtual PC 5 and this is the type of NIC it emulates. So 1011=DEC and 0009 = model DC21140. Let’s take a look inside one of these CAB files sitting in A:libndis:

  • e100b.dos
  • e100b.ini
  • ndis.pci
  • ndis.txt

If we look into ndis.pci for the above driver this is what it looks like:

ret=”E100B”
ven=8086 “Intel”
dev=1002 “PRO 100 Mobile Adapters”
1031 “PRO/100 VE Network Connection”
1032 “PRO/100 VE Network Connection”
1035 “PRO/100 VM Network Connection”

So in the case of us getting the new computers in with the Intel 915 chipset we just had to get a new .DOS file and update the .PCI file with the correct hexadecimal id. You can get the latest .DOS file easily by visiting Intel’s web site. They have DOS drivers for all their NICs. We can use PCISCAN or PCI32 to find the hexadecimal id of the NIC and then add that with the appropriate description. Finally, we have to repackage them back up into a CAB file. You can download makev3.zip from here to do that.

The other advantages to this disk are that it randomizes the NETBIOS name so you can use it in multiple computers at the same time. You can also setup a profile which will save the work group or domain name so you don’t have to keep entering it each time. I editted the disk so that it just boots without sitting at the menu asking if you want emm386 support or not. The other thing I changed is the prompt for the second password. This can be fixed by editting the msnet.bat in msnet.cab. Make the following changes:

—————-in this section——————-
:_logon
echo MSNET: Network logon as “%p_user%”
net logon %p_user% %w_passwd% /yes /savepw:no
———————end————————-

change to:

—————-change this——————-
net logon %p_user% %w_passwd% /domain:%logondomain% /yes /savepw:no
———————end————————-

—————-in this section——————-
echo MSNET: Starting network services
net start workstation
if errorlevel 1 goto _abort
———————end————————

add:

——————add this———————–
echo %w_passwd%> password.txt
———————end————————-

That gets rid of the second prompt for the password. Again, note that you will have to use makev3 to repackage the files extracted from msnet.cab back into a CAB file. Note that since this is a DOS boot disk you’ll also need WINS support on your network to make it work. DNS alone will not cut it! The bad news is the new 64-bit processors won’t do 16-bit applications or true DOS anymore! Hopefully Windows PE will be well supported for booting purposes by the time 64-bit processing becomes popular. You can port this boot disk to a UFD as well, making boot time in 12 seconds or less so when you have inpatient techs like DAVE it will go faster for them!

– Soli Deo Gloria

Leave a Reply

Your email address will not be published. Required fields are marked *