# TFTP and DHCP Server (dnsmasq)
**dnsmasq** is a light-weight server that combines DHCP, DNS and TFTP services in the same service. It thus distributes IP addresses to computers on the local network via the DHCP protocol, ensures that hostnames can be resolved by DNS, and that computers can boot from the network (to install new Ubuntu clients).
## Making dnsmasq work
Actually, network-manager messes up dnsmasq, so we need to do this:
1. edit /etc/NetworkManager/NetworkManager.conf file with you lovest editor
1. comment the line dns=dnsmasq
1. restart the network manager : sudo restart network-manager
See also: http://askubuntu.com/a/279539
## /etc/dnsmasq.d/fair
dhcp-range=192.168.10.20,192.168.10.255,12h
listen-address=192.168.10.1
enable-tftp
tftp-root=/var/tftp
dhcp-boot=pxelinux.0
dhcp-option=3,192.168.10.1
dhcp-option=6,192.168.10.1
dhcp-option=42,192.168.10.1 # NTP server
interface=eth0
address=/intranet/192.168.10.1
address=/intranet.fair/192.168.10.1
address=/repository.fair/192.168.10.1
address=/#/192.168.10.1
## Other resources
* http://www.ubuntugeek.com/howto-setup-advanced-tftp-server-in-ubuntu.html
* https://help.ubuntu.com/community/Installation/QuickNetboot
## TFTP files
### Fetch Ubuntu network boot image
The following commands shows the origin of the install program for computers which use network boot. The install program is a compressed filesystem which was downloaded from the main Ubuntu servers.
mkdir /var/tftp
cd /var/tftp/
wget http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-i386/current/images/netboot/netboot.tar.gz
tar zxf netboot.tar.gz
chown -R nobody: .
chmod -R 777 /var/tftp/
### Configuring PXE Boot Menu
* Ubuntu 10.04: '''/var/tftp/ubuntu-installer/i386/boot-screens/text.cfg'''
* Ubuntu 10.10: '''/var/tftp/ubuntu-installer/i386/boot-screens/txt.cfg'''
This configuration file creates the menu that is shown at start-up on computers that boot from the network.
default local
timeout 10
label local
menu label ^Boot from hard drive
menu default
localboot 0
label fair_http
menu label ^Automatic Ubuntu Install
kernel ubuntu-installer/i386/linux
append vga=normal initrd=ubuntu-installer/i386/initrd.gz ks=http://192.168.10.1/ks.cfg ksdevice=eth0 -- quiet
label install
menu label ^Manual Ubuntu Install
kernel ubuntu-installer/i386/linux
append vga=788 initrd=ubuntu-installer/i386/initrd.gz -- quiet
label cli
menu label ^Command-line install
kernel ubuntu-installer/i386/linux
append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=ubuntu-installer/i386/initrd.gz -- quiet
### Further PXE configuration
In '''pxelinux.cfg/default''', you can change '''timeout''' to a non-zero value to make the system automatically boot to hard drive after for instance 5 seconds!