Home | History | Annotate | Download | only in txt
      1 = syslinux.cfg(5) =
      2 :doctype: manpage
      3 :revdate: 2012-10-28
      4 :author: H. Peter Anvin
      5 :author-email: hpa (a] zytor.com
      6 :editor1: Gene Cumm
      7 :editor1-email: gene.cumm (a] gmail.com
      8 :editor1-revlast: 2012-10-28
      9 :nbsp8:         
     10 :nbsp32: {nbsp8}{nbsp8}{nbsp8}{nbsp8}
     11 :data-uri:
     12 
     13 == NAME ==
     14 syslinux.cfg - *Syslinux* configuration file
     15 
     16 
     17 == DESCRIPTION ==
     18 Configuration for the boot behavior and user experience of *Syslinux*
     19 boot loaders, the format of display files and the boot prompt behavior.
     20 
     21 Blank lines are ignored.
     22 
     23 Note that the configuration file is not completely decoded.  Syntax
     24 different from the one described above may still work correctly in this
     25 version of *Syslinux*, but may break in a future one.
     26 
     27 
     28 == LOCATION/NAME ==
     29 *SYSLINUX* (before 4.00) used the configuration filename of
     30 syslinux.cfg.  *EXTLINUX* (merged into *SYSLINUX* as of 4.00) used the
     31 filename extlinux.conf.  Both default to searching for the config file
     32 in the installed directory (containing ldlinux.sys/extlinux.sys).  As of
     33 4.00, *SYSLINUX* will search for extlinux.conf then syslinux.cfg in each
     34 directory before falling back to the next directory.
     35 
     36 As of 3.35, *SYSLINUX* also searches /boot/syslinux, /syslinux and /.
     37 
     38 *ISOLINUX* (before 4.02) used the configuration filename of
     39 isolinux.cfg, searching  /boot/isolinux (starting 2.00), then /isolinux
     40 and /.  As of 4.02, *ISOLINUX* will search for isolinux.cfg then
     41 syslinux.cfg in /boot/isolinux before searching for the same files in
     42 /isolinux, /boot/syslinux, /syslinux, and /.
     43 
     44 
     45 == GLOBAL DIRECTIVES - MAIN ==
     46 *#* comment::
     47 A line comment.  As of version 3.10, the space between the *#* and the
     48 comment is no longer required.
     49 
     50 *MENU* any string::
     51 (3.00+) A directive for the simple menu system, treated as a comment
     52 outside the menu.  See menu.txt.
     53 
     54 *INCLUDE* 'filename'::
     55 Inserts the contents of another file at this point in the configuration
     56 file. Files can currently be nested up to 16 levels deep, but it is not
     57 guaranteed that more than 8 levels will be supported in the future.
     58 
     59 *DEFAULT* 'kernel' 'options...'::
     60 Sets the default command line (which often references a LABEL).  If
     61 *Syslinux* boots automatically, it will act just as if the entries after
     62 *DEFAULT* had been typed in at the 'boot:' prompt.  Multiple uses will
     63 result in an override.
     64 +
     65 If no configuration file is present, or no *DEFAULT* or *UI* entry is
     66 present in the config file, an error message is displayed and the
     67 'boot:' prompt is shown (3.85+).
     68 
     69 *UI* 'module' 'options...'::
     70 Selects a specific user interface 'module' (typically menu.c32 or
     71 vesamenu.c32).  The command-line interface treats this as a directive
     72 that overrides the *DEFAULT* directive to load this module instead at
     73 startup, for an empty command line and at timeout and *PROMPT* directive
     74 to not prompt (but these directives may have effects on other
     75 configuration parsers).  Multiple uses will result in an override.
     76 
     77 *LABEL* 'mylabel'::
     78 Begin a new *LABEL* clause.  If 'mylabel' is entered as the kernel to
     79 boot, *Syslinux* should instead boot "image" (specified by a directive
     80 from *KERNEL-LIKE DIRECTIVES*) with any specified *DUAL-PURPOSE
     81 DIRECTIVES* being used instead of the global instance.
     82 +
     83 'mylabel' must be unique.  Currently the first instance is used but may
     84 result in an error or undesired behavior.  'mylabel' ends at the first
     85 character that is not a non-white-space printable character and should
     86 be restricted to non-white-space typeable characters.  Prior to version
     87 3.32, this would transformed to a DOS compatible format of 8.3 with a
     88 restricted character set.  A *LABEL* clause must contain exactly 1 of
     89 the *KERNEL-LIKE DIRECTIVES* and may contain 1 each of the *LABEL-ONLY
     90 DIRECTIVES* or *DUAL-PURPOSE DIRECTIVES*.
     91 +
     92 Within a *LABEL*, using multiple *KERNEL-LIKE DIRECTIVES* or reuse of
     93 *LABEL-ONLY DIRECTIVES* or *DUAL-PURPOSE DIRECTIVES* will result in an
     94 override.  Otherwise, multiple instances of the same directive will
     95 result in the last being effective.
     96 
     97 
     98 == DUAL-PURPOSE DIRECTIVES ==
     99 Use of any of the *DUAL-PURPOSE DIRECTIVES* as *GLOBAL DIRECTIVES* is
    100 discouraged if there will be any non-Linux images loaded as *ALL* images
    101 will get these, including those manually entered at the 'boot:' prompt.
    102 
    103 *APPEND* 'options...'::
    104 Add one or more options to the kernel command line.  These are added
    105 both for automatic and manual boots.  The options are added at the very
    106 beginning of the kernel command line, usually permitting explicitly
    107 entered kernel options to override them.  This is the equivalent of the
    108 LILO "append" option.
    109 +
    110 Use of the parameter 'initrd=' supports multiple filenames separated by
    111 commas (ie 'initrd=initrd_file1,initrd_file2') within a single instance.
    112 This is mostly useful for initramfs, which can be composed of multiple
    113 separate cpio or cpio.gz archives.
    114 +
    115 Note: all initrd files except the last one are zero-padded to a 4K page
    116 boundary.  This should not affect initramfs.
    117 +
    118 Note: Only the last effective 'initrd=' parameter is used for loading
    119 initrd files.
    120 
    121 *APPEND* -::
    122 Append nothing.  *APPEND* with a single hyphen as argument in a *LABEL*
    123 section can be used to override a global *APPEND*.
    124 
    125 //[FIXME: Shorten subdefinitions]
    126 *SYSAPPEND* 'bitmask'::
    127 *IPAPPEND* 'bitmask'::
    128 (*SYSAPPEND*: 5.10+; *IPAPPEND*: *PXELINUX* only)
    129 The *SYSAPPEND* option was introduced in *Syslinux* 5.10; it is an
    130 enhancement of a previous option *IPAPPEND* which was only available on
    131 *PXELINUX*.  'bitmask' is interpreted as decimal format unless prefixed
    132 with "0x" for hexadecimal or "0" (zero) for octal.  The 'bitmask' is an
    133 OR (sum) of the following integer options:
    134 
    135 ifndef::doctype-manpage[[horizontal]]
    136 *1*::: An option of the following format should be generated, based on
    137 the input from the DHCP/BOOTP or PXE boot server and added to the kernel
    138 command line(see note below; empty for non-PXELINUX variants):
    139 +
    140 ----
    141 ip=<client-ip>:<boot-server-ip>:<gw-ip>:<netmask>
    142 ----
    143 +
    144 NOTE:  The use of option 1 is no substitute for running a DHCP client in
    145 the booted system and should instead only be used to seed the client for
    146 a request.  Without regular renewals, the lease acquired by the PXE BIOS
    147 will expire, making the IP address available for reuse by the DHCP
    148 server.
    149 +
    150 *2*::: An option of the following format should be generated, in
    151 dash-separated hexadecimal with leading hardware type (same as for the
    152 configuration file; see pxelinux.txt.) and added to the kernel command
    153 line, allowing an initrd program to determine from which interface the
    154 system booted(empty for non-PXELINUX variants):
    155 +
    156 ----
    157 BOOTIF=<hardware-address-of-boot-interface>
    158 ----
    159 +
    160 *4*::: An option of the following format should be generated, in lower
    161 case hexadecimal in the format normally used for UUIDs (same as for the
    162 configuration file; see pxelinux.txt.) and added to the kernel command
    163 line:
    164 +
    165 ----
    166 SYSUUID=<system uuid>
    167 ----
    168 +
    169 *8*::: (5.10+) indicate the CPU family and certain particularly
    170 significant CPU feature bits:
    171 +
    172 ----
    173 CPU=<family><features>
    174 ----
    175 +
    176 The <family> is a single digit from 3 (i386) to 6 (i686 or higher.)  The
    177 following CPU features are currently reported; additional flags may be
    178 added in the future:
    179 +
    180 ....
    181 P	Physical Address Extension (PAE)
    182 V	Intel Virtualization Technology (VT/VMX)
    183 T	Intel Trusted Exection Technology (TXT/SMX)
    184 X	Execution Disable (XD/NX)
    185 L	Long Mode (x86-64)
    186 S	AMD SMX virtualization
    187 ....
    188 +
    189 *DMI*::: (5.10+) The following strings are derived from DMI/SMBIOS
    190 information if available:
    191 +
    192 	Bit	String		Significance
    193 	-------------------------------------------------------------
    194 	0x00010	SYSVENDOR=	System vendor name
    195 	0x00020	SYSPRODUCT=	System product name
    196 	0x00040	SYSVERSION=	System version
    197 	0x00080	SYSSERIAL=	System serial number
    198 	0x00100	SYSSKU=		System SKU
    199 	0x00200	SYSFAMILY=	System family
    200 	0x00400	MBVENDOR=	Motherboard vendor name
    201 	0x00800	MBVERSION=	Motherboard version
    202 	0x01000	MBSERIAL=	Motherboard serial number
    203 	0x02000	MBASSET=	Motherboard asset tag
    204 	0x04000 BIOSVENDOR=	BIOS vendor name
    205 	0x08000	BIOSVERSION=	BIOS version
    206 	0x10000	SYSFF=		System form factor
    207 +
    208 If these strings contain white-space characters, they are replaced with
    209 underscores (_).
    210 +
    211 The system form factor value is a number defined in the SMBIOS
    212 specification, available at http://www.dmtf.org/.  As of version 2.7.1
    213 of the specification, the following values are defined:
    214 +
    215 	  1	Other
    216 	  2	Unknown
    217 	  3	Desktop
    218 	  4	Low profile desktop
    219 	  5	Pizza box
    220 	  6	Mini tower
    221 	  7	Tower
    222 	  8	Portble
    223 	  9	Laptop
    224 	 10	Notebook
    225 	 11	Handheld
    226 	 12	Docking station
    227 	 13	All-in-one
    228 	 14	Subnotebook
    229 	 15	Space-saving
    230 	 16	Lunch box
    231 	 17	Main server chassis
    232 	 18	Expansion chassis
    233 	 19	Subchassis
    234 	 20	Bus expansion chassis
    235 	 21	Peripheral chassis
    236 	 22	RAID chassis
    237 	 23	Rack mount chasss
    238 	 24	Sealed-case PC
    239 	 25	Multi-system chassis
    240 	 26	Compact PCI
    241 	 27	Advanced TCI
    242 	 28	Blade
    243 	 29	Blade enclosure
    244 
    245 
    246 
    247 == KERNEL-LIKE DIRECTIVES ==
    248 // Alpha sort after KERNEL and LINUX
    249 *KERNEL* 'image'::
    250 Load a kernel-like file 'image' with automatic filetype detection based
    251 on file extension, listed under the non-auto-detecting directives,
    252 defaulting to *LINUX*.
    253 
    254 //[FIXME: Should "'image' as " be removed entirely or added to all? 
    255 *LINUX* is used as an example]
    256 *LINUX* 'image'::
    257 Load 'image' as a Linux-like kernel. MEMDISK is an example of a
    258 non-Linux kernel loaded in a Linux-like fashion.
    259 
    260 *BOOT* 'image'::
    261 (*ISOLINUX* only: .bin; *SYSLINUX* only: .bs) Load a boot sector.  .bin
    262 is a "CD boot sector" and .bs is a regular disk boot sector.
    263 
    264 *BSS* 'image'::
    265 (*SYSLINUX* only: .bss) Load a BSS image, a .bs image with the DOS
    266 superblock patched in.
    267 
    268 *COMBOOT* 'image'::
    269 (.com, .cbt; Removed as of 5.00) Load a *Syslinux* COMBOOT image.  .com
    270 images may also be runnable from DOS while .cbt images are not.  See
    271 also *comboot.txt*
    272 
    273 *COM32* 'image'::
    274 (.c32) Load a *Syslinux* COM32 (32-bit *COMBOOT*) image.  See also
    275 *comboot.txt*
    276 
    277 *CONFIG* 'image'::
    278 Load a new configuration file.  The configuration file is read, the
    279 working directory is changed (if specified via an *APPEND*), then the
    280 configuration file is parsed.
    281 
    282 *FDIMAGE* 'image'::
    283 (Removed as of 4.05, added 1.65; *ISOLINUX* only: .img) Load a disk
    284 image.
    285 
    286 *LOCALBOOT* 'type'::
    287 (*PXELINUX* 1.53+; *ISOLINUX* ??3.10+; *SYSLINUX* 3.70+)Attempt a
    288 different local boot method.  The special value -1 causes the boot
    289 loader to report failure to the BIOS, which, on recent BIOSes, should
    290 mean that the next boot device in the boot sequence should be activated.
    291  Values other than those documented may produce undesired results.
    292 +
    293 On *PXELINUX*, 'type' 0 means perform a normal boot.  'type' 4 will
    294 perform a local boot with the Universal Network Driver Interface (UNDI)
    295 driver still resident in memory.  Finally, 'type' 5 will perform a local
    296 boot with the entire PXE stack, including the UNDI driver, still
    297 resident in memory. All other values are undefined.  If you don't know
    298 what the UNDI or PXE stacks are, don't worry -- you don't want them,
    299 just specify 0.
    300 +
    301 On *ISOLINUX*/*SYSLINUX*, the 'type' specifies the local drive number to
    302 boot from; 0x00 is the primary floppy drive and 0x80 is the primary hard
    303 drive.
    304 
    305 *PXE* 'image'::
    306 (*PXELINUX* only: .0) Load a PXE NBP (Network Boot Program) image.  The
    307 PXE protocol does not provide any means for specifiying or using a
    308 command line or initrd.
    309 
    310 
    311 == LABEL-ONLY DIRECTIVES ==
    312 *INITRD* 'initrd_file'::
    313 (3.71+) An initrd can be specified in a separate statement (INITRD)
    314 instead of as part of the *APPEND* statement; this functionally appends
    315 "initrd=initrd_file" to the kernel command line.  Like 'initrd=', this
    316 also supports multiple comma separated file names (see *APPEND*).
    317 
    318 
    319 == GLOBAL DIRECTIVES - SECONDARY ==
    320 These are global directives that are of lesser importance, often
    321 affecting the user experience and not the boot process.
    322 
    323 *ALLOWOPTIONS* 'flag_val'::
    324 If 'flag_val' is 0, the user is not allowed to specify any arguments on
    325 the kernel command line.  The only options recognized are those
    326 specified in an *APPEND*) statement.  The default is 1.
    327 
    328 *IMPLICIT* 'flag_val'::
    329 If 'flag_val' is 0, do not load a kernel image unless it has been
    330 explicitly named in a *LABEL* statement.  The default is 1.
    331 
    332 *TIMEOUT* 'timeout'::
    333 Indicates how long to wait at the 'boot:' prompt until booting
    334 automatically, in units of 1/10 s.  The timeout is cancelled as soon as
    335 the user types anything on the keyboard, the assumption being that the
    336 user will complete the command line already begun.  The timer is reset
    337 to 0 upon return from an unsuccessful attempt to boot or from a module. 
    338 A timeout of zero (the default) will disable the timeout completely.
    339 
    340 *TOTALTIMEOUT* 'timeout'::
    341 Indicates how long to wait until booting automatically, in units of
    342 1/10 s.  This timeout is *not* cancelled by user input, and can thus be
    343 used to deal with serial port glitches or "the user walked away" type
    344 situations.  A timeout of zero (the default) will disable the timeout
    345 completely.
    346 +
    347 Both *TIMEOUT* and *TOTALTIMEOUT* can be used together, for example:
    348 +
    349 ----
    350 # Wait 5 seconds unless the user types something, but
    351 # always boot after 15 minutes.
    352 TIMEOUT 50
    353 TOTALTIMEOUT 9000
    354 ----
    355 
    356 // FIXME: be consistent
    357 *ONTIMEOUT* 'kernel options...'::
    358 Sets the command line invoked on a timeout (which often references a
    359 LABEL).  If not specified, 'UI' (if used) or 'DEFAULT is used.
    360 
    361 *ONERROR* 'kernel options...'::
    362 If a kernel image is not found (either due to it not existing, or
    363 because *IMPLICIT* is set), run the specified command.  The faulty
    364 command line is appended to the specified options, so if the *ONERROR*
    365 directive reads as:
    366 +
    367 ----
    368 ONERROR xyzzy plugh
    369 ----
    370 +
    371 and the command line as entered by the user is:
    372 +
    373 ----
    374 foo bar baz
    375 ----
    376 +
    377 *Syslinux* will execute the following as if entered by the user:
    378 +
    379 ----
    380 xyzzy plugh foo bar baz
    381 ----
    382 
    383 *SERIAL* 'port [baudrate [flowcontrol]]'::
    384 Enables a serial port to act as the console.  'port' is a number (0 =
    385 /dev/ttyS0 = COM1, etc.) or an I/O port address (e.g. 0x3F8); if
    386 'baudrate' is omitted, the baud rate defaults to 9600 bps.  The serial
    387 parameters are hardcoded to be 8 bits, no parity, 1 stop bit.
    388 +
    389 'flowcontrol' is a combination of the following bits:
    390 +
    391 ....
    392 0x001 - Assert DTR
    393 0x002 - Assert RTS
    394 0x008 - Enable interrupts
    395 0x010 - Wait for CTS assertion
    396 0x020 - Wait for DSR assertion
    397 0x040 - Wait for RI assertion
    398 0x080 - Wait for DCD assertion
    399 0x100 - Ignore input unless CTS asserted
    400 0x200 - Ignore input unless DSR asserted
    401 0x400 - Ignore input unless RI asserted
    402 0x800 - Ignore input unless DCD asserted
    403 ....
    404 +
    405 All other bits are reserved.
    406 +
    407 Typical values are:
    408 +
    409 ....
    410     0 - No flow control (default)
    411 0x303 - Null modem cable detect
    412 0x013 - RTS/CTS flow control
    413 0x813 - RTS/CTS flow control, modem input
    414 0x023 - DTR/DSR flow control
    415 0x083 - DTR/DCD flow control
    416 ....
    417 +
    418 For the *SERIAL* directive to be guaranteed to work properly, it should
    419 be the first directive in the configuration file.
    420 +
    421 NOTE: 'port' values from 0 to 3 means the first four serial ports
    422 detected by the BIOS.  They may or may not correspond to the legacy port
    423 values 0x3F8, 0x2F8, 0x3E8, 0x2E8.
    424 +
    425 Enabling interrupts (setting the 0x008 bit) may give better
    426 responsiveness without setting the *NOHALT* option, but could
    427 potentially cause problems with buggy BIOSes.
    428 +
    429 This option is "sticky" and is not automatically reset when loading a
    430 new configuration file with the CONFIG command.
    431 
    432 *NOHALT* 'flag_val'::
    433 If 'flag_val' is 1, don't halt the processor while idle. Halting the
    434 processor while idle significantly reduces the power consumption, but
    435 can cause poor responsiveness to the serial console, especially when
    436 using scripts to drive the serial console, as opposed to human
    437 interaction.
    438 
    439 *CONSOLE* 'flag_val'::
    440 If 'flag_val' is 0, disable output to the normal video console. If
    441 'flag_val' is 1, enable output to the video console (this is the
    442 default.)
    443 +
    444 Some BIOSes try to forward this to the serial console and sometimes make
    445 a total mess thereof, so this option lets you disable the video console
    446 on these systems.
    447 
    448 *FONT* 'filename'::
    449 Load a font in .psf format before displaying any output (except the
    450 copyright line, which is output as ldlinux.sys itself is loaded.) 
    451 *Syslinux* only loads the font onto the video card; if the .psf file
    452 contains a Unicode table it is ignored.  This only works on EGA and VGA
    453 cards; hopefully it should do nothing on others.
    454 
    455 *KBDMAP* 'keymap'::
    456 Install a simple keyboard map.  The keyboard remapper used is *very*
    457 simplistic (it simply remaps the keycodes received from the BIOS, which
    458 means that only the key combinations relevant in the default layout --
    459 usually U.S. English -- can be mapped) but should at least help people
    460 with AZERTY keyboard layout and the locations of = and , (two special
    461 characters used heavily on the Linux kernel command line.)
    462 +
    463 The included program keytab-lilo.pl from the LILO distribution can be
    464 used to create such keymaps.  The file keytab-lilo.txt contains the
    465 documentation for this program.
    466 
    467 *DISPLAY* 'filename'::
    468 Displays the indicated file on the screen at boot time (before the boot:
    469 prompt, if displayed).  Please see the section below on *DISPLAY* files.
    470 +
    471 NOTE: If the file is missing, this option is simply ignored.
    472 
    473 *SAY* 'message'::
    474 Prints the message on the screen.
    475 
    476 *PROMPT* 'flag_val'::
    477 If 'flag_val' is 0, display the boot: prompt only if the Shift or Alt
    478 key is pressed, or Caps Lock or Scroll lock is set (this is the
    479 default).  If 'flag_val' is 1, always display the boot: prompt.
    480 
    481 *NOESCAPE* 'flag_val'::
    482 If 'flag_val' is set to 1, ignore the Shift/Alt/Caps Lock/Scroll Lock
    483 escapes.  Use this (together with PROMPT 0) to force the default boot
    484 alternative.
    485 
    486 *NOCOMPLETE* 'flag_val'::
    487 If 'flag_val' is set to 1, the Tab key does not display labels at the
    488 boot: prompt.
    489 
    490 //   ...etc...
    491 *F1* 'filename'::
    492 *F2* 'filename'::
    493 *F3* 'filename'::
    494 *F4* 'filename'::
    495 *F5* 'filename'::
    496 *F6* 'filename'::
    497 *F7* 'filename'::
    498 *F8* 'filename'::
    499 *F9* 'filename'::
    500 *F10* 'filename'::
    501 *F11* 'filename'::
    502 *F12* 'filename'::
    503 Displays the indicated file on the screen when a function key is pressed
    504 at the boot: prompt.  This can be used to implement pre-boot online help
    505 (presumably for the kernel command line options.)  Please see the
    506 section below on DISPLAY files.
    507 +
    508 When using the serial console, press <Ctrl-F><digit> to get to the help
    509 screens, e.g. <Ctrl-F><2> to get to the F2 screen. For F10-F12, hit
    510 <Ctrl-F><A>, <Ctrl-F>B, <Ctrl-F>C.  For compatibility with earlier
    511 versions, F10 can also be entered as <Ctrl-F>0.
    512 
    513 *PATH* 'path'::
    514 (5.00+) Specify a space-separated (' '; 5.00-5.10 was a colon ':') list
    515 of directories to search when attempting to load modules. This directive
    516 is useful for specifying the directories containing the lib*.c32 library
    517 files as other modules may be dependent on these files, but may not
    518 reside in the same directory.  Multiple instances will append additional
    519 paths.
    520 
    521 *SENDCOOKIES* 'bitmask'::
    522 (*PXELINUX* 5.10+) When downloading files over http, the SYSAPPEND
    523 strings are prepended with _Syslinux_ and sent to the server as cookies.
    524 The cookies are URL-encoded; whitespace is *not* replaced with
    525 underscores.
    526 +
    527 This command limits the cookies send; 0 means no cookies.  The default
    528 is -1, meaning send all cookies.
    529 +
    530 This option is "sticky" and is not automatically reset when loading a
    531 new configuration file with the CONFIG command.
    532 
    533 
    534 == DISPLAY FILE FORMAT ==
    535 DISPLAY and function-key help files are text files in either DOS or UNIX
    536 format (with or without <CR>).  In addition, the following special codes
    537 are interpreted:
    538 
    539 //[FIXME]: #1 doesn't break; #2 as-is; #3 broken but not on right; #4
    540 identical to #3
    541 // horizontal extends the line's label, reducing the definition
    542 // tab or space to shift explanation ?  align beginning or end?
    543 
    544 // ifndef::doctype-manpage[[horizontal]]
    545 *<FF>*:: {nbsp32} 				= <Ctrl-L> = ASCII 12 +
    546 Clear the screen, home the cursor.  Note that the screen is filled with
    547 the current display color.
    548 
    549 *<FF>*::
    550 = <Ctrl-L> = ASCII 12; Clear the screen, home the cursor.  Note that the
    551 screen is filled with the current display color.
    552 
    553 *<FF>*::                                      <FF> = <Ctrl-L> = ASCII 12
    554 +
    555 Clear the screen, home the cursor.  Note that the screen is filled with
    556 the current display color.
    557 
    558 *<FF>*::
    559 <FF> = <Ctrl-L> = ASCII 12 +
    560 Clear the screen, home the cursor.  Note that the screen is filled with
    561 the current display color.
    562 
    563 *<SI>*'<bg><fg>'::                            <SI> = <Ctrl-O> = ASCII 15
    564 +
    565 Set the display colors to the specified background and foreground
    566 colors, where <bg> and <fg> are the 2 hex digits representing 1 byte,
    567 corresponding to the standard PC display attributes:
    568 +
    569         0 = black               8 = dark grey
    570         1 = dark blue           9 = bright blue
    571         2 = dark green          a = bright green
    572         3 = dark cyan           b = bright cyan
    573         4 = dark red            c = bright red
    574         5 = dark purple         d = bright purple
    575         6 = brown               e = yellow
    576         7 = light grey          f = white
    577 +
    578 Picking a bright color (8-f) for the background results in the
    579 corresponding dark color (0-7), with the foreground flashing.
    580 +
    581 Colors are not visible over the serial console.
    582 
    583 *<CAN>*'filename<newline>'::                 <CAN> = <Ctrl-X> = ASCII 24
    584 +
    585 If a VGA display is present, enter graphics mode and display the graphic
    586 included in the specified file.  The file format is an ad hoc format
    587 called LSS16; the included Perl program "ppmtolss16" can be used to
    588 produce these images.  This Perl program also includes the file format
    589 specification.
    590 +
    591 The image is displayed in 640x480 16-color mode.  Once in graphics mode,
    592 the display attributes (set by <SI> code sequences) work slightly
    593 differently: the background color is ignored, and the foreground colors
    594 are the 16 colors specified in the image file.  For that reason,
    595 ppmtolss16 allows you to specify that certain colors should be assigned
    596 to specific color indicies.
    597 +
    598 Color indicies 0 and 7, in particular, should be chosen with care: 0 is
    599 the background color, and 7 is the color used for the text printed by
    600 *Syslinux* itself.
    601 
    602 *<EM>*::				<EM> = <Ctrl-Y> = ASCII 25 +
    603 If we are currently in graphics mode, return to text mode.
    604 
    605 *<DLE>*..*<ETB>*::			<Ctrl-P>..<Ctrl-W> = ASCII 16-23
    606 +
    607 These codes can be used to select which modes to print a certain part of
    608 the message file in.  Each of these control characters select a specific
    609 set of modes (text screen, graphics screen, serial port) for which the
    610 output is actually displayed:
    611 +
    612 	Character			Text	Graph	Serial
    613 	------------------------------------------------------
    614 	<DLE> = <Ctrl-P> = ASCII 16	No	No	No
    615 	<DC1> = <Ctrl-Q> = ASCII 17	Yes	No	No
    616 	<DC2> = <Ctrl-R> = ASCII 18	No	Yes	No
    617 	<DC3> = <Ctrl-S> = ASCII 19	Yes	Yes	No
    618 	<DC4> = <Ctrl-T> = ASCII 20	No	No	Yes
    619 	<NAK> = <Ctrl-U> = ASCII 21	Yes	No	Yes
    620 	<SYN> = <Ctrl-V> = ASCII 22	No	Yes	Yes
    621 	<ETB> = <Ctrl-W> = ASCII 23	Yes	Yes	Yes
    622 +
    623 For example, the following will actually print out which mode the
    624 console is in:
    625 +
    626 	<DC1>Text mode<DC2>Graphics mode<DC4>Serial port<ETB>
    627 
    628 *<SUB>*::                                   <SUB> = <Ctrl-Z> = ASCII 26
    629 +
    630 End of file (DOS convention).
    631 
    632 *<BEL>*::				<BEL> = <Ctrl-G> = ASCII 7 +
    633 Beep the speaker.
    634 
    635 
    636 == BOOT LOADER IDS USED ==
    637 The Linux boot protocol supports a "boot loader ID", a single byte where
    638 the upper nybble specifies a boot loader family (3 = *Syslinux*) and the
    639 lower nybble is version or, in the case of *Syslinux*, media:
    640 
    641 	0x31 (49) = SYSLINUX
    642 	0x32 (50) = PXELINUX
    643 	0x33 (51) = ISOLINUX
    644 	0x34 (52) = EXTLINUX
    645 
    646 In recent versions of Linux, this ID is available as
    647 /proc/sys/kernel/bootloader_type.
    648 
    649 
    650 == NOVICE PROTECTION ==
    651 *Syslinux* will attempt to detect booting on a machine with too little
    652 memory, which means the Linux boot sequence cannot complete.  If so, a
    653 message is displayed and the boot sequence aborted.  Holding down the
    654 Ctrl key while booting disables this feature.
    655 
    656 Any file that *Syslinux* uses can be marked hidden, system or readonly
    657 if so is convenient; *Syslinux* ignores all file attributes.  The
    658 *SYSLINUX* installer automatically sets the readonly/hidden/system
    659 attributes on LDLINUX.SYS.
    660 
    661 == EXAMPLE ==
    662 Here are some sample config files:
    663 ----
    664 # SERIAL 0 115200
    665 DEFAULT linux
    666 PROMPT 1
    667 TIMEOUT 600
    668 
    669 LABEL linux
    670   LINUX vmlinuz
    671   APPEND initrd=initrd1.gz,initrd2.gz
    672 
    673 LABEL m
    674   COM32 menu.c32
    675 ----
    676 In this example, serial port use is disabled but can be enabled by
    677 uncommenting the first line and utilize serial port 0 at 115200 bps.  If
    678 'linux' is typed on the command line, the kernel-like file 'vmlinuz' is
    679 executed as a Linux kernel, initrd files initrd1.gz and initrd2.gz are
    680 loaded as initial ramdisk files (like cpio.gz files for initramfs).  If
    681 'm' is typed on the command line, the COM32 module 'menu.c32' is
    682 executed to launch a menu system.
    683 
    684 
    685 
    686 == KNOWN BUGS ==
    687 include::com-bug.txt[]
    688 
    689 
    690 == BUG REPORTS ==
    691 include::com-rpt.txt[]
    692 
    693 
    694 == AUTHOR ==
    695 This AsciiDoc derived document is a modified version of the original
    696 *SYSLINUX* documentation by {author} <{author-email}>.  The conversion
    697 to an AsciiDoc was made by {editor1} <{editor1-email}>
    698