Load Etherboot from a Windows 2000/XP NT loader

This page describes a possibility to add Etherboot to a Windows 2000/Windows XP only machine.

Standard disclaimer:

Make a backup. Following the steps described on this page might very well destroy your operating system, data or mp3 files on your hard drive, or even worse things. I tried this at home, and it worked fine. I recommend you to try this on a non-production system before deploying a solution based on the methods described below.

Example setup

I have a Windows-XP only machine that I want to run as Etherboot terminal, besides ocasionally using the Windows it came preinstalled with. It is a laptop machine with onboard NIC, so flashing a ROM or fiddling with the BIOS is no option. Creating partitions or changing the current paritioning at all (only one NTFS drive) is no option either. So, lilo will not work. A standard grub setup will not work. Etherboot can not directly be loaded by NTLoader.

Tools needed

Requirements

Step by step

I first downloaded the NTFS capable grub installer package from http://www.geocities.com/lode_leroy/grubinstall/ (the binary installer file will do). I got a .tar.gz file (luckily WinZIP opens those) and decompressed it into the directory C:\boot

Make sure you now have the following files in C:\boot:

Go to Rom-O-Matic and fetch an etherboot image in .zlilo format. I chose to “configure ROM” and set the delay to “-1” seconds - meaning no delay at all. Save that .zlilo file to C:\boot\etherb.zli (I chose that filename and use it throughout this example. If you want, call it “winnieh.poo” :-)

Create a file C:\boot\menu.lst with the following contents:

default 0 
timeout 0 
hiddenmenu 
title Etherboot 
root (hd0,0) 
kernel /boot/etherb.zli

Open a “Command prompt” (Run “cmd”) and enter

cd \boot 
grubinstall 

If you got something like

NTFS mount succeeded 
stage1(12489151) 
version=3.2 
boot_drive=0xff 
force_lba=0 
stage2_address=0x8000 
stage2_sector=12489151 
stage2_segment=0x800 
stage2(12489151+214) 
213 sectors to load from sector 12489152 at 0x820 
menu '(hd0,0)/boot/menu.lst' 
stage2 configured on (hd0,0). 

it probably worked OK.

Next, mark all files in C:\boot to be “system files” and “read-only” (else a defragmentation might scatter those files over the harddrive, bringing grub into trouble) Edit the file C:\boot.ini, adding a line under the [operating systems] section like

C:\boot\stage1="Etherboot"  

Reboot your machine

An operating system chooser should come up, offering Etherboot as one of the boot options. If you run it, grub should be loaded, immediately followed by etherboot, which should find your network card and do the usual DHCP/TFTP steps