PXE Boot Server Configuration Using Linux

From Free Knowledge Base- The DUCK Project: information for everyone
Revision as of 11:33, 5 July 2007 by Admin (Talk | contribs)

Jump to: navigation, search

PXE is an acronym for Pre-Boot Execution Environment. To know what it does refer to the Pre-Boot Execution Environment page.

This document is a guide to configuration of a PXE boot server using Linux. It will be assumed that you already have an existing network with a Linux server that is responsible for assignment of DHCP addressing for your workstations. There are other guides to cover the configuration of a DHCP server.

You will need to install whatever packages are appropriate for your distribution to have PXE and TFTP.

  • Your DHCP server must also be your PXE boot server.
  • tftpd32 and PXELINUX

Redhat / Trustix Guide

Manual Configuration

1. You need to obtain the RPM package for PXE and the RPM package for TFTP and install them on the server.

2. Activate TFTP in xinetd

  • disable=yes to disable=no in /etc/xinetd.d/tftp
  • service xinetd restart

3. Get OS ready in the tftpboot directory

One way to do this is to create a folder and copy the OS install files into the folder. This is probably the most common way, however, there is an alternative that is pretty slick. If the media the OS install files come from are on CD, you can make an ISO image of the CD and mount that to the folder for PXE network installs.

4. Put the pxe boot linux kernel in the tftpboot directory

5. Configure /tftpboot/pxelinux.cfg

6. Create default configuration /tftpboot/pxelinux.cfg/default

7. For the client workstation to actually read the OS installation packages from the server, you may use HTTP, NFS, or SMB.

The PXE installation formula may be described as a combination of the following necessary packages:
  • PXE, TFTP, and HTTPD
  • PXE, TFTP, and NFS
  • PXE, TFTP, and Samba

HTTPD

After you copy the contents of the distribution or operating system media into a folder on the server drive you need to configure the httpd.conf file to reflect that server location. Edit the httpd.conf file (typically located in /etc/httpd/conf/httpd.conf)

<Directory /tftpboot/myOS>
Options Indexes
AllowOverride None
</Directory>

Alias /linux /tftpboot/myOS

NFS

This is the preferred option to use.

Samba

You will want to make sure you have Samba version 3 or above.

Example configuration for samba:

[OSINSTALL]
    path = /tftpboot/myOS
    browsable = true
    read only = No
    guest ok = Yes

You must set null passwords = true in smb.conf.

You also need to modify server name and path in SetupSourceDevice option of winnt.sif file.

Redhat Config Utility

Use the GUI Network Booting Tool on the Redhat server in XWindows.

If you do not have X installed, you can also use the console utility. The pxeos command line utility, which is part of the redhat-config-netboot package, can be used to configure the tftp server files.

pxeos -a -i "<description>" -p <NFS|HTTP|FTP> -D 0 -s client.example.com -L <net-location> <os-identifer>

Debian / (K)ubantu / Knoppix Guide

OpenWRT / WhiteRussian Guide

PXE booting defined to dhcp server on openwrt.

dnsmasq.conf example:

# filter what we send upstream
domain-needed
bogus-priv
filterwin2k
localise-queries

# allow /etc/hosts and dhcp lookups via *.roadrunner.cx
local=/roadrunner.cx/
domain=roadrunner.cx
expand-hosts

addn-hosts=/etc/hosts
resolv-file=/tmp/resolv.conf

# enable dhcp (start,end,netmask,leasetime)
dhcp-authoritative
dhcp-range=10.0.0.80,10.0.0.200,12h
dhcp-leasefile=/tmp/dhcp.leases

# use /etc/ethers for static hosts; same format as --dhcp-host
# <hwaddr> <ipaddr>
read-ethers

# other useful options:
# default route(s): dhcp-option=3,192.168.1.1,192.168.1.2
#    dns server(s): dhcp-option=6,192.168.1.1,192.168.1.2
dhcp-option=1,255.255.255.0
dhcp-option=2,7200
dhcp-option=3,10.0.0.1
dhcp-option=5,10.0.0.1
dhcp-option=6,10.0.0.1
dhcp-option=7,10.0.0.30
dhcp-option=15,roadrunner.cx
dhcp-option=17,10.0.0.30:/opt/ltsp-4.2/i386
dhcp-option=16,10.0.0.30
dhcp-option=42,10.0.0.1
dhcp-option=44,10.0.0.30
dhcp-option=48,10.0.0.30
dhcp-option=49,kde
dhcp-option=69,10.0.0.30
dhcp-option=70,10.0.0.30
dhcp-option=72,10.0.0.30
dhcp-option=128,10.0.0.30

dhcp-vendorclass=pxe,PXEClient
dhcp-vendorclass=eth,Etherboot
dhcp-option=vendor:PXEClient,1,0.0.0.0
dhcp-boot=net:pxe,/2.6.17.8-ltsp-1/pxelinux.0,mainframe.roadrunner.cx,10.0.0.30
dhcp-boot=net:eth,/lts/vmlinuz-2.6.16.8-ltsp-1,mainframe.roadrunner.cx,10.0.0.30