<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.8" />
<title>pxelinux(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}


#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
pxelinux(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>pxelinux -
   The Syslinux derivative PXELINUX for PXE network booting
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content">pxelinux.0</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p><strong>PXELINUX</strong> is a Syslinux derivative, for booting Linux off a network
server, using a network ROM conforming to the Intel PXE (Pre-Execution
Environment) specification.  <strong>PXELINUX</strong> is <em>*not*</em> a program that is
intended to be flashed or burned into a PROM on the network card; if
you want that, check out Etherboot (<a href="http://www.etherboot.org/">http://www.etherboot.org/</a>).
Etherboot 5.4 or later can also be used to create a PXE-compliant boot
PROM for many network cards.</p></div>
<div class="paragraph"><p>PXELINUX generally requires that full file pathnames are 127 characters or shorter in length.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_current_directory">CURRENT DIRECTORY</h2>
<div class="sectionbody">
<div class="paragraph"><p>The initial current working directory is either as supplied by DHCP
option 210 (pxelinux.pathprefix), the hardcoded path-prefix or the
parent directory of the PXELINUX file, as indicated by DHCP fields
<em>sname</em> and <em>file</em> (sname="192.168.2.3" and file="boot/pxelinux.0"
results in "tftp://192.168.2.3/boot/", "192.168.2.3::boot/" in older
PXELINUX format) with precedence specified under <strong>OPTIONS</strong>.</p></div>
<div class="paragraph"><p>All unqualified filenames are relative to the current directory.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_configuration">CONFIGURATION</h2>
<div class="sectionbody">
<div class="paragraph"><p>See <strong>syslinux.cfg</strong>(5) for the format of the contents.</p></div>
<div class="paragraph"><p>Because more than one system may be booted from the same server, the
configuration file name depends on the IP address of the booting
machine.  After attempting the file as specified in the DHCP or
hardcoded options, PXELINUX will probe the following paths, prefixed
with "pxelinux.cfg/", under the initial current working directory:</p></div>
<div class="ulist"><ul>
<li>
<p>
The client UUID if provided by the PXE stack (note, some BIOSes don&#8217;t
have a valid UUID, and you might end up with something like all 1&#8217;s.)
This is in the standard UUID format using lower case hexadecimal digits,
e.g. b8945908-d6a6-41a9-611d-74a6ab80b83d.
</p>
</li>
<li>
<p>
The hardware type (using its ARP type code) and address, all in lower
case hexadecimal with dash separators; for example, for an Ethernet (ARP
type 1) with address 88:99:AA:BB:CC:DD it would search for the filename
01-88-99-aa-bb-cc-dd.
</p>
</li>
<li>
<p>
The client&#8217;s IPv4 address in upper-case hexidecimal (ie 192.168.2.91
&#8594; C0A8025B; you can use the included progam "gethostip" to compute the
hexadecimal IP address for any host.) followed by removing characters,
one at a time, from the end.
</p>
</li>
<li>
<p>
"default"
</p>
</li>
</ul></div>
<div class="paragraph"><p>Starting in release 3.20, if PXELINUX can not find a configuration file,
it will reboot after the timeout interval has expired.  This keeps a
machine from getting stuck indefinitely due to a boot server failure.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p><strong>PXELINUX</strong> (starting with version 1.62) supports the following
nonstandard DHCP options, which depending on your DHCP server you may be
able to use to customize the specific behaviour of <strong>PXELINUX</strong>.  See RFC
5071 for some additional information about these options. Options for
<strong>PXELINUX</strong> can be specified by DHCP options or hardcoded into the
binary.</p></div>
<div class="sect2">
<h3 id="_option_priority">Option Priority</h3>
<div class="paragraph"><p>Hardcoded after-options are applied after DHCP options (and overrride)
while hardcoded before-options are applied prior to DHCP options and
default behavior takes the lowest priority.</p></div>
</div>
<div class="sect2">
<h3 id="_dhcp_options">DHCP options</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>Option 208</strong> (pxelinux.magic)
</dt>
<dd>
<p>
Earlier versions of <strong>PXELINUX</strong> required this to be set to F1:00:74:7E
(241.0.116.126) for <strong>PXELINUX</strong> to recognize any special DHCP options
whatsoever.  As of <strong>PXELINUX</strong> 3.55, this option is deprecated and is no
longer required.
</p>
</dd>
<dt class="hdlist1">
<strong>Option 209</strong> (pxelinux.configfile)
</dt>
<dd>
<p>
Specifies the initial <strong>PXELINUX</strong> configuration file name which may be
qualified or unqualified.
</p>
</dd>
<dt class="hdlist1">
<strong>Option 210</strong> (pxelinux.pathprefix)
</dt>
<dd>
<p>
Specifies the <strong>PXELINUX</strong> common path prefix, instead of deriving it from
the boot file name.  This almost certainly needs to end in whatever
character the TFTP server OS uses as a pathname separator, e.g. slash
(/) for Unix.
</p>
</dd>
<dt class="hdlist1">
<strong>Option 211</strong> (pxelinux.reboottime)
</dt>
<dd>
<p>
Specifies, in seconds, the time to wait before reboot in the event of
TFTP failure.  0 means wait "forever" (in reality, it waits
approximately 136 years.)
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_hardcoded_options">Hardcoded options</h3>
<div class="paragraph"><p>Since version 3.83, the program "pxelinux-options" can be used to
hard-code DHCP options into the pxelinux.0 image file; this is
sometimes useful when the DHCP server is under different
administrative control.  Hardcoded options</p></div>
<div class="literalblock">
<div class="content">
<pre><code>  6 =&gt; 'domain-name-servers',
 15 =&gt; 'domain-name',
 54 =&gt; 'next-server',
209 =&gt; 'config-file',
210 =&gt; 'path-prefix',
211 =&gt; 'reboottime'</code></pre>
</div></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_http_ftp">HTTP/FTP</h2>
<div class="sectionbody">
<div class="paragraph"><p>Since version 5.10, a special PXELINUX binary, lpxelinux.0, natively
supports HTTP and FTP transfers, greatly increasing load speed and
allowing for standard HTTP scripts to present PXELINUX&#8217;s configuration
file.  To use http or ftp, use standard URL syntax as filename; use the
DHCP options below to transmit a suitable URL prefix to the client, or
use the "pxelinux-options" tool provided in the utils directory to
program it directly into the lpxelinux.0 file.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_filename_syntax">FILENAME SYNTAX</h2>
<div class="sectionbody">
<div class="paragraph"><p>PXELINUX supports the following special pathname conventions:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>::filename</strong>
</dt>
<dd>
<p>
Suppresses the common filename prefix, i.e. passes the string "filename"
unmodified to the server.
</p>
</dd>
<dt class="hdlist1">
<strong>IP address::filename</strong> (e.g. 192.168.2.3::filename)
</dt>
<dd>
<p>
Suppresses the common filename prefix, <strong>and</strong> sends a request to an alternate TFTP server.  Instead of an IP address, a DNS name can be used.  It will be assumed to be fully qualified if it contains dots; otherwise the local domain as reported by the DHCP server (option 15) will be added.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>:: was chosen because it is unlikely to conflict with operating system
usage.  However, if you happen to have an environment for which the
special treatment of :: is a problem, please contact the Syslinux
mailing list.</p></div>
<div class="paragraph"><p>Since version 4.00, PXELINUX also supports standard URL syntax.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_keeppxe">KEEPPXE</h2>
<div class="sectionbody">
<div class="paragraph"><p>Normally, PXELINUX will unload the PXE and UNDI stacks before invoking
the kernel.  In special circumstances (for example, when using MEMDISK
to boot an operating system with an UNDI network driver) it might be
desirable to keep the PXE stack in memory.  If the option "keeppxe"
is given on the kernel command line, PXELINUX will keep the PXE and
UNDI stacks in memory.  (If you don&#8217;t know what this means, you
probably don&#8217;t need it.)</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_configuration_filename">Configuration filename</h3>
<div class="paragraph"><p>For DHCP siaddr 192.168.2.3, file <em>mybootdir/pxelinux.0</em>, client UUID
b8945908-d6a6-41a9-611d-74a6ab80b83d, Ethernet MAC address
88:99:AA:BB:CC:DD and IPv4 address 192.168.2.91, the following files in
this order will be attempted (after config-file options):</p></div>
<div class="literalblock">
<div class="content">
<pre><code>mybootdir/pxelinux.cfg/b8945908-d6a6-41a9-611d-74a6ab80b83d
mybootdir/pxelinux.cfg/01-88-99-aa-bb-cc-dd
mybootdir/pxelinux.cfg/C0A8025B
mybootdir/pxelinux.cfg/C0A8025
mybootdir/pxelinux.cfg/C0A802
mybootdir/pxelinux.cfg/C0A80
mybootdir/pxelinux.cfg/C0A8
mybootdir/pxelinux.cfg/C0A
mybootdir/pxelinux.cfg/C0
mybootdir/pxelinux.cfg/C
mybootdir/pxelinux.cfg/default</code></pre>
</div></div>
</div>
<div class="sect2">
<h3 id="_tftp_servers">TFTP servers</h3>
<div class="paragraph"><p>For best results, use a TFTP server which supports the "tsize" TFTP
option (RFC 1784/RFC 2349).  The "tftp-hpa" TFTP server, which support
options, is available at:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>http://www.kernel.org/pub/software/network/tftp/
ftp://www.kernel.org/pub/software/network/tftp/</code></pre>
</div></div>
<div class="paragraph"><p>and on any kernel.org mirror (see <a href="http://www.kernel.org/mirrors/">http://www.kernel.org/mirrors/</a>).</p></div>
<div class="paragraph"><p>Another TFTP server which supports this is atftp by Jean-Pierre
Lefebvre:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>ftp://ftp.mamalinux.com/pub/atftp/</code></pre>
</div></div>
<div class="paragraph"><p>If your boot server is running Windows (and you can&#8217;t fix that), try
tftpd32 by Philippe Jounin (you need version 2.11 or later; previous
versions had a bug which made it incompatible with PXELINUX):</p></div>
<div class="literalblock">
<div class="content">
<pre><code>http://tftpd32.jounin.net/</code></pre>
</div></div>
</div>
<div class="sect2">
<h3 id="_dhcp_config_simple">DHCP config: Simple</h3>
<div class="paragraph"><p>The PXE protocol uses a very complex set of extensions to DHCP or
BOOTP.  However, most PXE implementations&#8201;&#8212;&#8201;this includes all Intel
ones version 0.99n and later&#8201;&#8212;&#8201;seem to be able to boot in a
"conventional" DHCP/TFTP configuration.  Assuming you don&#8217;t have to
support any very old or otherwise severely broken clients, this is
probably the best configuration unless you already have a PXE boot
server on your network.</p></div>
<div class="paragraph"><p>A sample DHCP setup, using the "conventional TFTP" configuration,
would look something like the following, using ISC dhcp 2.0 dhcpd.conf
syntax:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>allow booting;
allow bootp;

# Standard configuration directives...

option domain-name "&lt;domain name&gt;";
option subnet-mask &lt;subnet mask&gt;;
option broadcast-address &lt;broadcast address&gt;;
option domain-name-servers &lt;dns servers&gt;;
option routers &lt;default router&gt;;

# Group the PXE bootable hosts together
group {
        # PXE-specific configuration directives...
        next-server &lt;TFTP server address&gt;;
        filename "/tftpboot/pxelinux.0";

        # You need an entry like this for every host
        # unless you're using dynamic addresses
        host &lt;hostname&gt; {
                hardware ethernet &lt;ethernet address&gt;;
                fixed-address &lt;hostname&gt;;
        }
}</code></pre>
</div></div>
<div class="paragraph"><p>Note that if your particular TFTP daemon runs under chroot (tftp-hpa
will do this if you specify the -s (secure) option; this is highly
recommended), you almost certainly should not include the /tftpboot
prefix in the filename statement.</p></div>
</div>
<div class="sect2">
<h3 id="_dhcp_config_pxe_1">DHCP Config: PXE-1</h3>
<div class="paragraph"><p>If the simple config does not work for your environment, you probably
should set up a "PXE boot server" on port 4011 of your TFTP server; a
free PXE boot server is available at:</p></div>
<div class="paragraph"><p><a href="http://www.kano.org.uk/projects/pxe/">http://www.kano.org.uk/projects/pxe/</a></p></div>
<div class="paragraph"><p>With such a boot server defined, your DHCP configuration should look
the same except for an "option dhcp-class-identifier" ("option
vendor-class-identifier" if you are using DHCP 3.0):</p></div>
<div class="listingblock">
<div class="content">
<pre><code>allow booting;
allow bootp;

# Standard configuration directives...

option domain-name "&lt;domain name&gt;";
option subnet-mask &lt;subnet mask&gt;;
option broadcast-address &lt;broadcast address&gt;;
option domain-name-servers &lt;dns servers&gt;;
option routers &lt;default router&gt;;

# Group the PXE bootable hosts together
group {
        # PXE-specific configuration directives...
        option dhcp-class-identifier "PXEClient";
        next-server &lt;pxe boot server address&gt;;

        # You need an entry like this for every host
        # unless you're using dynamic addresses
        host &lt;hostname&gt; {
                hardware ethernet &lt;ethernet address&gt;;
                fixed-address &lt;hostname&gt;;
        }
}</code></pre>
</div></div>
<div class="paragraph"><p>Here, the boot file name is obtained from the PXE server.</p></div>
</div>
<div class="sect2">
<h3 id="_dhcp_config_encapsulated">DHCP Config: Encapsulated</h3>
<div class="paragraph"><p>If the "conventional TFTP" configuration doesn&#8217;t work on your clients,
and setting up a PXE boot server is not an option, you can attempt the
following configuration.  It has been known to boot some
configurations correctly; however, there are no guarantees:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>allow booting;
allow bootp;

# Standard configuration directives...

option domain-name "&lt;domain name&gt;";
option subnet-mask &lt;subnet mask&gt;;
option broadcast-address &lt;broadcast address&gt;;
option domain-name-servers &lt;dns servers&gt;;
option routers &lt;default router&gt;;

# Group the PXE bootable hosts together
group {
        # PXE-specific configuration directives...
        option dhcp-class-identifier "PXEClient";
        option vendor-encapsulated-options 09:0f:80:00:0c:4e:65:74:77:6f:72:6b:20:62:6f:6f:74:0a:07:00:50:72:6f:6d:70:74:06:01:02:08:03:80:00:00:47:04:80:00:00:00:ff;
        next-server &lt;TFTP server&gt;;
        filename "/tftpboot/pxelinux.0";

        # You need an entry like this for every host
        # unless you're using dynamic addresses
        host &lt;hostname&gt; {
                hardware ethernet &lt;ethernet address&gt;;
                fixed-address &lt;hostname&gt;;
        }
}</code></pre>
</div></div>
<div class="paragraph"><p>Note that this <strong>will not</strong> boot some clients that <strong>will</strong> boot with the
"conventional TFTP" configuration; Intel Boot Client 3.0 and later are
known to fall into this category.</p></div>
</div>
<div class="sect2">
<h3 id="_dhcp_config_isc_dhcpd_options">DHCP Config: ISC dhcpd options</h3>
<div class="paragraph"><p>ISC dhcp 3.0 supports a rather nice syntax for specifying custom
options; you can use the following syntax in dhcpd.conf if you are
running this version of dhcpd:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>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;</code></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><code>NOTE: In earlier versions of PXELINUX, this would only work as a
"site-option-space".  Since PXELINUX 2.07, this will work both as a
"site-option-space" (unencapsulated) and as a "vendor-option-space"
(type 43 encapsulated.)  This may avoid messing with the
dhcp-parameter-request-list, as detailed below.</code></pre>
</div></div>
<div class="paragraph"><p>Then, inside your PXELINUX-booting group or class (whereever you have
the PXELINUX-related options, such as the filename option), you can
add, for example:</p></div>
<div class="listingblock">
<div class="content">
<pre><code># Always include the following lines for all PXELINUX clients
site-option-space "pxelinux";
option pxelinux.magic f1:00:74:7e;
if exists dhcp-parameter-request-list {
        # Always send the PXELINUX options (specified in hexadecimal)
        option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
}
# These lines should be customized to your setup
option pxelinux.configfile "configs/common";
option pxelinux.pathprefix "/tftpboot/pxelinux/files/";
option pxelinux.reboottime 30;
filename "/tftpboot/pxelinux/pxelinux.bin";</code></pre>
</div></div>
<div class="paragraph"><p>Note that the configfile is relative to the pathprefix: this will look
for a config file called /tftpboot/pxelinux/files/configs/common on
the TFTP server.</p></div>
<div class="paragraph"><p>The "option dhcp-parameter-request-list" statement forces the DHCP
server to send the PXELINUX-specific options, even though they are not
explicitly requested.  Since the DHCP request is done before PXELINUX
is loaded, the PXE client won&#8217;t know to request them.</p></div>
<div class="paragraph"><p>Using ISC dhcp 3.0 you can create a lot of these strings on the fly.
For example, to use the hexadecimal form of the hardware address as
the configuration file name, you could do something like:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>site-option-space "pxelinux";
option pxelinux.magic f1:00:74:7e;
if exists dhcp-parameter-request-list {
        # Always send the PXELINUX options (specified in hexadecimal)
        option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
}
option pxelinux.configfile =
        concat("pxelinux.cfg/", binary-to-ascii(16, 8, ":", hardware));
filename "/tftpboot/pxelinux.bin";</code></pre>
</div></div>
<div class="paragraph"><p>If you used this from a client whose Ethernet address was
58:FA:84:CF:55:0E, this would look for a configuration file named
"/tftpboot/pxelinux.cfg/1:58:fa:84:cf:55:e".</p></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_known_issues">KNOWN ISSUES</h2>
<div class="sectionbody">
<div class="paragraph"><p>The following problems are known with PXELINUX, so far:</p></div>
<div class="ulist"><ul>
<li>
<p>
The error recovery routine doesn&#8217;t work quite right.  For right now,
  it just does a hard reset - seems good enough.
</p>
</li>
<li>
<p>
We should probably call the UDP receive function in the keyboard
  entry loop, so that we answer ARP requests.
</p>
</li>
<li>
<p>
Boot sectors/disk images are not supported yet.
</p>
</li>
</ul></div>
<div class="paragraph"><p>If you have additional problems, please contact the Syslinux mailing
list (see syslinux.txt for the address.)</p></div>
<div class="sect2">
<h3 id="_broken_pxe_stacks">Broken PXE stacks</h3>
<div class="paragraph"><p>Lots of PXE stacks, especially old ones, have various problems of
varying degrees of severity.  Please see:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>http://syslinux.zytor.com/hardware.php</code></pre>
</div></div>
<div class="olist lowerroman"><ol class="lowerroman">
<li>
<p>
for a list of currently known hardware problems, with workarounds
if known.
</p>
</li>
</ol></div>
<div class="paragraph"><p>There are a number of extremely broken PXE stacks in the field.  The
gPXE project (formerly known as Etherboot) provides an open-source PXE
stack that works with a number of cards, and which can be loaded from
a CD-ROM, USB key, or floppy if desired.</p></div>
<div class="paragraph"><p>Information on gPXE is available from:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>http://www.etherboot.org/</code></pre>
</div></div>
<div class="olist lowerroman"><ol class="lowerroman">
<li>
<p>
and ready-to-use ROM or disk images from:
</p>
<div class="literalblock">
<div class="content">
<pre><code>http://www.rom-o-matic.net/</code></pre>
</div></div>
</li>
</ol></div>
<div class="paragraph"><p>Some cards, like may systems with the SiS 900, has a PXE stack which
works just barely well enough to load a single file, but doesn&#8217;t
handle the more advanced items required by PXELINUX.  If so, it is
possible to use the built-in PXE stack to load gPXE, which can then
load PXELINUX.  See:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>http://www.etherboot.org/wiki/pxechaining</code></pre>
</div></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_notes">NOTES</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_mtftp">MTFTP</h3>
<div class="paragraph"><p>PXELINUX does not support MTFTP, and there are no plans of doing so, as
MTFTP is inherently broken for files more than 65535 packets (about 92
MB) in size.  It is of course possible to use MTFTP for the initial
boot, if you have such a setup.  MTFTP server setup is beyond the scope
of this document.</p></div>
</div>
<div class="sect2">
<h3 id="_error_recovery">Error Recovery</h3>
<div class="paragraph"><p>If the boot fails, PXELINUX (unlike SYSLINUX) will not wait forever;
rather, if it has not received any input for approximately five
minutes after displaying an error message, it will reset the machine.
This allows an unattended machine to recover in case it had bad enough
luck of trying to boot at the same time the TFTP server goes down.</p></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p><strong>syslinux.cfg</strong>(5), <strong>syslinux-cli</strong>(1), <strong>lilo</strong>(8), <strong>keytab-lilo.pl</strong>(8),
<strong>fdisk</strong>(8), <strong>mkfs</strong>(8), <strong>superformat</strong>(1).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_author">AUTHOR</h2>
<div class="sectionbody">
<div class="paragraph"><p>This AsciiDoc derived document is a modified version of the original
<strong>SYSLINUX</strong> documentation by H. Peter Anvin &lt;<a href="mailto:hpa@zytor.com">hpa@zytor.com</a>&gt;.  The conversion
to an AsciiDoc was made by Gene Cumm &lt;<a href="mailto:gene.cumm@gmail.com">gene.cumm@gmail.com</a>&gt;</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated 2014-01-17 16:09:56 PST
</div>
</div>
</body>
</html>
