Checklist:
Prepare the configuration server:
Install packages
Configure DHCP and TFTP to provide pxe-boot image files
Configure lighttpd to serve operating system files
Prepare kickstart configuration file
Start client; intercept boot and request net boot
Note: the steps below expect all servers (dhcp, tftp and web) to be on the same physical machine, here: 192.168.1.100. Both the installation server, and anticipated clients are Ubuntu machines.
----------------------
Step 1.
(a) Install dhcp3 server. This will provide the initial network boot, for the client's PXE start.
$ sudo apt-get install dhcp3-server
(b) Edit its configuration.
Add the subnet info, leave all other elements of the file as they are.
$ sudo vi /etc/dhcp3/dhcpd.conf
ddns-update-style none;
# option definitions common to all supported networks...
option domain-name "example.com";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.111 192.168.1.222;
option domain-name-servers 212.135.1.36; # your DNS server
option domain-name "internal.example.com"; # your domain name
option routers 192.168.1.254; # your gateway
option broadcast-address 192.168.1.255;
filename "pxelinux.0";
}
(c) Start dhcp server.
$ sudo /etc/init.d/dhcp3-server start
----------------------
Step 2.
(a) Install tftpd-hpa (and its super-daemon, inetd):
$ sudo apt-get install openbsd-inetd tftpd-hpa
(b) Modify the main tftp setup file, in /etc/default/tftpd-hpa, to have the content as shown.
$ sudo vi /etc/default/tftpd-hpa
TFTP_USERNAME=”tftp”
TFTP_DIRECTORY=”/srv/tftp”
TFTP_OPTIONS=”--secure”
TFTP_ADDRESS=”192.168.1.100:69”
The address above is the IP address of your tftp server.
(c) Start the inetd superdaemon
$ sudo /etc/init.d/openbsd-inetd start
Starting internet superserver inetd [ OK ]
(d) Check the tftpd is now active:
$ netstat -a | grep tftp
udp 0 0 *:tftp *:*
----------------------
Step 3.
Copy the netboot files into the tftp server. (Check lftp is there, if not – install it, with sudo apt-get install lftp).
$ sudo mkdir -p /srv/tftp/
$ cd /srv/tftp/
$ sudo lftp -c “open
http://archive.ubuntu.com/ubuntu/dis...ages/netboot/; mirror”
----------------------
Step 4.
(a) Edit /srv/tftp/pxelinux.cfg/default and change string menu.cfg into text.cfg.
After the change, the file should look as follows:
include ubuntu-installer/i386/boot-screens/text.cfg
default ubuntu-installer/i386/boot-screens/vesamenu.c32
prompt 0
timeout 0
(b) Modify the /srv/tftp/ubuntu-installer/i386/boot-screens/text.cfg file to have the following content:
timeout 1
default auto
label auto
menu label ^Auto
menu default
kernel ubuntu-installer/i386/linux
append vga=normal initrd=ubuntu-installer/i386/initrd.gz ks=http://192.168.1.100/ubuntu/ks.cfg -- quiet
----------------------
Step 5.
(a) Install lighttpd (may need to stop apache first, if running).
$ sudo /etc/init.d/apache2 stop # if running
$ sudo apt-get install lighttpd
(b) Ensure that the root directory is /srv/www (the default /var/www could be used, but we follow proper FHS rules here ;-). This will serve all installation files. The url directive in the kickstart file will direct the installation program to this web page.
$ sudo vi /etc/lighttpd/lighttpd.conf
change the document-root directive to read as follows:
server.document-root = "/srv/www/"
(c) Start lighttpd
$ sudo /etc/init.d/lighttpd start
----------------------
Step 6.
Populate the the web server with the installation files.
Here, we will get the installation files from the Ubuntu installation CD (assumes Ubuntu installation CD is in the drive on the server machine, and mounted).
$ sudo mkdir /srv/www/ubuntu
$ sudo cp -rv /dev/sr0/* /srv/www/ubuntu
(time for a cuppa)