This is intended to be a quick "recipe" for getting pxe and ltsp working together. There are other ways to accomplish the same thing, but this one is pretty straightforward. 1. Setup dhcp This is covered in detail in many other places, so I'm going to assume you have DHCP server setup, and configurure to give ip address to the machines you plan to netboot. This is required for PXE to function. 2. Setup a PXE server A PXE server is really just a DHCP proxy, that intercepts dhcp request from PXE clients, and adds in any additional info the clients may need. This can include a "boot menu" that allows you to choose from a list of different boot options. If you install the pxe server package in Red Hat Linux 6.1, and enable the pxe server, these options default to "install via pxe" and "boot locally" The easiest thing to do is to copy the pxe.conf file I included in this tarball as a starting point. It already has entries setup for bpbatch, and pxelinux. It needs to be copied to /etc/pxe.conf You can read though the /etc/pxe.conf for more information on what this is doing. It's basically telling the what tftpboot directory to find the various images and bootloaders at. By default, it uses images named after the dirname.0, .1, etc. I belive this can be overridden with options in the pxe.conf, but I never bother. Some more info on setting this up with Red Hat 6.1 can be found in the pxe-2md.txt file. 3. Make sure all the proper entries exist in /tftpboot The pxe server setup looks for all of its entries in /tftpboot/X86PC/UNDI/*/ Most default tftp setups should be able to handle this without any configuration changed. The exception is the hpa-tftpd server needed for pxelinux. It needs a extra commandline argument or two. The standard lines in /etc/inetd.conf are: #use this, the default tfpd, for bpbatch, netboot, etherboot, etc #tftp dgram udp wait root /usr/sbin/tcpd in.tftpd # use this for pxelinux tftp dgram udp wait root /usr/sbin/tcpd hpa-tftpd -s /tftpboot -r blksize 4. Setup ltsp The ltsp documentation covers this in more detail, but the basic thing is to run the "install.sh" script. This will put a mini-root into /tftpboot/lts/ltsroot directory. This directory needs to be exported via NFS as described in the LTSP docs. setup the /etc/exports, and either restart nfs, or run `exportfs -ra` 5. Configure the boot loaders I'll go on the assumption you are using either pxelinux, or bpbatch. I'll concentrate on pxelinux here since bpbatch is fairly well documented. pxelinux: pxelinux reads its config from a file in /tftpboot/X86PC/UNDI/pxelinux/pxelinux.cfg/ The name of the file is either the hex version of the IP address of the client, or "default". I tend to just use "default". Note that on the clients I have tried, pxelinux always thinks its ip address is 0000000. I dont know if this is a problem with the pxe boot rom, pxelinux, or what, but is easy enough to ignore. An example of the config file can be found in pxelinux/pxelinux.cfg/ default. This format is also described in the syslinux distribution in syslinux.doc. bpbatch: bpbatch will look in the directory from which the bpbatch boot loader was tftp'ed for a file called bpbatch.bpb by default. This can be changed with some dhcp/pxe server tweaking, but I dont really see any reason to. There is a _lot_ you can do with this file, including asking for passwd's and drawing minimal gui elements such as entry boxes and the like. But for our purposes, we really only want to boot a kernel, and pass it any options we need. The lines you need are: set CacheNever="ON" linuxboot "bzImage.new" "nfsroot=10.0.0.2:/tftpboot/lts/ltsroot" flavored to taste of course. The second option to the "linuxboot" line can include a full path to the kernel, and bpbatch will look in /tftpboot/ by default, so you may want to change this to "bpbatch/bzImage.new" 6. Try booting the client If all goes well, you should be able to boot the client and have it find its ip address, present a menu of options. You can choose a option, or let it default to the first one listed (in the example file, bpbatch), and hopefully will tftp the boot loader, which will then turnaround and tftp the kernel and pass it the commandline options included in the config files. 7. Troubleshooting * the pxe menu shows up, loads the pxe loader,but fails with tftp errors when it tries to grab the kernel. pxelinux requires the use of hpa-tftpd. More info on where to get this at the end of the docs. * bpbatch doesnt seem to find the kernel Make sure its path is right. bpbatch will look in tftpboot/ by default if a path isnt specified. It doesnt have any way of finding out it was launched from X86PC/UNDI/bpb/, so when bpbatch itself is running, it trys to access from /tftpboot * I had pxelinux working, but now bpbatch wont tftp bpbatch wont work with the hpa-tftpd server for some reason, so use the normal one. * I get "unable to mount root fs" or similar errors Make sure that the nfsroot= options you are passing the kernel are correct, and that they are getting passed to the kernel. Links http://www.kernel.org/pub/linux/utils/boot/syslinux/ Where to find pxelinux (its part of syslinux) http://www.kernel.org/pub/software/network/tftp/ the hpa-tfpd server needed with pxelinux http://www.web-sites.co.uk/nasm/ NASM, needed to compile pxelinux http://www.bpbatch.org/ Where to get bpbatch bootloader and docs http://cuiwww.unige.ch/info/pc/remote-boot/howto.html Remote boot mini-howto, on setting up and using bpbatch http://developer.intel.com/ial/wfm/tools/pxesdk20linux/ PXE sdk and info from Intel