Montag, 11. Mai 2009

Creating a PXE boot for Jaunty Live.

Requires:
Ubuntu server for PXE environment (tested on Jaunty 9.04 server).
Wired network.
PXE boot capable network card on target machine.
On the Ubuntu server:

Login as root or sudo su -

Create the following directory structure:
/pxe

/pxe/images

/pxe/images/ubuntu

/pxe/pxelinux.cfg
Download syslinux from here:
http://www.kernel.org/pub/linux/utils/boot/syslinux/


Extract the files.

Find menu.c32 & pxelinux.0 & copy them to the /pxe directory.

The other syslinux files & zip are no longer needed and can be deleted.

create a file /pxe/pxelinux.cfg/default & paste in the following:
DEFAULT menu.c32
PROMPT 0
NOESCAPE 0
ALLOWOPTIONS 0
TIMEOUT 600

MENU TITLE PXE Boot Menu

LABEL Ubuntu Jaunty Live Desktop
kernel images/ubuntu/casper/vmlinuz
append boot=casper netboot=nfs nfsroot=192.168.1.101:/pxe/images/ubuntu initrd=images/ubuntu/casper/initrd.gz -- splash

LABEL Ubuntu Jaunty Live Install
kernel images/ubuntu/casper/vmlinuz
append boot=casper netboot=nfs nfsroot=192.168.1.101:/pxe/images/ubuntu initrd=images/ubuntu/casper/initrd.gz -- splash only-ubiquity
Copy the contents of the Ubuntu live CD into /pxe/images/ubuntu

Now install dnsmasq & nfs-kernel-server
apt-get install dnsmasq nfs-kernel-server
edit /etc/dnsmasq.conf & replace all text with:
no-hosts
server=/localnet/192.168.1.1
dhcp-range=192.168.1.40,192.168.1.50,2h
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/pxe
resolv-file=/etc/nameservers
dhcp-option=3,192.168.1.1
Make sure you replace the ip addresses with ones suitable for your network.

edit /etc/exports & replace all text with:
/pxe/images *(ro,sync,subtree_check)

Add your DNS nameservers by creating the new file (this example is for opendns):

nano /etc/nameservers
nameserver 208.67.222.222
nameserver 208.67.220.220
Reboot your server (or restart dnsmasq & nfs-kernel-server).


You should now be able to boot your target client machine to Ubuntu if it has a pxeboot enabled network card (usually accessed by pressing F12 at boot).