Ubuntu 9.10 uses initrd.lz instead of initrd.gz, so PXE booting like you did in previous versions does not work.
This article assumes you’ve already downloaded the iso and have a working PXE boot server.
First, copy the contents of the iso to a directory we can work with
mkdir /tmp/910mount -o loop ubuntu-9.10-desktop-i386.iso /tmp/910
cp -r /tmp/910 /tftpboot
Convert initrd.lz to initrd.gz
cd /tftpboot/910/caspermkdir initrd
cp initrd.lz initrd
cd initrd
lzma -dc -S .lz initrd.lz | cpio -id
rm initrd.lz
find . | cpio –quiet –dereference -o -H newc | gzip -9 > initrd.gz
cp initrd.gz /tftpboot/910/casper
Now add the appropriate lines to pxelinux (Example: /tftpboot/pxelinux.cfg/default)
LABEL Ubuntu 9.10 i386 Unmodified Livecd
KERNEL 910/casper/vmlinuz
APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=192.168.0.1:/home/tftpboot/910 initrd=910/casper/initrd.gz quiet splash --
Make sure /tftpboot is shared via nfs; in /etc/exports add the following line
/tftpboot/910 192.168.0.0/24(rw,async,no_subtree_check)
Reload the NFS server
/etc/init.d/nfs-kernel-server reload