Every honest and good system administrator is continue bussy with automating his work. For two reasons:
- Repeating the same task over and over again is friggin boring. A system administrator has better things to do, such as drinking coffee.
- Humans make mistakes, especially if boring. Computers do not.
If a computer can do a certain job, it wil do it always faster and better than a human. Automating system installation is both more time efficient and allows you to deliver a constant quality.
Netbooting or PXE booting
Regarding the installation of hosts, the holy grail of automated installation is netbooting or PXE booting. Almost every system today contains a network interface card that supports booting over the network. A system obtains instructions from the local DHCP server where to obtain an operating system kernel. This kernel is obtained using TFTP and then loaded. From then on, the operating system takes over and the installation continues, for example based on Debian preseeding and/or FAI.
How to prepare for netbooting
The following requirements must be met:
- a DHCP server must be available
- a TFTP server must be avaialble
- the correct files for netbooting must be in place
Configuring the DHCP server
The following two lines must be added to the 'subnet' section of your DHCP server configuration.
filename "pxelinux.0"; next-server 10.0.0.1;
The 'next-server' section specifies the IP-address of the system that is running the TFTP server, so change it based on your configuration, this is just an example.
Don't forget to restart the DHCP server daemon.
Configuring the TFTP server
First, make sure you install "tftpd-hpa" since the standard "tftpd" server does not seem to support the "tsize" option. Then, edit /etc/defaults/tftpd- hpa like this:
RUN_DAEMON="yes" OPTIONS="-l -a -R 30000:30100 -s /var/lib/tftpboot"
Do not run the TFTP server from inetd because the above lines provide more control over how the server behaves, especially in regard to firewalls.
The -R option specifies the port-range used for data transfers. This port range should also be configured within your firewall configuration. Watch out! Do not allow TFTP access from the Internet. TFTP requires NO authentication and is very insecure.
Start the TFTPD server with:
Install the files required for netbooting
The fun thing is that Debian provides a complete package for netbooting. So cd to /var/lib/tftpboot and enter:
wget http://ftp.debian.org/debian/dists/lenny/main/installer-i386/current /imag es/netboot/netboot.tar.gz
Then extract the contents of netboot.tar.tz like:
tar xzf netboot.tar.gz
That is all there is to it. If you start a host and make it boot using PXE, it will show you the regular installation menu that is also shown when a system is booted from a regular Debian installation CD-ROM.
However, if you want automated installation and not use this boot menu, first cd to:
Then edit syslinux.cfg and comment this rule out:
If you want to use preseeding, first edit adtxt.cfg and goto label auto. Edit label auto like this:
label auto menu label ^Automated install kernel debian-installer/i386/linux append auto=true priority=critical vga=normal initrd=debian-installer/i386/initrd.gz url=http://(IP-address)/preseed/preseed.cfg -- quiet
The IP-address section should point towards the preseed server that is hosting the preseed configuration file.
Last, edit txt.cfg. Change 'default install' to:
I always though that PXE booting was a pain to setup. However, I got it working within 60 minutes using this howto.