Setting Up A PXE Install Server For Multiple Linux Distributions With Ubuntu Edgy Eft - Page 2

Want to support HowtoForge? Become a subscriber!
 
Submitted by falko (Contact Author) (Forums) on Mon, 2006-12-18 19:16. ::

4 Set Up Ubuntu Edgy Eft Netboot

Now we are ready to set up the netboot for our first distribution, Ubuntu Edgy Eft (i386). The necessary files for the netboot can be found on http://archive.ubuntu.com/ubuntu/dists/edgy/main/installer-i386/current/images/netboot/. We download the files now and copy them to the /var/lib/tftpboot directory. This is the directory from where our PXE server will serve the installation images:

cd /tmp
lftp -c "open http://archive.ubuntu.com/ubuntu/dists/edgy/main/installer-i386/current/images/; mirror netboot/"
mv netboot/* /var/lib/tftpboot
rm -fr netboot

(You can download the files from any other Ubuntu mirror as well. Use one that is close to you.)

That's it already. Now have a look at the file /var/lib/tftpboot/pxelinux.cfg/default to get familiar with its structure:

vi /var/lib/tftpboot/pxelinux.cfg/default

DISPLAY ubuntu-installer/i386/boot-screens/boot.txt

F1 ubuntu-installer/i386/boot-screens/f1.txt
F2 ubuntu-installer/i386/boot-screens/f2.txt
F3 ubuntu-installer/i386/boot-screens/f3.txt
F4 ubuntu-installer/i386/boot-screens/f4.txt
F5 ubuntu-installer/i386/boot-screens/f5.txt
F6 ubuntu-installer/i386/boot-screens/f6.txt
F7 ubuntu-installer/i386/boot-screens/f7.txt
F8 ubuntu-installer/i386/boot-screens/f8.txt
F9 ubuntu-installer/i386/boot-screens/f9.txt
F0 ubuntu-installer/i386/boot-screens/f10.txt

DEFAULT install

LABEL install
        kernel ubuntu-installer/i386/linux
        append vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16417 root=/dev/ram rw  --
LABEL linux
        kernel ubuntu-installer/i386/linux
        append vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16417 root=/dev/ram rw  --
LABEL server
        kernel ubuntu-installer/i386/linux
        append base-installer/kernel/linux/extra-packages-2.6= pkgsel/install-pattern=~t^ubuntu-standard$ pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16417 root=/dev/ram rw  --

LABEL expert
        kernel ubuntu-installer/i386/linux
        append priority=low vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16417 root=/dev/ram rw  --
LABEL server-expert
        kernel ubuntu-installer/i386/linux
        append base-installer/kernel/linux/extra-packages-2.6= pkgsel/install-pattern=~t^ubuntu-standard$ pkgsel/language-pack-patterns= pkgsel/install-language-support=false priority=low vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16417 root=/dev/ram rw  --

LABEL rescue
        kernel ubuntu-installer/i386/linux
        append vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16417 root=/dev/ram rw  rescue/enable=true --

PROMPT 1
TIMEOUT 0

As you see, this file contains all valid installation options (linux, server, expert, etc.) for Ubuntu Edgy Eft, each in its own LABEL stanza. All paths in this file are relative to the /var/lib/tftpboot directory, so ubuntu-installer/i386/initrd.gz translates to /var/lib/tftpboot/ubuntu-installer/i386/initrd.gz. The output of

ls -la /var/lib/tftpboot

should look like this now:

root@server1:~# ls -la /var/lib/tftpboot/
total 25052
drwxr-xr-x  9 root root    4096 2006-12-14 19:25 .
drwxr-xr-x 21 root root    4096 2006-12-14 15:01 ..
-rw-r--r--  1 root root 8315725 2006-10-21 02:42 boot.img.gz
-rw-r--r--  1 root root 8849408 2006-10-21 02:42 mini.iso
-rw-r--r--  1 root root 8381337 2006-10-21 02:42 netboot.tar.gz
-rw-r--r--  1 root root   13156 2006-10-21 02:44 pxelinux.0
drwxr-xr-x  2 root root    4096 2006-12-14 19:39 pxelinux.cfg
drwxr-xr-x  4 root root    4096 2006-12-14 16:15 ubuntu-installer

When a client computer boots up over the network, it will look for the file /var/lib/tftpboot/pxelinux.cfg/default and load it, so that's the file we have to modify later on when we add more Linux distributions to our PXE server.

 

5 Our First Test

(Please make sure that the computers that you don't want to reinstall have the network boot option disabled in their BIOS settings because otherwise it is possible that you or someone else accidentally installs Ubuntu over the existing operating system!)

Now you can boot up your first client computer. Make sure you specified in its BIOS settings that it should use the network as its first boot device. If everything goes well, you should see the usual Ubuntu installation screen, and you can choose from one of the installation options from the /var/lib/tftpboot/pxelinux.cfg/default file, e.g. linux for a normal Ubuntu desktop, server, etc..

Don't forget to change the order of the boot devices after the successful installation (e.g. disable booting over the network and make the HDD the first boot device) because otherwise you will start another installation!


Please do not use the comment function to ask for help! If you need help, please use our forum.
Comments will be published after administrator approval.
Submitted by NZLamb (registered user) on Mon, 2007-03-19 00:57.

First I'd like to thank you for a very useful and informative article. This has certainly helped me to get PXE set up on Linux much faster than figuring it all out myself. :)

One thing I'd like to point out is that if you intend on using PXE to deploy an OS to the hard disk of the target computers it is much easier and safer to simply press F12 during POST then muck about with the BIOS settings. F12 should make the machine perform a once-off network boot and saves a huge amount of time when deploying to multiple machines as no other configuration is required. This has long been the standard procedure for 'big-brand' corporate desktop PCs and has been adopted by most white box manufacturers as well.