= syslinux(1) =
:doctype: manpage
:revdate: 2013-06-12
:author: H. Peter Anvin
:author-email: hpa@zytor.com
:editor1: Gene Cumm
:editor1-email: gene.cumm@gmail.com
:editor1-revlast: 2013-06-12


== NAME ==
syslinux - Install SYSLINUX to a file system


== SYNOPSIS ==
[verse]
*syslinux* ['OPTIONS'] 'DEVICE'
*extlinux* ['OPTIONS'] 'PATH'
*syslinux* [-h | --help | -v | --version]
*extlinux* [-h | --help | -v | --version]


== DESCRIPTION ==
Install *SYSLINUX* to the 'DEVICE'/'PATH', altering the boot sector and
installing the 'ldlinux.sys' boot loader file.  For the Linux installer
extlinux, 'PATH' is the desired path for the control files on a mounted,
supported file system and sets the install-time working directory.  For
all others, 'DEVICE' must specify a FAT12/FAT16/FAT32 file system.  For
the Linux installers syslinux and syslinux-mtools, 'DEVICE' should be an
unmounted file system.  For the DOS/Win32/Win64 installers, 'DEVICE'
should be a drive like 'a:' (case insensitive).

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 'ADV') or requesting the help/usage or version
info.

If, during boot, the Shift or Alt keys are held down, or the Caps or
Scroll locks are set, *Syslinux* will display a *lilo*(8) -style "boot:"
prompt. The user can then type a kernel file name followed by any kernel
parameters. The *Syslinux* bootloader does not need to know about the
kernel or config files in advance.

*Syslinux* supports the loading of initial ramdisks (initrd) and the
bzImage kernel format.

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.


== OPTIONS ==
// "See"/"See also" notes should reference long options.
=== Standalone options ===
*-i*, *--install*::
(~4.00+) Install SYSLINUX, regardless of an existing install.

*-U*, *--update*::
(~4.00+) Update an existing SYSLINUX/EXTLINUX install.  If no Syslinux
boot loader is present, return an error.

*-h*, *--help*::
Display help/usage information.

*-v*, *--version*::
Display version information and exit immediately.

=== Regular Options ===
// Sorted generally by short argument
*-a*, *--active*::
(DOS/Win32/Win64 ONLY) Mark the install target file system's partition
active.

*-d*, *--directory* 'subdirectory'::
(Not necessary for extlinux as it is implied by 'PATH') Install the
*SYSLINUX* control files in a subdirectory with the specified name
(relative to the root directory on the device).

*--device* 'DEVICE'::
(extlinux ONLY; 4.06+) Force use of a specific block device (experts
only).

*-f*, *--force*::
Force install even if it appears unsafe.

*-H*, *--heads* 'head-count'::
Override the detected number of heads for the geometry.  See also
*--sector*.

*-m*, *--mbr*:
(DOS/Win32/Win64 ONLY) Install the regular Syslinux MBR code to the MBR.

*-M*, *--menu-save*::
(4.00+; ADV) Set the label to select as default on the next boot.

*--once* 'command'::
(ADV) Declare a boot command to be tried on the first boot only.  The
use of *-o* for the Linux installers syslinux or syslinux-mtools has
been deprecated as of \~4.00 and is no longer valid as of ~4.02.

*-O*, *--clear-once*::
Clear the boot-once command.  See also *--once*.

*-r*, *--raid*::
(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.

*--reset-adv*::
(ADV) Reset auxiliary data vector.

*-S*, *--sectors* 'sector-count'::
Override the detected number of sectors for the geometry.  See also
*--head*.

*-s*, *--stupid*::
Install a "safe, slow and stupid" version of *SYSLINUX*. This version
may work on some very buggy BIOSes on which *SYSLINUX* 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.

*-t*, *--offset* 'offset'::
(Linux syslinux/syslinux-mtools ONLY) Indicates that the filesystem is
at an offset from the base of the device or file. Some older versions
did not accept the short format, *-t*.

*-z*, *--zipdrive*
Assume zipdrive geometry ('--heads 64 --sectors 32').  See also *--head*
and *--sector*.


== EXAMPLES ==
=== Booting DOS ===
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.

- Make a DOS-bootable disk;  The following are possible commands:

	format a: /s
	sys a:

- Copy the DOS boot sector off using Linux or copybs.com:

	dd if=/dev/fd0 of=dos.bss bs=512 count=1
	copybs a: a:dos.bss

- Install SYSLINUX using one of:

	syslinux a:
	syslinux /dev/fd0		(before 4.00)
	syslinux -i /dev/fd0		(4.00+)

- For Linux, mount the disk and copy the dos.bss to the disk:

	mount -t msdos /dev/fd0 /mnt
	cp dos.bss /mnt

- Copy a Linux kernel image and initrd payload files:
*Linux:*::
	cp vmlinux /mnt
	cp initrd.gz /mnt
*DOS/Windows:*::
	copy vmlinux a:
	copy initrd.gz a:

- For Linux, umount the disk (if applicable):

	umount /mnt

=== MBR ===
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.

*DOS/Windows:*::
If using FDISK, FDISK or a similar application must also be used to mark
the partition as active.
+
	fdisk /mbr
    OR
	syslinux -ma c:

*Linux:*::
+
	dd bs=440 count=1 conv=notrunc if=mbr/mbr.bin of=/dev/sda
+
For altmbr.bin, an easy way to overwrite the MBR boot block and specify
the partion number is:
+
  printf '\1' | cat altmbr.bin - | dd bs=440 count=1 \
    iflag=fullblock conv=notrunc of=/dev/sda
+
Note: using 'cat' for writing the MBR can under some circumstances cause
data loss or overwriting.  For this reason, using 'dd' is recommended
for all situations.

//[FIXME]: any clean way to handle the above long command for manpage?


== SEE ALSO ==
*syslinux.cfg*(5), *syslinux-cli*(1), *lilo*(8), *keytab-lilo.pl*(8),
*fdisk*(8), *mkfs*(8), *superformat*(1).


== AUTHOR ==
This AsciiDoc derived document is a modified version of the original
*SYSLINUX* documentation by {author} <{author-email}>. The conversion to
a manpage was made by Arthur Korn <arthur@korn.ch>.  The conversion to
an AsciiDoc was made by {editor1} <{editor1-email}>


== COPYRIGHT ==
Copyright \(C) 1994-2012 {author}. 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).
