Quick Start, Building PXE Server

2003-08-28 fm. http://www.linux.duke.edu/doc/pxe-Quick-Start.ptml

download pxe_server_quickstart.zip (8 kb)

 

Step by step on configuring a working PXE server integrated with the pxelinux boot loader from a fresh install of Red Hat Linux from the campus DULUG install server.

PXE Server Setup

Install the tftp server and pxe server
yum install tftp-server pxe
Get the pxelinux boot loader.
The pxelinux boot loader is bundled in the syslinux tar file. Retrieve this from http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-2.00.tar.gz. (Or latest version in that directory.)
Copy the boot loader into place.
After expanding the compressed tar archive, copy the file 'pxelinux.0' into your tftpboot area. As in the following example:
cp syslinux-2.00/pxelinux.0 /tftpboot/X86PC/UNDI/linux-install/
Create the pxelinux configuration directory.
The boot loader expects a directory to be present in the same directory it was loaded from. It expects this directory to be named pxelinux.cfg, and looks for a file in that directory based on the IP address of the machine. If it does not find a file whose name is based on the IP address, it will look for a file named default.
Create configuration files.
Here is an example pxelinux configuration file named default.
serial 0 9600 0xab3
default localboot
timeout 100
prompt 1
display display.msg

label localboot
        LOCALBOOT 0

label 7.3
        kernel vmlinuz-7.3
        append initrd=initrd-7.3.img lang= lowres devfs=nomount ramdisk_size=8192 console=ttyS0,9600
Create the display message file.
In the above pxelinux configuration file, there was a display.msg reference with the display keyword. Below is an example file:
PXE Booting to install Red Hat Linux.

Current images are:
Localboot -- Exit PXE, boot locally

7.3 --- For Red Hat Linux 7.3 interactive installation
Make available the kernel and initrd.
The kernel and initrd images are available from the images/pxeboot directory of the install image. (The install image is either on the CD or the base of the individual version's filesystem tree on an ftp/http/file server.) For example, to retrieve the images from the campus DULUG install server, go to http://install.dulug.duke.edu/pub/linux/dulug-7.3/i386/images/pxeboot/. In this directory, get the files vmlinuz and initrd-everything.img. These are the installation kernel and initial ram disk, respectively, for the 7.3 distribution of Red Hat Linux.
Rename the files to suit the boot loader configuration.
The filenames of the kernel and the initial RAM disk must match the configuration entries in the pxelinux configuration file. To suit the running example:
mv initrd-everything.img initrd-7.3.img
mv vmlinuz ../vmlinuz-7.3
Configure the PXE server configuration file.
With the Red Hat Linux RPM, the PXE server is configured by default to work with the NBP (Network Boot Prompt), which does not work with this example. Additionally, this example opts to have workstations boot off the network by default, load the pxelinux, and then time out to local boot from the pxelinux boot loader.

The two sections that need to be changed look like:

[X86PC/UNDI/linux-install/ImageFile_Name]
0
2
linux

and

[X86PC/UNDI/MENU]
0,Local Boot
13,Remote Install Linux
# 14,Remote Boot Linux

Those sections should look like:

[X86PC/UNDI/linux-install/ImageFile_Name]
0
0
pxelinux

and

[X86PC/UNDI/MENU]
#0,Local Boot
13,Remote Install Linux
# 14,Remote Boot Linux
Confirm that the appropriate services are accessible.
The main services that must be started and accessible for the PXE booting process are:

The way to check is to use chkconfig.

[root linux-install]# /sbin/chkconfig --list tftp
tftp            off
[root linux-install]# /sbin/chkconfig tftp on
[root linux-install]# /sbin/chkconfig --list xinetd
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off
[root linux-install]# /sbin/chkconfig --list pxe
pxe             0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root linux-install]# /sbin/chkconfig pxe on

In the above example, tftp was not configured to start by default, nor was pxe. However, xinetd was. To configure tftp and pxe to start automatically, chkconfig <service> on was run. Since tftp is a part of xinetd, as long as xinetd is running, nothing past the chkconfig tftp on needs to be done to use the tftp service. However, pxe must be started at this point to begin using it prior to a reboot. The below example illustrates confirming that xinetd is running as well as starting pxe.

[root etc]# /sbin/service xinetd status
xinetd (pid 821) is running...
[root etc]# /sbin/service pxe status
pxe is stopped
[root etc]# /sbin/service pxe start
Starting pxe:                                              [  OK  ]
Add the PXE entries to /etc/services.
While not required, it may be helpful to add the PXE service entries to the /etc/services file.
pxe   67/udp
pxe 4011/udp