Merge branch 'ui'
[profile/ivi/syslinux.git] / doc / menu.txt
1 There are two menu systems included with Syslinux, the advanced menu
2 system, and the simple menu system.
3
4
5 +++ THE ADVANCED MENU SYSTEM +++
6
7 The advanced menu system, written by Murali Krishnan Ganapathy, is
8 located in the menu/ subdirectly.  It allows the user to create
9 hierarchial submenus, dynamic options, checkboxes, and just about
10 anything you want.  It requires that the menu is compiled from a
11 simple C file, see menu/simple.c and menu/complex.c for examples.
12
13 The advanced menu system doesn't support serial console at this time.
14
15 See menu/README for more information.
16
17
18 +++ THE SIMPLE MENU SYSTEM +++
19
20 The simple menu system is a single module located at
21 com32/modules/vesamenu.c32 (graphical) or com32/modules/menu.c32 (text
22 mode only).  It uses the same configuration file as the regular
23 Syslinux command line, and displays all the LABEL statements.
24
25 To use the menu system, simply make sure [vesa]menu.c32 is in the
26 appropriate location for your boot medium (the same directory as the
27 configuration file for SYSLINUX, EXTLINUX and ISOLINUX, and the same
28 directory as pxelinux.0 for PXELINUX), and put the following options
29 in your configuration file:
30
31 UI menu.c32
32
33
34 There are a few menu additions to the configuration file, all starting
35 with the keywords MENU or TEXT; like the rest of the Syslinux config
36 file language, it is case insensitive:
37
38
39 MENU TITLE title
40
41         Give the menu a title.  The title is presented at the top of
42         the menu.
43
44
45 MENU HIDDEN
46
47         Do not display the actual menu unless the user presses a key.
48         All that is displayed is a timeout message.
49
50
51 MENU SEPARATOR
52
53         Insert an empty line in the menu.
54
55
56 MENU LABEL label
57
58         (Only valid after a LABEL statement.)
59         Changes the label displayed for a specific entry.  This allows
60         you to have a label that isn't suitable for the command line,
61         for example:
62
63         # Soft Cap Linux
64         LABEL softcap
65                 MENU LABEL Soft Cap ^Linux 9.6.36
66                 KERNEL softcap-9.6.36.bzi
67                 APPEND whatever
68
69         # A very dense operating system
70         LABEL brick
71                 MENU LABEL ^Windows CE/ME/NT
72                 KERNEL chain.c32
73                 APPEND hd0 2
74
75         The ^ symbol in a MENU LABEL statement defines a hotkey.
76         The hotkey will be highlighted in the menu and will move the
77         menu cursor immediately to that entry.
78
79         Reusing hotkeys is disallowed, subsequent entries will not be
80         highlighted, and will not work.
81
82         Keep in mind that the LABELs, not MENU LABELs, must be unique,
83         or odd things will happen to the command-line.
84
85
86 MENU INDENT count
87
88         (Only valid after a LABEL statement.)
89         Will add "count" spaces in front of the displayed menu entry.
90
91
92 MENU DISABLE
93
94         (Only valid after a LABEL statement.)
95         Makes the entry unselectable.  This allows you to make a
96         section in your menu with different options below it.
97         for example:
98
99         # Entries for network boots
100         LABEL -
101                 MENU LABEL Network:
102                 MENU DISABLE
103
104         # Soft Cap Linux
105         LABEL softcap
106                 MENU LABEL Soft Cap ^Linux 9.6.36
107                 MENU INDENT 1
108                 KERNEL softcap-9.6.36.bzi
109                 APPEND whatever
110
111         # Dos 6.22
112         LABEL dos
113                 MENU LABEL ^Dos 6.22
114                 MENU INDENT 1
115                 KERNEL memdisk
116                 APPEND initrd=dos622.imz
117
118         # Separator
119         MENU SEPARATOR
120
121         # Entries for local boots
122         LABEL -
123                 MENU LABEL Local:
124                 MENU DISABLE
125
126         # Windows 2000
127         LABEL w2k
128                 MENU LABEL ^Windows 2000
129                 MENU INDENT 1
130                 KERNEL chain.c32
131                 APPEND hd0 1
132
133         # Windows XP
134         LABEL xp
135                 MENU LABEL Windows ^XP
136                 MENU INDENT 1
137                 KERNEL chain.c32
138                 APPEND hd0 2
139
140 MENU HIDE
141
142         (Only valid after a LABEL statement.)
143         Suppresses a particular LABEL entry from the menu.
144
145
146 MENU DEFAULT
147
148         (Only valid after a LABEL statement.)
149
150         Indicates that this entry should be the default for this
151         particular submenu.  See also the DEFAULT directive below.
152
153
154 TEXT HELP
155 Help text ...
156 ... which can span multiple lines
157 ENDTEXT
158
159         (Only valid after a LABEL statement.)
160
161         Specifies a help text that should be displayed when a particular
162         selection is highlighted.
163
164
165 MENU PASSWD passwd
166
167         (Only valid after a LABEL statement.)
168
169         Sets a password on this menu entry.  "passwd" can be either a
170         cleartext password, a SHA-1 encrypted password (starting with
171         $4$), or and MD5 encrypted password (starting with $1$).
172
173         Use the included Perl scripts "sha1pass" or "md5pass" to
174         encrypt passwords.  MD5 passwords are compatible with most
175         Unix password file utilities; SHA-1 passwords are probably
176         unique to Syslinux.  Obviously, if you don't encrypt your
177         passwords they will not be very secure at all.
178
179         If you are using passwords, you want to make sure you also use
180         the settings "NOESCAPE 1", "PROMPT 0", and either set
181         "ALLOWOPTIONS 0" or use a master password (see below.)
182
183         If passwd is an empty string, this menu entry can only be
184         unlocked with the master password.
185
186
187 MENU MASTER PASSWD passwd
188
189         Sets a master password.  This password can be used to boot any
190         menu entry, and is required for the [Tab] and [Esc] keys to
191         work.
192
193
194 MENU BACKGROUND background
195
196         For vesamenu.c32, sets the background image.  The background
197         can either be a color (see MENU COLOR) or the name of an image
198         file, which should be 640x480 pixels and either in PNG or JPEG
199         format.
200
201
202 MENU BEGIN [tagname]
203 MENU END
204
205         Begin/end a submenu.  The entries between MENU BEGIN and MENU
206         END form a submenu, which is marked with a > mark on the right
207         hand of the screen.  Submenus inherit the properties of their
208         parent menus, but can override them, and can thus have their
209         own backgrounds, master passwords, titles, timeouts, messages
210         and so forth.
211
212
213 MENU GOTO tagname
214
215         (Only valid after a LABEL statement.)
216
217         This label will transfer to the named submenu instead of
218         booting anything.  To transfer to the top-level menu, specify
219         "menu goto .top".
220
221
222 MENU EXIT [tagname]
223
224         (Only valid after a label statement inside MENU BEGIN ...
225         MENU END)
226
227         Exit to the next higher menu, or, if tagname is specified, to
228         the named menu.
229
230
231 MENU QUIT
232
233         (Only valid after a LABEL statement.)
234
235         This label quits the menu system.
236
237         WARNING: if MENU MASTER PASSWD or ALLOWOPTIONS 0 is set, this
238         will still allow exiting to the CLI; however, a separate MENU
239         PASSWD can of course be set for this label.
240
241
242 MENU START
243
244         (Only valid inside MENU BEGIN ... MENU END)
245
246         Indicates that the menu system should start at the menu being
247         defined instead of at the top-level menu.  See also the
248         DEFAULT directive below.
249
250
251 DEFAULT label
252
253         Set the global default.  If "label" points into a submenu,
254         that menu becomes the start menu; in other words, this
255         directive has the same effect as both MENU DEFAULT and MENU
256         START.
257
258         For backwards compatibility with earlier versions of Syslinux,
259         this directive is ignored unless the configuration file also
260         contains a UI directive.
261
262         Note: the CLI accepts options after the label, or even a
263         non-label.  The menu system does not support that.
264
265
266 INCLUDE filename [tagname]
267 MENU INCLUDE filename [tagname]
268
269         Include the contents of the configuration file filename at
270         this point.
271
272         In the case of MENU INCLUDE, the included data is only seen by
273         the menu system; the core syslinux code does not parse this
274         command, so any labels defined in it are unavailable.
275
276         If a tagname is included, the whole file is considered to have
277         been bracketed with a MENU BEGIN tagname ... MENU END pair,
278         and will therefore show up as a submenu.
279
280
281 MENU AUTOBOOT message
282
283         Replaces the message "Automatic boot in # second{,s}...".  The
284         symbol # is replaced with the number of seconds remaining.
285         The syntax "{singular,[dual,]plural}" can be used to conjugate
286         appropriately.
287
288
289 MENU TABMSG message
290
291         Replaces the message "Press [Tab] to edit options".
292
293
294 MENU NOTABMSG message
295
296         Takes the place of the TABMSG message if option editing is
297         disabled.  Defaults to blank.
298
299
300 MENU PASSPROMPT message
301
302         Replaces the message "Password required".
303
304
305 MENU COLOR element ansi foreground background shadow
306
307         Sets the color of element "element" to the specified color
308         sequence:
309
310         screen          Rest of the screen
311         border          Border area
312         title           Title bar
313         unsel           Unselected menu item
314         hotkey          Unselected hotkey
315         sel             Selection bar
316         hotsel          Selected hotkey
317         disabled        Disabled menu item
318         scrollbar       Scroll bar
319         tabmsg          Press [Tab] message
320         cmdmark         Command line marker
321         cmdline         Command line
322         pwdborder       Password box border
323         pwdheader       Password box header
324         pwdentry        Password box contents
325         timeout_msg     Timeout message
326         timeout         Timeout counter
327         help            Help text
328         msgXX           Message (F-key) file attribute XX
329
330         ... where XX is two hexadecimal digits (the "plain text" is 07).
331
332         "ansi" is a sequence of semicolon-separated ECMA-48 Set
333         Graphics Rendition (<ESC>[m) sequences:
334
335         0     reset all attributes to their defaults
336         1     set bold
337         4     set underscore (simulated with color on a color display)
338         5     set blink
339         7     set reverse video
340         22    set normal intensity
341         24    underline off
342         25    blink off
343         27    reverse video off
344         30    set black foreground
345         31    set red foreground
346         32    set green foreground
347         33    set brown foreground
348         34    set blue foreground
349         35    set magenta foreground
350         36    set cyan foreground
351         37    set white foreground
352         38    set underscore on, set default foreground color
353         39    set underscore off, set default foreground color
354         40    set black background
355         41    set red background
356         42    set green background
357         43    set brown background
358         44    set blue background
359         45    set magenta background
360         46    set cyan background
361         47    set white background
362         49    set default background color
363
364         These are used (a) in text mode, and (b) on the serial
365         console.
366
367         "foreground" and "background" are color codes in #AARRGGBB
368         notation, where AA RR GG BB are hexadecimal digits for alpha
369         (opacity), red, green and blue, respectively.  #00000000
370         represents fully transparent, and #ffffffff represents opaque
371         white.
372
373         "shadow" controls the handling of the graphical console text
374         shadow.  Permitted values are "none" (no shadowing), "std" or
375         "standard" (standard shadowing - foreground pixels are
376         raised), "all" (both background and foreground raised), and
377         "rev" or "reverse" (background pixels are raised.)
378
379         If any field is set to "*" or omitted (at the end of the line)
380         then that field is left unchanged.
381
382
383         The current defaults are:
384
385         menu color screen       37;40      #80ffffff #00000000 std
386         menu color border       30;44      #40000000 #00000000 std
387         menu color title        1;36;44    #c00090f0 #00000000 std
388         menu color unsel        37;44      #90ffffff #00000000 std
389         menu color hotkey       1;37;44    #ffffffff #00000000 std
390         menu color sel          7;37;40    #e0000000 #20ff8000 all
391         menu color hotsel       1;7;37;40  #e0400000 #20ff8000 all
392         menu color disabled     1;30;44    #60cccccc #00000000 std
393         menu color scrollbar    30;44      #40000000 #00000000 std
394         menu color tabmsg       31;40      #90ffff00 #00000000 std
395         menu color cmdmark      1;36;40    #c000ffff #00000000 std
396         menu color cmdline      37;40      #c0ffffff #00000000 std
397         menu color pwdborder    30;47      #80ffffff #20ffffff std
398         menu color pwdheader    31;47      #80ff8080 #20ffffff std
399         menu color pwdentry     30;47      #80ffffff #20ffffff std
400         menu color timeout_msg  37;40      #80ffffff #00000000 std
401         menu color timeout      1;37;40    #c0ffffff #00000000 std
402         menu color help         37;40      #c0ffffff #00000000 std
403         menu color msg07        37;40      #90ffffff #00000000 std
404
405
406 MENU MSGCOLOR fg_filter bg_filter shadow
407
408         Sets *all* the msgXX colors to a color scheme derived from the
409         fg_filter and bg_filter values.  Background color zero is
410         always treated as transparent.  The default corresponds to:
411
412         menu msgcolor #90ffffff #80ffffff std
413
414         This directive should come before any directive that
415         customizes individual msgXX colors.
416
417
418 MENU WIDTH 80
419 MENU MARGIN 10
420 MENU PASSWORDMARGIN 3
421 MENU ROWS 12
422 MENU TABMSGROW 18
423 MENU CMDLINEROW 18
424 MENU ENDROW -1
425 MENU PASSWORDROW 11
426 MENU TIMEOUTROW 20
427 MENU HELPMSGROW 22
428 MENU HELPMSGENDROW -1
429 MENU HIDDENROW -2
430 MENU HSHIFT 0
431 MENU VSHIFT 0
432
433         These options control the layout of the menu on the screen.
434         The values above are the defaults.
435
436         A negative value is relative to the calculated length of the
437         screen (25 for text mode, 28 for VESA graphics mode.)
438
439
440 F1 textfile background
441 ...
442 F12 textfile background
443
444         Displays full-screen help (also available at the command line.)
445         The same control code sequences as in the command line
446         interface are supported, although some are ignored.
447
448         Additionally, a second argument allows a different background
449         image (see MENU BACKGROUND for supported formats) to be displayed.
450
451
452 The menu system honours the TIMEOUT command; if TIMEOUT is specified
453 it will execute the ONTIMEOUT command if one exists, otherwise it will
454 pick the default menu option.
455
456 Normally, the user can press [Tab] to edit the menu entry, and [Esc]
457 to return to the Syslinux command line.  However, if the configuration
458 file specifies ALLOWOPTIONS 0, these keys will be disabled, and if
459 MENU MASTER PASSWD is set, they require the master password.
460
461 The simple menu system supports serial console, using the normal
462 SERIAL directive.  However, it can be quite slow over a slow serial
463 link; you probably want to set your baudrate to 38400 or higher if
464 possible.  It requires a Linux/VT220/ANSI-compatible terminal on the
465 other end.
466
467
468         +++ USING AN ALTERNATE CONFIGURATION FILE +++
469
470
471 It is also possible to load a secondary configuration file, to get to
472 another menu.  To do that, invoke menu.c32 with the name of the
473 secondary configuration file.
474
475 LABEL othermenu
476         MENU LABEL Another Menu
477         KERNEL menu.c32
478         APPEND othermenu.conf
479
480 If you specify more than one file, they will all be read, in the order
481 specified.  The dummy filename ~ (tilde) is replaced with the filename
482 of the main configuration file.
483
484 # The file graphics.conf contains common color and layout commands for
485 # all menus.
486 LABEL othermenu
487         MENU LABEL Another Menu
488         KERNEL vesamenu.c32
489         APPEND graphics.conf othermenu.conf
490
491 # Return to the main menu
492 LABEL mainmenu
493         MENU LABEL Return to Main Menu
494         KERNEL vesamenu.c32
495         APPEND graphics.conf ~
496
497 See also the MENU INCLUDE directive above.