You can boot a Linux kernel directly from a web server using gPXE. The kernel, initial ramdisk and other boot-time files (e.g. kernel modules for the network card) can also be loaded from the same web server. There is no need to create dedicated ramdisk images containing drivers for each network card you want to be able to boot from.
BIOS boot screen, showing gPXE downloading the individual components via HTTP:
Booted Linux OS, with network up and running:
It is possible to boot Windows Server 2003 from an iSCSI disk using gPXE. This provides a direct replacement for commercial products such as winBoot/i.
Here you can see the Device Manager in Windows Server 2003 showing that the only disk in the system is an “IET VIRTUAL-DISK” attached via iSCSI:
gPXE has a command shell built in, which allows you to interact with the system and run commands even before the DHCP request takes place. You can assign IP addresses, check network interface statistics, manually download files, and so on.
gPXE also supports script files, which are just sequences of commands; a typical script might look something like
#!gpxe kernel http://www.etherboot.org/boot/vmlinuz vga=788 initrd http://www.etherboot.org/boot/initrd.img boot
gPXE allows you to store settings in the NIC EEPROM. Though most network configuration is handed out via DHCP, it can be useful to be able to store certain information (such as iSCSI login usernames and passwords) on the NIC itself.
A simple configuration user interface is provided: