A lot goes into PXE booting, but its incredibly easy to use when you have the pieces straight. Most everything you would want to know is covered here: http://syslinux.zytor.com/pxe.php Since I'm on a documentation festival, here's a quick and dirty how-to: You will need: 1. a Dhcp server 2. a tftp server I recomend the dhcpd server from the ISC: http://www.isc.org/index.pl No need to go compiling it, I'm fairly certain every distro and all of the BSDs come with it. The package is usually called dhcpd. The one file we are going to worry about is /etc/dhcpd.conf, there are some differences between v2 and v3, we'll assume this is a v3 dhcpd. Here's a sample /etc/dhcpd.conf that will hand off to a tftp server on 192.168.0.7: ddns-update-style none; allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { # default gateway option routers 192.168.0.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.0; option domain-name-servers 192.168.0.2, 192.168.0.3; range 192.168.0.60 192.168.0.100; next-server 192.168.0.7; filename "pxelinux.0"; } If you want to be careful about what hosts get what IP address, or just don't want random desktops booting linux because some joker put the network card first in the boot order: ddns-update-style none; allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { # default gateway option routers 192.168.0.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.0; option domain-name-servers 192.168.0.2, 192.168.0.3; range 192.168.0.60 192.168.0.100; group { next-server 192.168.0.7; filename "pxelinux.0"; host hal { hardware ethernet 00:30:48:80:0F:66; fixed-address 192.168.0.23; option routers 192.168.0.1; option subnet-mask 255.255.255.0; } } } All the dhcp server is giving out is normal ip and network info and the one additional bit, next-server. This will tell a PXE based card to make a tftp connection to 192.168.0.7 and ask for "pxelinux.0" from its root directory. Most distros also come with a tftp server of some sort, I recommend tftpd-hpa: http://www.kernel.org/pub/software/network/tftp/ Most distros will run tftpd from inetd, so edit /etc/inetd.conf to suit, for Slackware this is the usual: tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -v -s /tftpboot Create the directory /tftpboot and unpack the contents of bsl-tftp-eviron.tar.gz inside there and you should be ready to go... assuming you have restarted inetd Debugging this can be a pain since you really cant debug much from the client side. On the server side, that -v option will log a lot to syslog. Also, the biggest pitfall I kept running accross was if you have iptables rules loaded you will probably also need to load the module: ip_conntrack_tftp