This is an old revision of the document!

Starting from scratch:

  • Install the latest version of Fedora
    • For this step, I used a LiveCD onto a VirtualBox machine
  • PXE Boot requires the following packages be installed
    • tftp-server
    • xinetd
    • dhcp
    • syslinux
  • This is as easy as 'sudo yum install dhcp tftp-server xinetd syslinux'

This is my configuration for dhcp. Change values in here as required. /etc/dhcp/dhcpd.conf :

  ignore client-updates;
  subnet netmask {
       range; # total 15 addresses allocated
       default-lease-time 86400; #1 day lease time for extended boots
       max-lease-time 86400; # only 1 day lease - no more - no less
       option ip-forwarding off;
       option broadcast-address;
       option subnet-mask;
       filename "/pxelinux.0";
       option tftp-server-name "";

Point of note: You must have a address assigned to a NIC for the DHCP server to broadcast on.

/etc/xinetd.d/tftp :

Notably: change 'disable = yes' to 'disable = no'

The following is the tftpd configuration file. Change '/sto/tftpboot' to the directory where you'll be hosting your files. If you're making this directory from scratch, please note this dir must have 0x777 permissions for the tftp daemon to access and host it.

service tftp {
      disable = no
      socket_type             = dgram
      protocol                = udp
      wait                    = yes
      user                    = root
      server                  = /usr/sbin/in.tftpd
      server_args             = -s /sto/tftpboot -v -v -p
      per_source              = 11
      cps                     = 100 2
      flags                   = IPv4

If you're using the IPTables firewall, you will need to add the following lines to allow DHCP and TFTP traffic directed at the server.

/etc/sysconfig/iptables :

-A INPUT -m state -m tcp --state NEW --dports 67,68 -j ACCEPT
-A INPUT -m state -m udp --state NEW --dports 67,68 -j ACCEPT
-A INPUT -m state -m tcp --state NEW --dport 69 -j ACCEPT

This is how I structured my filesystem. You may move the root tftpboot directory wherever you like, but the substructure must remain the same.

Filesystem structure:

|-- menu.c32
|-- pxelinux.0
|-- pxelinux.cfg/
|   -- default

You will need to copy both pxelinux.0 and menu.c32 from /usr/share/syslinux into this directory for PXE to boot into the menu successfully.

Within /tftpboot/pxelinux.cfg/default , the bare minimum must contain the following lines:

MENU TITLE PXEBoot Server.  Use at own risk.
LABEL local
      MENU LABEL (local)
MENU end

I have found it easier to simply disable SELinux on my PXE server boxes if only to remove needless hassle.

Follow the following links for instructions on how to add individual boot options.

networking/pxe_boot_server.1279480785.txt.gz · Last modified: 2017/02/05 22:43 (external edit)
Back to top
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0