Install And Configure PXE Server And Client On CentOS 6.5

PXE Server, stands for preboot execution environment, is used to enable a network computer to boot only from a network interface card. This method will be very helpful, if a System Administrator wants to install many systems which doesn’t have a CD/DVD device on the network. PXE environment needs a DHCP server that distributes the IP addresses to the client systems, and a TFTP server that downloads the installation files to the PXE clients. You don’t need any CD/DVD or USB bootable drives to install client systems. Just, copy the ISO images on the PXE server and start installing your Linux clients via network using PXE server.

Scenario

My test box(pxe server) details are given below:

  • OS: CentOS 6.5 Minimal Installation.
  • IP Address: 192.168.1.150/24.
  • SELinux disabled on PXE server.
  • IP tables stopped on PXE server.

In this tutorial, we are going to setup PXE server On CentOS 6.5 server, and install CentOS 6.5 32bit edition on our client system using the PXE server.

Installation

First, you should Install and configure DHCP server on your PXE server. To install and configure DHCP server, refer the following link:

Now, install the following packages for setting up PXE environment:

yum install httpd xinetd syslinux tftp-server -y

Configure PXE Server

Copy the following TFTP configuration files to the /var/lib/tftpboot/ directory.

cd /usr/share/syslinux/
cp pxelinux.0 menu.c32 memdisk mboot.c32 chain.c32 /var/lib/tftpboot/

Edit file /etc/xinetd.d/tftp

vi /etc/xinetd.d/tftp

Enable TFTP server. To d this, change “disable=yes” to “no”.

 # default: off
 # description: The tftp server serves files using the trivial file transfer \
 #       protocol.  The tftp protocol is often used to boot diskless \
 #       workstations, download configuration files to network-aware printers, \
 #       and to start the installation process for some operating systems.
 service tftp
 {
 socket_type             = dgram
 protocol                = udp
 wait                    = yes
 user                    = root
 server                  = /usr/sbin/in.tftpd
 server_args             = -s /var/lib/tftpboot
 disable                 = no
 per_source              = 11
 cps                     = 100 2
 flags                   = IPv4
}

Next, create a directory to store CentOS installation ISO image. and mount the image to that directory as shown below. I have CentOS 6.5 32bit ISO image on my /root directory.

mkdir /var/lib/tftpboot/centos6_i386
mount -o loop /root/CentOS-6.5-i386-bin-DVD1.iso /var/lib/tftpboot/centos6_i386

Note: If you want to install CentOS 64bit edition, make a relevant directory called centos6_x86_64 (/var/lib/tftpboot/centos6_x86_64).

Create a apache configuration file for PXE server under /etc/httpd/conf.d/ directory:

vi /etc/httpd/conf.d/pxeboot.conf

Add the following lines:

Alias /centos6_i386 /var/lib/tftpboot/centos6_i386

<Directory /var/lib/tftpboot/centos6_i386>
Options Indexes FollowSymLinks
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 192.168.1.0/24
</Directory>

Save and close the file.

Then, create a configuration directory for PXE server:

mkdir /var/lib/tftpboot/pxelinux.cfg

Now, create PXE server configuration file under the pxelinux.cfg:

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

Add the following lines:

default menu.c32
prompt 0
timeout 300
ONTIMEOUT local

menu title ########## PXE Boot Menu ##########

label 1
menu label ^1) Install CentOS 6 i386 Edition
kernel centos6_i386/images/pxeboot/vmlinuz
append initrd=centos6_i386/images/pxeboot/initrd.img method=http://192.168.1.150/centos6_i386 devfs=nomount

label 2
menu label ^2) Boot from local drive localboot

Save and close the file.

Configure DHCP Server

Now, we have to configure the DHCP server to work with PXE server.

Edit file /etc/dhcp/dhcpd.conf,

vi /etc/dhcp/dhcpd.conf

Add the following lines at the end:

allow booting;
allow bootp;
option option-128 code 128 = string;
option option-129 code 129 = text;
next-server 192.168.1.150;
filename "pxelinux.0";

Save and close the file.

Now, We have come to the end of PXE server configuration. Restart all the services to complete the configuration.

service xinetd restart
service httpd restart
service dhcpd restart

Congratulations! We have completed the PXE server configuration.

PXE Client Configuration

The client may be any system that has network boot enabled option (PXE boot). You can enable this option in your Bios settings.

Due to lack of resources, I have created a Virtual Machine client on my Oracle VirtualBox.

Open up the Oracle VirtualBox. Click on the New button in the menu bar.

Oracle VM VirtualBox Manager_001

Enter the Virtual machine name.

Create Virtual Machine_002

Enter the RAM size to the Virtual machine.

Create Virtual Machine_003

Select “Create a virtual hard drive now” option and click Create.

Create Virtual Machine_003

Select the Virtual hard drive file type. If you don’t know to what to select, leave the default option and click Next.

Create Virtual Hard Drive_005

Select whether the new virtual hard drive file should grow as it is used or if it should be created as fixed size.

Create Virtual Hard Drive_006

Enter the Virtual hard drive size.

Create Virtual Hard Drive_007

That’s it. Our Virtual Client machine has been created. Now, we should make the client to boot from the network. To do that, go to the Vitual machine Settings option.

Oracle VM VirtualBox Manager_008

Select the System tab on the left, and Choose Network from the boot order option on the right side.

CentOS 6.5 Client - Settings_009

Then, go to the Network tab and select “Bridged Adapter” from the “Attached to” drop down box.

CentOS 6.5 Client - Settings_011

Once you done all the above steps, click OK to save the changes. That’s it. Now power on the Virtual client system. You should see the following screen.

CentOS 6.5 Client [Running] - Oracle VM VirtualBox_012

That’s it. Now you know what to know next. Start installing CentOS on your client using the PXE server.

CentOS 6.5 Client [Running] - Oracle VM VirtualBox_013

Good luck!

To setup PXE server in CentOS 7.x systems, refer the following link.

Reference: CentOS Wiki