While re-purposing a few old Google Search Appliances I set up a Network Boot Enviornment as follows:
Install Dependencies
yum install tftp-server tftp syslinux httpd dhcp
Configure tftp
mkdir /tftpboot
vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s -v /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
service xinetd restart
Change tftp Permissions
chown -R nobody /tftpboot
Copy the Boot Files and DVD Files
cp /usr/share/syslinux/{pxelinux.0,menu.c32,memdisk,mboot.c32,chain.c32} /tftpboot
Next I copied ISO files for CentOS distributions to the machine and mounted them loopback to retrieve files from them – copying the files necessary for booting under the tftpboot directory and also copying the DVD contents to the web root so later the installer can access the installation media:
mkdir -p /var/www/html/images/centos/{i386,x86_64}/6.4/
mount -o loop ./CentOS-6.4-i386-bin-DVD1.iso /mnt
cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /tftpboot/images/centos/i386/6.4/
cp -R /mnt/* /var/www/html/images/centos/i386/6.4/
umount /mnt
mount -o loop ./CentOS-6.4-x86_64-bin-DVD1.iso /mnt
cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /tftpboot/images/centos/x86_64/6.4/
cp -R /mnt/* /var/www/html/images/centos/x86_64/6.4/
Test tftp is working
cd /tmp
tftp 192.168.1.10
get pxelinux.0
Configure DHCP
vi /etc/dhcp/dhcpd.conf
I used the basic configuration below:
allow booting;
allow bootp;
option domain-name "qub.ac.uk";
option subnet-mask 255.255.255.0;
option domain-name-servers 143.117.6.66, 143.117.14.13;
authoritative;
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.11 192.168.1.31;
next-server 192.168.1.10;
filename "pxelinux.0";
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
host mynewmachine {
hardware ethernet 00:15:17:79:B9:78;
fixed-address 192.168.1.60;
}
}
Add CentOS to the Menu
vi /tftpboot/pxelinux.cfg/default
DISPLAY boot.txt
DEFAULT centos6
LABEL centos6_64
kernel images/centos/x86_64/6.4/vmlinuz
append ks vga=normal initrd=images/centos/x86_64/6.4/initrd.img ramdisk_size=100000 ip=dhcp url --url http://192.168.1.10/images/centos/x86_64/6.4/
LABEL centos6_32
kernel images/centos/i386/6.4/vmlinuz
append ks vga=normal initrd=images/centos/i386/6.4/initrd.img ramdisk_size=100000 ip=dhcp url --url http://192.168.1.10/images/centos/i386/6.4/
PROMPT 1
TIMEOUT 0
vi /tftpboot/boot.txt
- Boot Menu - ============= centos6_64 centos6_32
Boot the Target Computer
When booting the target computer you can watch the progress on the server with:
tail -f /var/log/messages
The target computer should display the contents of the boot.txt file with a boot: prompt. At the prompt type “centos6_64” and press enter. The CentOS installation should then proceed.
If there are any problems check:
- The permissions of the /tftpboot directory and files
- The /var/log/messages contents
- Consider switching off iptables and SElinux