.TH SYSLINUX 1 "19 July 2010" "SYSLINUX"
.SH NAME
syslinux \- install the \s-1SYSLINUX\s+1 bootloader on a FAT filesystem
.SH SYNOPSIS
.B syslinux
[\fBOPTIONS\fP]
.I device
.SH DESCRIPTION
\fBSyslinux\fP is a boot loader for the Linux operating system which
operates off an MS-DOS/Windows FAT filesystem. It is intended to
simplify first-time installation of Linux, and for creation of rescue
and other special-purpose boot disks.
.PP
In order to create a bootable Linux floppy using \fBSyslinux\fP, prepare a
normal MS-DOS formatted floppy. Copy one or more Linux kernel files to
it, then execute the command:
.IP
.B syslinux \-\-install /dev/fd0
.PP
This will alter the boot sector on the disk and copy a file named
.I ldlinux.sys
into its root directory.
.PP
On boot time, by default, the kernel will be loaded from the image named
LINUX on the boot floppy.  This default can be changed, see the section
on the \fBsyslinux\fP configuration file.
.PP
If the Shift or Alt keys are held down during boot, or the Caps or Scroll
locks are set, \fBsyslinux\fP will display a
.BR lilo (8)
-style "boot:" prompt. The user can then type a kernel file name
followed by any kernel parameters. The \s-1SYSLINUX\s+1 bootloader
does not need to know about the kernel file in advance; all that is
required is that it is a file located in the root directory on the
disk.
.PP
\fBSyslinux\fP supports the loading of initial ramdisks (initrd) and the
bzImage kernel format.
.SH OPTIONS
.TP
\fB\-i\fP, \fB\-\-install\fP
Install \s-1SYSLINUX\s+1 on a new medium, overwriting any previously
installed bootloader.
.TP
\fB\-U\fP, \fB\-\-update\fP
Install \s-1SYSLINUX\s+1 on a new medium if and only if a version of
\s-1SYSLINUX\s+1 is already installed.
.TP
\fB\-s\fP, \fB\-\-stupid\fP
Install a "safe, slow and stupid" version of \s-1SYSLINUX\s+1. This version may
work on some very buggy BIOSes on which \s-1SYSLINUX\s+1 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.
.TP
\fB\-f\fP, \fB\-\-force\fP
Force install even if it appears unsafe.
.TP
\fB\-r\fP, \fB\-\-raid\fB
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.
.TP
\fB\-d\fP, \fB\-\-directory\fP \fIsubdirectory\fP
Install the \s-1SYSLINUX\s+1 control files in a subdirectory with the
specified name (relative to the root directory on the device).
.TP
\fB\-t\fP, \fB\-\-offset\fP \fIoffset\fP
Indicates that the filesystem is at an offset from the base of the
device or file.
.TP
\fB\-\-once\fP \fIcommand\fP
Declare a boot command to be tried on the first boot only.
.TP
\fB\-O\fP, \fB\-\-clear-once\fP
Clear the boot-once command.
.TP
\fB\-H\fP, \fB\-\-heads\fP \fIhead-count\fP
Override the detected number of heads for the geometry.
.TP
\fB\-S\fP, \fB\-\-sectors\fP \fIsector-count\fP
Override the detected number of sectors for the geometry.
.TP
\fB\-z\fP, \fB\-\-zipdrive\fP
Assume zipdrive geometry (\fI\-\-heads 64 \-\-sectors 32).
.SH FILES
.SS "Configuration file"
All the configurable defaults in \s-1SYSLINUX\s+1 can be changed by putting a
file called
.B syslinux.cfg
in the install directory of the boot disk. This
is a text file in either UNIX or DOS format, containing one or more of
the following items (case is insensitive for keywords).
.PP
This list is out of date.
.PP
In the configuration file blank lines and comment lines beginning
with a hash mark (#) are ignored.
.TP
\fBdefault\fP \fIkernel\fP [ \fIoptions ...\fP ]
Sets the default command line. If \fBsyslinux\fP boots automatically,
it will act just as if the entries after "default" had been typed in
at the "boot:" prompt.
.IP
If no DEFAULT or UI statement is found, or the configuration file is missing
entirely, \s-1SYSLINUX\s+1 drops to the boot: prompt with an error message (if
NOESCAPE is set, it stops with a "boot failed" message; this is also the case
for PXELINUX if the configuration file is not found.)
.TP
NOTE: Until \s-1SYSLINUX\s+1 3.85, if no configuration file is present, or no
"default" entry is present in the configuration file, the default is
"linux auto".
.TP
Even earlier versions of \s-1SYSLINUX\s+1 used to automatically
append the string "auto" to whatever the user specified using
the DEFAULT command.  As of version 1.54, this is no longer
true, as it caused problems when using a shell as a substitute
for "init."  You may want to include this option manually.
.TP
.BI append " options ..."
Add one or more \fIoptions\fP to the kernel command line. These are added both
for automatic and manual boots. The options are added at the very beginning of
the kernel command line, usually permitting explicitly entered kernel options
to override them. This is the equivalent of the
.BR lilo (8)
 "append" option.
.PP
.nf
.BI label\  label
.RS 2
.BI kernel\  image
.BI append\  options\ ...
.RE
.fi
.RS
Indicates that if \fIlabel\fP is entered as the kernel to boot, \fBsyslinux\fP should
instead boot \fIimage\fP, and the specified "append" options should be used
instead of the ones specified in the global section of the file (before the
first "label" command.) The default for \fIimage\fP is the same as \fIlabel\fP,
and if no "append" is given the default is to use the global entry (if any).
Use "append -" to use no options at all.  Up to 128 "label" entries are
permitted.
.IP
The "image" doesn't have to be a Linux kernel; it can be a boot sector (see below.)
.RE
.TP
.BI implicit\  flag_val
If \fIflag_val\fP is 0, do not load a kernel image unless it has been
explicitly named in a "label" statement.  The default is 1.
.TP
.BI timeout\  timeout
Indicates how long to wait at the "boot:" prompt until booting automatically, in
units of 1/10 s. The timeout is cancelled as soon as the user types anything
on the keyboard, the assumption being that the user will complete the command
line already begun. A timeout of zero will disable the timeout completely,
this is also the default. The maximum possible timeout value is 35996;
corresponding to just below one hour.
.TP
\fBserial\fP \fIport\fP [ \fIbaudrate\fP ]
Enables a serial port to act as the console. "port" is a number (0 = /dev/ttyS0
= COM1, etc.); if "baudrate" is omitted, the baud rate defaults to 9600 bps.
The serial parameters are hardcoded to be 8 bits, no parity, 1 stop bit.
.IP
For this directive to be guaranteed to work properly, it
should be the first directive in the configuration file.
.TP
.BI font\  filename
Load a font in .psf format before displaying any output (except the copyright
line, which is output as ldlinux.sys itself is loaded.) \fBsyslinux\fP only loads
the font onto the video card; if the .psf file contains a Unicode table it is
ignored.  This only works on EGA and VGA cards; hopefully it should do nothing
on others.
.TP
.BI kbdmap\  keymap
Install a simple keyboard map. The keyboard remapper used is \fIvery\fP
simplistic (it simply remaps the keycodes received from the BIOS, which means
that only the key combinations relevant in the default layout \- usually U.S.
English \- can be mapped) but should at least help people with AZERTY keyboard
layout and the locations of = and , (two special characters used heavily on the
Linux kernel command line.)
.IP
The included program
.BR keytab-lilo.pl (8)
from the
.BR lilo (8)
 distribution can be used to create such keymaps.
.TP
.BI display\  filename
Displays the indicated file on the screen at boot time (before the boot:
prompt, if displayed). Please see the section below on DISPLAY files. If the
file is missing, this option is simply ignored.
.TP
.BI prompt\  flag_val
If \fIflag_val\fP is 0, display the "boot:" prompt only if the Shift or Alt key
is pressed, or Caps Lock or Scroll lock is set (this is the default).  If
\fIflag_val\fP is 1, always display the "boot:" prompt.
.PP
.nf
.BI f1\  filename
.BI f2\  filename
.I ...
.BI f9\  filename
.BI f10\  filename
.BI f11\  filename
.BI f12\  filename
.fi
.RS
Displays the indicated file on the screen when a function key is pressed at the
"boot:" prompt. This can be used to implement pre-boot online help (presumably
for the kernel command line options.)
.RE
.IP
When using the serial console, press \fI<Ctrl-F><digit>\fP to get to
the help screens, e.g. \fI<Ctrl-F>2\fP to get to the f2 screen.  For
f10-f12, hit \fI<Ctrl-F>A\fP, \fI<Ctrl-F>B\fP, \fI<Ctrl-F>C\fP.  For
compatiblity with earlier versions, f10 can also be entered as
\fI<Ctrl-F>0\fP.
.SS "Display file format"
DISPLAY and function-key help files are text files in either DOS or UNIX
format (with or without \fI<CR>\fP). In addition, the following special codes
are interpreted:
.TP
\fI<FF>\fP = \fI<Ctrl-L>\fP = ASCII 12
Clear the screen, home the cursor.  Note that the screen is
filled with the current display color.
.TP
\fI<SI><bg><fg>\fP, \fI<SI>\fP = \fI<Ctrl-O>\fP = ASCII 15
Set the display colors to the specified background and foreground colors, where
\fI<bg>\fP and \fI<fg>\fP are hex digits, corresponding to the standard PC
display attributes:
.IP
.nf
.ta \w'5 = dark purple    'u
0 = black	8 = dark grey
1 = dark blue	9 = bright blue
2 = dark green	a = bright green
3 = dark cyan	b = bright cyan
4 = dark red	c = bright red
5 = dark purple	d = bright purple
6 = brown	e = yellow
7 = light grey	f = white
.fi
.IP
Picking a bright color (8-f) for the background results in the
corresponding dark color (0-7), with the foreground flashing.
.IP
colors are not visible over the serial console.
.TP
\fI<CAN>\fPfilename\fI<newline>\fP, \fI<CAN>\fP = \fI<Ctrl-X>\fP = ASCII 24
If a VGA display is present, enter graphics mode and display
the graphic included in the specified file.  The file format
is an ad hoc format called LSS16; the included Perl program
"ppmtolss16" can be used to produce these images.  This Perl
program also includes the file format specification.
.IP
The image is displayed in 640x480 16-color mode.  Once in
graphics mode, the display attributes (set by \fI<SI>\fP code
sequences) work slightly differently: the background color is
ignored, and the foreground colors are the 16 colors specified
in the image file.  For that reason, ppmtolss16 allows you to
specify that certain colors should be assigned to specific
color indicies.
.IP
Color indicies 0 and 7, in particular, should be chosen with
care: 0 is the background color, and 7 is the color used for
the text printed by \s-1SYSLINUX\s+1 itself.
.TP
\fI<EM>\fP, \fI<EM>\fP = \fI<Ctrl-U>\fP = ASCII 25
If we are currently in graphics mode, return to text mode.
.TP
\fI<DLE>\fP..\fI<ETB>\fB, \fI<Ctrl-P>\fP..\fI<Ctrl-W>\fP = ASCII 16-23
These codes can be used to select which modes to print a
certain part of the message file in.  Each of these control
characters select a specific set of modes (text screen,
graphics screen, serial port) for which the output is actually
displayed:
.IP
.nf
Character                       Text    Graph   Serial
------------------------------------------------------
<DLE> = <Ctrl-P> = ASCII 16     No      No      No
<DC1> = <Ctrl-Q> = ASCII 17     Yes     No      No
<DC2> = <Ctrl-R> = ASCII 18     No      Yes     No
<DC3> = <Ctrl-S> = ASCII 19     Yes     Yes     No
<DC4> = <Ctrl-T> = ASCII 20     No      No      Yes
<NAK> = <Ctrl-U> = ASCII 21     Yes     No      Yes
<SYN> = <Ctrl-V> = ASCII 22     No      Yes     Yes
<ETB> = <Ctrl-W> = ASCII 23     Yes     Yes     Yes
.fi
.IP
For example:
.nf
<DC1>Text mode<DC2>Graphics mode<DC4>Serial port<ETB>
.fi
 ... will actually print out which mode the console is in!
.TP
\fI<SUB>\fP = \fI<Ctrl-Z>\fP = ASCII 26
End of file (DOS convention).
.SS Other operating systems
This version of \fBsyslinux\fP supports chain loading of other operating
systems (such as MS-DOS and its derivatives, including Windows 95/98).
.PP
Chain loading requires the boot sector of the foreign operating system
to be stored in a file in the root directory of the filesystem.
Because neither Linux kernels, nor boot sector images have reliable magic
numbers, \fBsyslinux\fP will look at the file
extension. The following extensions are recognised:
.PP
.nf
.ta \w'none or other    'u
none or other	Linux kernel image
BSS	Boot sector (DOS superblock will be patched in)
BS	Boot sector
.fi
.PP
For filenames given on the command line, \fBsyslinux\fP will search for the
file by adding extensions in the order listed above if the plain
filename is not found. Filenames in KERNEL statements must be fully
qualified.
.PP
.SS Novice protection
\fBSyslinux\fP will attempt to detect if the user is trying to boot on a 286
or lower class machine, or a machine with less than 608K of low ("DOS")
RAM (which means the Linux boot sequence cannot complete).  If so, a
message is displayed and the boot sequence aborted.  Holding down the
Ctrl key while booting disables this feature.
.PP
The compile time and date of a specific \fBsyslinux\fP version can be obtained
by the DOS command "type ldlinux.sys". This is also used as the
signature for the LDLINUX.SYS file, which must match the boot sector
.PP
Any file that \fBsyslinux\fP uses can be marked hidden, system or readonly if
so is convenient; \fBsyslinux\fP ignores all file attributes.  The \s-1SYSLINUX\s+1
installed automatically sets the readonly attribute on LDLINUX.SYS.
.SS Bootable CD-ROMs
\s-1SYSLINUX\s+1 can be used to create bootdisk images for El
Torito-compatible bootable CD-ROMs. However, it appears that many
BIOSes are very buggy when it comes to booting CD-ROMs. Some users
have reported that the following steps are helpful in making a CD-ROM
that is bootable on the largest possible number of machines:
.IP \(bu
Use the -s (safe, slow and stupid) option to \s-1SYSLINUX\s+1
.IP \(bu
Put the boot image as close to the beginning of the
ISO 9660 filesystem as possible.
.PP
A CD-ROM is so much faster than a floppy that the -s option shouldn't
matter from a speed perspective.
.PP
Of course, you probably want to use ISOLINUX instead.  See the
documentation file
.BR isolinux.doc .
.SS Booting from a FAT partition on a hard disk
\s-1SYSLINUX\s+1 can boot from a FAT filesystem partition on a hard
disk (including FAT32). The installation procedure is identical to the
procedure for installing it on a floppy, and should work under either
DOS or Linux. To boot from a partition, \s-1SYSLINUX\s+1 needs to be
launched from a Master Boot Record or another boot loader, just like
DOS itself would. A sample master boot sector (\fBmbr.bin\fP) is
included with \s-1SYSLINUX\s+1.
.SH BUGS
I would appreciate hearing of any problems you have with \s-1SYSLINUX\s+1.  I
would also like to hear from you if you have successfully used \s-1SYSLINUX\s+1,
especially if you are using it for a distribution.
.PP
If you are reporting problems, please include all possible information
about your system and your BIOS; the vast majority of all problems
reported turn out to be BIOS or hardware bugs, and I need as much
information as possible in order to diagnose the problems.
.PP
There is a mailing list for discussion among \s-1SYSLINUX\s+1 users and for
announcements of new and test versions. To join, send a message to
majordomo@linux.kernel.org with the line:
.PP
.B subscribe syslinux
.PP
in the body of the message. The submission address is syslinux@linux.kernel.org.
.SH SEE ALSO
.BR lilo (8),
.BR keytab-lilo.pl (8),
.BR fdisk (8),
.BR mkfs (8),
.BR superformat (1).
.SH AUTHOR
This manual page is a modified version of the original \fBsyslinux\fP
documentation by H. Peter Anvin <hpa@zytor.com>. The conversion to a manpage
was made by Arthur Korn <arthur@korn.ch>.
