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