I have a box setup with DNSmasq (DHCP & TFTP enabled) for network boot to installer using local repository.

The install machine gets its IP, the installer goes through all of the boot processes, sets up network, accepts the repository, then goes to a blank screen with a blinking cursor.

PXE default file:

default install
label install
kernel ubuntu-installer/i386/linux
append ks=http://192.168.50.1/ks.cfg vga=normal initrd=/var/lib/tftpboot/ubuntu-installer/i386/initrd.gz ramdisk_size=1643 root=/ rw --

Kickstart file:

#Generated by Kickstart Configurator
#platform=x86

#System language
lang en_US
#Language modules to install
langsupport en_US
#System keyboard
keyboard us
#System mouse
mouse
#System timezone
timezone America/Phoenix
#Root password
rootpw --disabled
#Initial user
user ubuntu1 --fullname "Ubuntu user" --iscrypted --password $1$xqCxTCb2$.tHLDuomMT/OaCS1gOwn3/
#Reboot after installation
reboot
#Use text mode install
text
#Install OS instead of upgrade
install
#Use Web installation
url --url 192.168.50.1/ubuntu/
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel
#Disk partitioning information
part --fstype ext4 --size 1 --grow --asprimary
part swap --size 1024
part /boot --fstype ext4 --size 256 --asprimary
#System authorization infomation
auth --useshadow --enablemd5
#Network information
network --bootproto=dhcp --device=eth0
#Firewall configuration
firewall --disabled --trust=eth0 --http
#X Window System configuration information
xconfig --depth=8 --resolution=1024x768 --defaultdesktop=GNOME --startxonboot

%packages
ubuntu-minimal
openssh-server
screen
curl
wget