I haven't had much time to get much further on this project, but here is a link to what I've accomplished so far and I've included the text below. I've successfully booted to a win98 boot disk over the network using PXE boot. Cheezy, I know..but it's a start
PXE Boot Linux Implementation
Introduction
This document steps through the process of setting up a client/server pxe boot environment. I assume you know your way around a linux box, how to install software packages, edit configuration files and navigate your way through the filesystems. This configuration works for me but may not neccessarily work in your environment. This document is meant to be used as a guide.
Prerequisites
You need a server running your favorite distribution of linux. This example uses Fedora Core 2 by RedHat. The client can be any machine that has a nic capable of booting over the network.
On your linux server:
Install 'dhcpd' - Assigns client an ip address used for the PXE boot
Install 'tftpd' - Trivial ftp server. The client connects to this to download the image files.
Install 'syslinux' - Inlucdes the pxelinux and memdisk utilities
Copy 'memdisk' to /tftpboot
Setup your /etc/dhcpd.conf
allow booting;
option subnet-mask 255.255.255.0;
group {
next-server 192.168.168.12; #IP address of the tftp server
filename "pxelinux.0"; #PXE boot image filename located in /tftpboot
}
subnet 192.168.168.0 netmask 255.255.255.0 {
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.168.255;
option domain-name-servers 192.168.168.12;
#entry for dhcp server. dhcpd complains without it.
host client-1 {
hardware ethernet 00:02:B3:EE:F8:FC; #mac address of dhcpd server
fixed-address 192.168.168.12; #ip address of dhcp server
filename "/tftpboot/client01";
}
#The client you want to boot over the network
host client-2 {
hardware ethernet 00:09:6B:FF:15

E;
fixed-address 192.168.168.101;
filename "pxelinux.0";
}
}
Setup your /tftpboot/pxelinux.cfg/default config file
default win98floppy
prompt 5
label local
LOCALBOOT 0
label win98floppy
kernel memdisk
append initrd=win.img
Build your first image file
As a proof of concept let us try to boot something simple like a Windows 98 boot floppy, but any boot floppy will do.
Put your boot floppy in the A: drive of your linux box and execute the following command to copy the contents of the floppy to the image file win.img.
dd if=/dev/fd0 of=/tftpboot/win.img bs=1024 count=1440
You can now remove the floppy.
Boot your client over the network
Make sure you have your client's nic configured to boot over the lan. Reboot your client. When prompted by the boot prompt type 'win98floppy'. You should see your client machine boot as if you had the 98 boot floppy in the A: drive.
Next...
The next thing I'd like to figure out is how to boot a larger OS such as Windows 2003 Server or Fedora for example. Obviously the entire OS will not fit into memory so we'll need to mount some kind of remote storage.
Please send questions or comments to klambert@earthmatrix.biz.
Kurin Lambert
klambert@earthmatrix.org