Booting from a TFTP server has the advantage that you do not have to recreate a boot-medium every time you change a binary. Thus, for development and debugging, the use of a TFTP server is highly recommended. Each current distribution has a TFTP server package. If you want to load binaries via PXE from your TFTP server you will need tftp-hpa.
Once you installed the TFTP server it can be started on demand by inserting the following line into your /etc/inetd.conf (if it isn't already):
tftp dgram udp wait.5000 root /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
The last parameter in the line (/tftpboot) tells the TFTP server where to look for files. If this directory does not exist, create it. Also create a directory boot in your home directory. Then create a symbolic link from that boot directory to a sub-directory with your user name in tftpboot:
cd /tftpboot ln -s /home/<your login>/boot <your login>
Put your menu.lst files and binaries into that directory or link them. You can, for instance, link the bin directory from your build directory into your boot directory. Now, each entry in the menu.lst that loads from the TFTP server will fetch the files from your boot directory. The menu.lst entry:
module (nd)/tftpboot/<your login>/bin/x86/bootstrap
Will load the file bootstrap from your boot directory. You have to specify the full path (including tftpboot) because you can specify more than one directory as parameters for in.tftpd and the TFTP server has to know which to look in. Please consult the man page of the TFTP server for further details.
When booting with QEmu's TFTP server, you do not have to have a running TFTP server, but the layout of the directories should be the same.
If you are the sole user of the TFTP server you may, of course, specify the boot directory directly as the parameter of the TFTP server. In a multi-user environment with a single TFTP server the above setup proved useful.