I had a laptop where the cdrom drive was broken, and the BIOS didn't support boot from USB, I decided to try a PXE install. There is a lot of guides around the net, but I really had problems getting it to work. Most refers to the netboot installation option, which is not so obvious to find for Ubuntu 10.04. I found a nice, and simple, working solution here.
The only thing I made different was using dhcp3 instead of dnsmasq, because I followed some of the other guides to start with. Also to test the recommended TFTP server, install the tftp-hpa package:
sudo apt-get install tftp-hpa
Then try to load the pxelinux.0 file with it:
cd /tmp tftp <server_ip> -c get pxelinux.0 ls -l pxelinux.0
It should show a pxelinux.0 file around 14kB.
The way the iso image is mounted is important, the TFTP share is chroot'ed so it must be below the /var/lib/tftpboot/ directory. I added the following to the servers /etc/fstab file:
<path to ubuntu-10.04.1-desktop-i386.iso> /var/lib/tftpboot/iso-image/lucid udf,iso9660 user,loop 0 0 /var/lib/tftpboot/iso-image /media/iso-image none user,rbind 0 0
And at last add the wanted shares in /etc/exports:
Restart all server programs:
/etc/init.d/tft-hpa restart /etc/init.d/dhcp3-server restart /etc/init.d/nfs-kernel-server restart
I have disabled the dhcp server in my router, I don't now if it would cause problems.