<!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>syslinux(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>
syslinux(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>syslinux -
   Install SYSLINUX to a file system
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><strong>syslinux</strong> [<em>OPTIONS</em>] <em>DEVICE</em>
<strong>extlinux</strong> [<em>OPTIONS</em>] <em>PATH</em>
<strong>syslinux</strong> [-h | --help | -v | --version]
<strong>extlinux</strong> [-h | --help | -v | --version]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Install <strong>SYSLINUX</strong> to the <em>DEVICE</em>/<em>PATH</em>, altering the boot sector and
installing the <em>ldlinux.sys</em> boot loader file.  For the Linux installer
extlinux, <em>PATH</em> is the desired path for the control files on a mounted,
supported file system and sets the install-time working directory.  For
all others, <em>DEVICE</em> must specify a FAT12/FAT16/FAT32 file system.  For
the Linux installers syslinux and syslinux-mtools, <em>DEVICE</em> should be an
unmounted file system.  For the DOS/Win32/Win64 installers, <em>DEVICE</em>
should be a drive like <em>a:</em> (case insensitive).</p></div>
<div class="paragraph"><p>For versions ~4.00 and later, either -i/--install or -U/--update must be
specified unless modifying the ADV of an existing install (options
tagged with <em>ADV</em>) or requesting the help/usage or version info, .</p></div>
<div class="paragraph"><p>If, during boot, the Shift or Alt keys are held down, or the Caps or
Scroll locks are set, <strong>Syslinux</strong> will display a <strong>lilo</strong>(8) -style "boot:"
prompt. The user can then type a kernel file name followed by any kernel
parameters. The <strong>Syslinux</strong> bootloader does not need to know about the
kernel or config files in advance.</p></div>
<div class="paragraph"><p><strong>Syslinux</strong> supports the loading of initial ramdisks (initrd) and the
bzImage kernel format.</p></div>
<div class="paragraph"><p>Please note, the ldlinux.sys boot loader file is flagged as immutable
(where applicable) and is modified after copying in to help ensure
boot-time integrity.  File systems with a sufficiently large boot loader
reserved area, like btrfs, will have ldlinux.sys installed there rather
than as a normal file.  Prior to version 4.00, extlinux would install a
file extlinux.sys which versions 4.00 and later installers will replace with ldlinux.sys.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_standalone_options">Standalone options</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>-i</strong>, <strong>--install</strong>
</dt>
<dd>
<p>
(~4.00+) Install SYSLINUX, regardless of an existing install.
</p>
</dd>
<dt class="hdlist1">
<strong>-U</strong>, <strong>--update</strong>
</dt>
<dd>
<p>
(~4.00+) Update an existing SYSLINUX/EXTLINUX install.  If no Syslinux
boot loader is present, return an error.
</p>
</dd>
<dt class="hdlist1">
<strong>-h</strong>, <strong>--help</strong>
</dt>
<dd>
<p>
Display help/usage information.
</p>
</dd>
<dt class="hdlist1">
<strong>-v</strong>, <strong>--version</strong>
</dt>
<dd>
<p>
Display version information and exit immediately.
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_regular_options">Regular Options</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>-a</strong>, <strong>--active</strong>
</dt>
<dd>
<p>
(DOS/Win32/Win64 ONLY) Mark the install target file system&#8217;s partition
active.
</p>
</dd>
<dt class="hdlist1">
<strong>-d</strong>, <strong>--directory</strong> <em>subdirectory</em>
</dt>
<dd>
<p>
(Not necessary for extlinux as it is implied by <em>PATH</em>) Install the
<strong>SYSLINUX</strong> control files in a subdirectory with the specified name
(relative to the root directory on the device).
</p>
</dd>
<dt class="hdlist1">
<strong>--device</strong> <em>DEVICE</em>
</dt>
<dd>
<p>
(extlinux ONLY; 4.06+) Force use of a specific block device (experts
only).
</p>
</dd>
<dt class="hdlist1">
<strong>-f</strong>, <strong>--force</strong>
</dt>
<dd>
<p>
Force install even if it appears unsafe.  Before 4.00, -f was used for
--offset in the Linux installers.
</p>
</dd>
<dt class="hdlist1">
<strong>-H</strong>, <strong>--heads</strong> <em>head-count</em>
</dt>
<dd>
<p>
Override the detected number of heads for the geometry.  See also
<strong>--sector</strong>.
</p>
</dd>
</dl></div>
<div class="paragraph"><p><strong>-m</strong>, <strong>--mbr</strong>:
(DOS/Win32/Win64 ONLY) Install the regular Syslinux MBR code to the MBR.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>-M</strong>, <strong>--menu-save</strong>
</dt>
<dd>
<p>
(4.00+; ADV) Set the label to select as default on the next boot.
</p>
</dd>
<dt class="hdlist1">
<strong>-o</strong>, <strong>--once</strong> <em>command</em>
</dt>
<dd>
<p>
(ADV) Declare a boot command to be tried on the first boot only.  The
use of <strong>-o</strong> for the Linux installers syslinux or syslinux-mtools has
been deprecated as of ~4.00 and is no longer valid as of ~4.02.
</p>
</dd>
<dt class="hdlist1">
<strong>-O</strong>, <strong>--clear-once</strong>
</dt>
<dd>
<p>
Clear the boot-once command.  See also <strong>--once</strong>.
</p>
</dd>
<dt class="hdlist1">
<strong>-r</strong>, <strong>--raid</strong>
</dt>
<dd>
<p>
(ADV) RAID mode.  If boot fails, tell the BIOS to boot the next device
in the boot sequence (usually the next hard disk) instead of stopping
with an error message.  This is useful for RAID-1 booting.
</p>
</dd>
<dt class="hdlist1">
<strong>--reset-adv</strong>
</dt>
<dd>
<p>
(ADV) Reset auxilliary data vector.
</p>
</dd>
<dt class="hdlist1">
<strong>-S</strong>, <strong>--sectors</strong> <em>sector-count</em>
</dt>
<dd>
<p>
Override the detected number of sectors for the geometry.  See also
<strong>--head</strong>.
</p>
</dd>
<dt class="hdlist1">
<strong>-s</strong>, <strong>--stupid</strong>
</dt>
<dd>
<p>
Install a "safe, slow and stupid" version of <strong>SYSLINUX</strong>. This version
may work on some very buggy BIOSes on which <strong>SYSLINUX</strong> would otherwise
fail. If you find a machine on which the -s option is required to make
it boot reliably, please send as much info about your machine as you
can, and include the failure mode.
</p>
</dd>
<dt class="hdlist1">
<strong>-t</strong>, <strong>--offset</strong> <em>offset</em>
</dt>
<dd>
<p>
(Linux syslinux/syslinux-mtools ONLY) Indicates that the filesystem is
at an offset from the base of the device or file.
</p>
</dd>
</dl></div>
<div class="paragraph"><p><strong>-z</strong>, <strong>--zipdrive</strong>
Assume zipdrive geometry (<em>--heads 64 --sectors 32</em>).  See also <strong>--head</strong>
and <strong>--sector</strong>.</p></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_booting_dos">Booting DOS</h3>
<div class="paragraph"><p>For booting DOS and other similar operating systems, there is an easy
and generally reliable solution to substitute in SYSLINUX as the primary
boot loader.</p></div>
<div class="ulist"><ul>
<li>
<p>
Make a DOS-bootable disk;  The following are possible commands:
</p>
<div class="literalblock">
<div class="content">
<pre><code>format a: /s
sys a:</code></pre>
</div></div>
</li>
<li>
<p>
Copy the DOS boot sector off using Linux or copybs.com:
</p>
<div class="literalblock">
<div class="content">
<pre><code>dd if=/dev/fd0 of=dos.bss bs=512 count=1
copybs a: a:dos.bss</code></pre>
</div></div>
</li>
<li>
<p>
Install SYSLINUX using one of:
</p>
<div class="literalblock">
<div class="content">
<pre><code>syslinux a:
syslinux /dev/fd0               (before 4.00)
syslinux -i /dev/fd0            (4.00+)</code></pre>
</div></div>
</li>
<li>
<p>
For Linux, mount the disk and copy the dos.bss to the disk:
</p>
<div class="literalblock">
<div class="content">
<pre><code>mount -t msdos /dev/fd0 /mnt
cp dos.bss /mnt</code></pre>
</div></div>
</li>
<li>
<p>
Copy a Linux kernel image and initrd payload files:
</p>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>Linux:</strong>
</dt>
<dd>
<p>
        cp vmlinux /mnt
        cp initrd.gz /mnt
</p>
</dd>
<dt class="hdlist1">
<strong>DOS/Windows:</strong>
</dt>
<dd>
<p>
        copy vmlinux a:
        copy initrd.gz a:
</p>
</dd>
</dl></div>
</li>
<li>
<p>
For Linux, umount the disk (if applicable):
</p>
<div class="literalblock">
<div class="content">
<pre><code>umount /mnt</code></pre>
</div></div>
</li>
</ul></div>
</div>
<div class="sect2">
<h3 id="_mbr">MBR</h3>
<div class="paragraph"><p>In order to boot from a hard disk (or hard disk-like device) in BIOS
mode, an appropriate MBR boot block must also be installed in the MBR
(first sector or 512 bytes of the disk), occupying at most 440 bytes.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>DOS/Windows:</strong>
</dt>
<dd>
<p>
If using FDISK, FDISK or a similar application must also be used to mark
the partition as active.
</p>
<div class="literalblock">
<div class="content">
<pre><code>    fdisk /mbr
OR
    syslinux -ma c:</code></pre>
</div></div>
</dd>
<dt class="hdlist1">
<strong>Linux:</strong>
</dt>
<dd>
<div class="literalblock">
<div class="content">
<pre><code>dd bs=440 count=1 conv=notrunc if=mbr/mbr.bin of=/dev/sda</code></pre>
</div></div>
<div class="paragraph"><p>For altmbr.bin, an easy way to overwrite the MBR boot block and specify
the partion number is:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>printf '\1' | cat altmbr.bin - | dd bs=440 count=1 \
  iflag=fullblock conv=notrunc of=/dev/sda</code></pre>
</div></div>
<div class="paragraph"><p>Note: using <em>cat</em> for writing the MBR can under some circumstances cause
data loss or overwritting.  For this reason, using <em>dd</em> is recommended
for all situations.</p></div>
</dd>
</dl></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
a manpage was made by Arthur Korn &lt;<a href="mailto:arthur@korn.ch">arthur@korn.ch</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 class="sect1">
<h2 id="_copyright">COPYRIGHT</h2>
<div class="sectionbody">
<div class="paragraph"><p>Copyright (C) 1994-2012 H. Peter Anvin. Free use of this software is granted
under the terms of the GNU General Public License (GPL), version 2
(GPLv2) (or, at your option, any later version).</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>
