Configuring a PXE Server for BIOS-based AMD64 and Intel 64 Clients

The following procedure will prepare the PXE server for booting BIOS-based AMD64 and Intel 64 systems.

Procedure 1. Configuring PXE Boot for BIOS-based Systems

  1. Install the tftp package. To do this, run the following command as root:

# yum install tftp-server

  1. In the /etc/xinetd.d/tftp configuration file, change the disabled parameter from yes to no.

Other options controlling the tftp server behavior are also available in this configuration file. Available options are described in the xinetd.conf(5) man page.

  1. Allow incoming connections to the tftp service in the firewall:

# firewall-cmd –add-service=tftp


The above command only enables access until the next server reboot. To allow access permanently, add the –permanent option. For more information about firewall configuration in Red Hat Enterprise Linux, see the Red Hat Enterprise Linux 7 Security Guide.

  1. Configure your DHCP server to use the boot images packaged with SYSLINUX. If you do not have one installed, see the Red Hat Enterprise Linux 7 Networking Guide for instructions.

A sample configuration in the /etc/dhcp/dhcpd.conf file might look like:

option space pxelinux;

option pxelinux.magic code 208 = string;

option pxelinux.configfile code 209 = text;

option pxelinux.pathprefix code 210 = text;

option pxelinux.reboottime code 211 = unsigned integer 32;

option architecture-type code 93 = unsigned integer 16;


subnet netmask {

option routers;



class “pxeclients” {

match if substring (option vendor-class-identifier, 0, 9) = “PXEClient”;



if option architecture-type = 00:07 {

filename “uefi/shim.efi”;

} else {

filename “pxelinux/pxelinux.0”;




  1. You now need the pxelinux.0 file from the SYSLINUX package in the ISO image file. To access it, run the following commands as root:

# mount -t iso9660 /path_to_image/name_of_image.iso /mount_point -o loop,ro

# cp -pr /mount_point/Packages/syslinux-version-architecture.rpm /publicly_available_directory

# umount /mount_point

Extract the package:

# rpm2cpio syslinux-version-architecture.rpm | cpio -dimv

  1. Create a pxelinux/ directory within tftpboot/ and copy the pxelinux.0 file into it:

# mkdir /var/lib/tftpboot/pxelinux

# cp publicly_available_directory/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux

  1. Add a configuration file named default to the pxelinux/ directory.

A sample configuration file at /var/lib/tftpboot/pxelinux/default might look like:

default vesamenu.c32

prompt 1

timeout 600


display boot.msg


label linux

menu label ^Install system

menu default

kernel vmlinuz

append initrd=initrd.img ip=dhcp inst.repo=

label vesa

menu label Install system with ^basic video driver

kernel vmlinuz

append initrd=initrd.img ip=dhcp inst.xdriver=vesa nomodeset inst.repo=

label rescue

menu label ^Rescue installed system

kernel vmlinuz

append initrd=initrd.img rescue

label local

menu label Boot from ^local drive

localboot 0xffff


The inst.repo= Anaconda option, shown in the example above, must always be used to specify the installation program’s image as well as the installation source. Without this option, the installation program will be unable to boot. For more information about boot options for Anaconda, see Section 20.1, “Configuring the Installation System at the Boot Menu”.

  1. Copy the boot images into your tftp/ root directory:

# cp /path/to/x86_64/os/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/pxelinux/

  1. Finally, start the tftp, xinetd and dhcp services if they were not running before, or reload their updated configurations if they have been running during this procedure.

If these services were not running before, start them:

# systemctl start tftp.service xinetd.service dhcpd.service

If you want to enable these services permanently so that they are automatically started after each system reboot, also execute the following command:

# systemctl enable tftp.service xinetd.service dhcpd.service

To reload configurations of already running services, use the following instead:

# systemctl reload tftp.service xinetd.service dhcpd.service


After finishing this procedure, the PXE server is ready to start the network installation. You can now start the system you want to install Red Hat Enterprise Linux on, select PXE Boot when prompted to specify a boot source, and start the network installation.