1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
|
A .menu file can be used to describe basic menu structures which can be converted
into C code which can then be compiled into a .c32 file for use with SYSLINUX.
The format of a .menu file is similar to an ini file, but with important
differences.
Lines starting with # and ; are treated as comments. Blank lines are used to
separate the attributes of one menu item from another. Multiple blank lines are
equivalent to a single one. In other contexts Blank lines are not significant.
Menus
-----
Each menu declaration starts with a line containing the name of menu in [ ].
This is the "nickname" of the menu and should be different for different menus.
This is not visible to the user of the menu system. The initial menu must
be called "main"
The menu declaration is followed by lines which set the attributes of the menu.
This is followed by a blank line and followed by declaration of menu items in
that menu.
All lines which occur before the first menu declaration is considered as
a global declaration.
Abstract Format
---------------
The overall format should look like this
--------------------------------------------------------
<GLOBAL SETTINGS>
[menuname1]
<MENU SETTINGS>
<ITEM 1>
...
<ITEM N>
[menuname2]
<MENU SETTINGS>
<ITEM A>
<ITEM B>
----------------------------------------------------------
GLOBAL SETTINGS
---------------
The following global settings are now supported. Many of the keywords
accept what we call a "DOT COMMAND" as argument. Simply put they are
instructions to the menu system to perform certain actions.
The syntax and semantics of DOT COMMANDS are given later in the section
titled "DOT COMMANDS".
videomode: (default 0xFF) [Use with care]
The textmode in which the whole menu system should operate.
Must be a number (use 0x notation for hexadecimal).
Lookup Ralph Brown Interrupt List and search for Video Mode
to find a number to put here.
setting to 0xFF will mean, menu system will use the current
video mode.
title:
The title of the whole menu system
top, left, bot, right: (default 0,0,21,79)
The area of the screen used by the menu system. The remaining
part of the screen can be used by the user for anything.
helpdir: (default /isolinux/help)
Location of the directory where help information is stored. The
help files must be called "hlpNNNNN.txt" where NNNNN is the helpid.
pwdfile: (default /isolinux/passwd)
The name of the password file which contains user, password and permissions
See "passwd" file for details regarding format of this file
editrow: (default 23)
the row on the screen where one can edit the command line. This must
be outside the menu area. Set this to a negative number to disable
editing the command line. In case of authenticated users, the current
user must have "editcmd" permissions to edit the command line
pwdrow: (default 23)
The row on the screen used for user authentication. Must be outside
menu area (can be same as editrow). Set to negative to disable
user authentication
skipif: (default 0)
The OR of the bits in the Shift-flags any of which can cause the menu system
to be skipped all together (0 means menu system always runs). It can also
be a combination of "Alt","Ctrl","Shift","Caps","Ins","Scroll".
When menu system starts it checks if any of the specified keys are On/pressed.
If true, the system exits immediately and executes the skipcmd.
e.g. setting it to "shift-alt-caps" means menu will be skipped if alt OR shift
is pressed OR caps is on. setting to "0" means menu will always run.
skipcmd: (default .exit)
valid terminal commands: .exit .ignore or any syslinux command
command to execute if menu system is skipped. This must be a non-trivial
syslinux command if skipcondn is not "0". ".exit" means menu system
quits back to the boot prompt.
startfile: (default "")
if non-empty the system will display the contents of this file before launching
the menusystem. This happens only if the menusystem is not skipped. Can be used
to display licensing, usage or welcome messages. A file with given name
is expected to be found in the helpdir directory.
exitcmd: (default .exit)
valid terminal commands: .exit .repeat or any syslinux command
The default command to execute when user quits the menu system.
exitcmdroot: (default =exitcmd)
Same as exitcmd except applies when current user has "root" privileges. If not
specified, it is assumed to be the same as exitcmd
timeout: (default 3000)
The amount of time (in multiple of 0.1 seconds) to wait for user keypress. If no
key pressed for specified duration then the timeoutcmd is executed.
totaltimeout: (default 0)
The total amount of time (in multiples of 0.1 seconds) the system will wait for
user to make a decision. If no decision has been made in the specified duration
totaltimeoutcmd will be executed
NOTE: This does not include the time spent browsing the help system or
the time taken for the user to enter his/her authentication credentials.
timeoutcmd: (default .beep)
valid terminal commands: .wait .enter .escape or any syslinux command
command to execute when we timeout waiting for user input. The commands
.enter and .escape tell the menu system to pretend the user typed ENTER or
ESCAPE on the keyboard, while .wait tells the menusystem to wait for one
more time period
totaltimeoutcmd: (default .wait)
choices are the same as for timeoutcmd
MENU SETTINGS
-------------
title: (must be specified)
Title of this menu
row,col: [Usage not recomended]
position in screen where this menu should be placed. By default the
system will choose an appropriate location.
ITEM ATTRIBUTES
---------------
item:
The string displayed to the user. Characters enclosed in < > are highlighted.
shortcut: (default -1) valid values A-Za-z0-9 or -1 [Usage not recommended]
Sets the shortcut key for this item. If set to -1, the system scans for the first
highlighted letter in the given range and sets that as the shortcut key.
info: (default same as data)
Additional textual information displayed in the status bar
type:
the type of entry this item represents. This is one of the following:
run: choosing this will run something in SYSLINUX
use data to specify the actual command to execute
exitmenu: exit to parent menu
submenu: choosing will open up submenu
use data to specify the "nickname" of the menu
which should come here
sep: Position a separator here
inactive: menu item is disabled
checkbox: this is a checkbox
use state to set initial state
invisible: User does not see this item
radioitem: One choice in a radiomenu
radiomenu: Allow user to choose one of many choices
(initial choice is always NULL)
login: Selecting this will allow user to login to system
data:
for run items, the syslinux command to execute
for submenus and radiomenus, nickname of menu
for checkboxes, string to be added to kernel command line (if set)
for radioitems, string to be added to kernel command line (if chosen)
ipappend:
ipappend flag to pass to PXELINUX (harmless for other variants of SYSLINUX)
See syslinux documentation for meaning of the FLAGS
helpid: (default 65535 which is not a valid id)
associates a context for the help system.
state: (default 0)
Initial state of a checkbox (for other items this has no meaning)
perms: (default "")
string containing the name of the permission which user must
have to activate this item. For eg. if this item is a submenu
then user needs the permission in order to open the submenu
argsmenu: (default "")
Name of the menu to be scanned for setting additional arguments to
pass to command line when this item is chosen for execution. Submenus
of specified menu are also scanned. Only checkboxes and radiomenu's
are scanned. Items of other type in this menu is silently ignored.
DOT COMMANDS
------------
Dot commands are basically instructions to the menu system to do certain things.
A "single command" is one of the following
[NT] A syslinux command (any DOT command not starting with a "." is assumed to be this)
[NT] .beep [n]
[NT] .help <file>
[NT] .nop
[T] .exit or .quit (equivalent)
[T] .repeat or .wait or .ignore (all three are equivalent)
A dot command is a sequence of "single commands" separated by a "%". When a dot command
is executed the system executes all the given "single commands" in the specified order.
All the commands marked "[T]" are terminal commands, i.e. when the system encounters
such a command it stops processing the dot command and returns the terminal command
which caused the termination to the caller (who usually interprets the command
appropriately).
All commands marked with [NT] are non-terminal commands, i.e. once these commands are
processed the system continues to process the remaining "single commands" specified in
the "DOT COMMAND".
Note: The case of a syslinux command is tricky. When executed, the command should never return
(if the specified kernel exists) so the fact that we consider it a [NT] should be taken with
a pinch of salt. However, if the syslinux command does return (in case of no kernel), then
remaining "single commands" are processed. In particular "ker1 arg1 % ker2 arg2 % ker3 args"
has the effect of executing the first kernel which exists
.nop:
Does nothing.
.beep:
.beep [n] produces a beep n times. n must be between 0 and 9. If not specified n=1.
(hence .beep 0 is equivalent to .nop)
.help:
.help <file>
Displays the help file <file> which is assumed to be in the "help" directory. Its name
does not have to be in the form "hlpNNNNN.txt" (as required by the context sensitive help).
Executing this command will mean the appropriate help screen is displayed till the user hits
ESCAPE
The meaning of the Terminal commands can vary with the context in which it is used. For example,
a ".enter" or ".escape" does not have any meaning in the "onerrorcmd" context but it has a meaning
in the "ontimeout" context. In case the user gives a Terminal command which does not make sense, it
is upto the code (in this case adv_menu.tpl) to do what it pleases.
|