> 15498

February 7, 2010

author
uwk@squatterz.com

Network Booting

  • How it all works in Linux

    1. A client is powered on and goes through POST.
    2. PXE is loaded from firmware or gPXE is loaded from wherever.
    3. PXE then sends out DHCP requests to determine an IP address and boot information
    4. The DHCP server tells the client what IP address to use and tells it to load "pxelinux.0
    5. The client uses TFTP to download and run pxelinux.0 from the server.
    6. pxelinux.0 (on the client) then looks for a config file on the server using TFTP. It looks for pxelinux.cfg/mac address first and then pxelinux.cfg/default if it can't find a config file specific to its IP address.
    7. The client then uses TFTP to download a kernel file (and an initrd/miniroot if needed) from the server. The file names will be specified in the pxelinux config file.
    8. The client then executes the kernel file using the parameters (such as nfsroot=) listed in the pxelinux config file.
    9. The Linux being booted across the network should not be configured with an IP address or with DHCP. The DHCP has already happened and Linux will just continue to use that information.
    10. The /etc/fstab file should list the appropriate NFS mount as the root filesystem. It should be mounted normally (no fsck of course).
    11. At this point the client will work just as it would if it had booted from a hard drive.


See Also:

rarp -> bootp -> dchp

pxe - intel system for net booting

TFTP (simple ftp)

pxeLinux -- a kind of "grub" image selector network boot menu.

gPXE -- can netboot from this if nic doesn't have netboot onboard.

nfs - mount a nfs drive and your diskless workstation has a drive to run from. 

dnsmasq

DHCP Proxy

Pydhcplib -- Python DHCP Library

http://www.bootix.com/support/faq/network_boot_en.html#3

http://www.tcpipguide.com/free/t_TCPIPBootstrapProtocolBOOTP.htm

http://www.sanitarium.net/golug/netboot.html

http://www.debian-administration.org/articles/478

http://www.comptechdoc.org/independent/networking/guide/netbootpdhcp.html

https://help.ubuntu.com/community/UbuntuLTSP/ProxyDHCP