1 \ Menu.rc
   2 \
   3 \ Load required Forth modules
   4 include /boot/forth/version.4th
   5 include /boot/forth/brand.4th
   6 include /boot/forth/menu.4th
   7 include /boot/forth/menu-commands.4th
   8 include /boot/forth/shortcuts.4th
   9 
  10 \ Screen prep
  11 clear         \ clear the screen (see `screen.4th')
  12 print_version \ print version string (bottom-right; see `version.4th')
  13 draw-beastie  \ draw freebsd mascot (on right; see `beastie.4th')
  14 draw-brand    \ draw the FreeBSD title (top-left; see `brand.4th')
  15 menu-init     \ initialize the menu area (see `menu.4th')
  16 
  17 \ Initialize main menu constructs (see `menu.4th')
  18 \ NOTE: To use `non-ansi' variants, add `loader_color=0' to loader.conf(5)
  19 \ NOTE: ANSI variants can use `^' in place of literal `Esc' (ASCII 27)
  20 
  21 \
  22 \ MAIN MENU
  23 \
  24 
  25 set menuset_name1="main"
  26 
  27 set mainmenu_init[1]="init_boot"
  28 
  29 s" smartos" getenv? [if]
  30         set mainmenu_caption[1]="Boot SmartOS [Enter]"
  31         set maintoggled_text[1]="R[e]covery (root/root) [Enter]"
  32         set mainansi_caption[1]="^[1mB^[moot SmartOS ^[1m[Enter]^[m"
  33         set maintoggled_ansi[1]="R^[1me^[mcovery (root/root) ^[1m[Enter]^[m"
  34 [else]
  35         set mainmenu_caption[1]="Boot Multi User [Enter]"
  36         set maintoggled_text[1]="Boot [S]ingle User [Enter]"
  37         set mainansi_caption[1]="^[1mB^[moot Multi User ^[1m[Enter]^[m"
  38         set maintoggled_ansi[1]="Boot ^[1mS^[mingle User ^[1m[Enter]^[m"
  39 [then]
  40 set mainmenu_command[1]="boot"
  41 \ keycode set by init_boot
  42 
  43 set mainmenu_init[2]="init_altboot"
  44 s" smartos" getenv? [if]
  45         set mainmenu_caption[2]="[R]ecovery (root/root)"
  46         set maintoggled_text[2]="[B]oot SmartOS"
  47         set mainansi_caption[2]="^[1mR^[mecovery (root/root)"
  48         set maintoggled_ansi[2]="^[1mB^[oot SmartOS"
  49 [else]
  50         set mainmenu_caption[2]="Boot [S]ingle User"
  51         set maintoggled_text[2]="Boot [M]ulti User"
  52         set mainansi_caption[2]="Boot ^[1mS^[mingle User"
  53         set maintoggled_ansi[2]="Boot ^[1mM^[multi User"
  54 [then]
  55 set mainmenu_command[2]="altboot"
  56 \ keycode set by init_altboot
  57 
  58 set mainmenu_caption[3]="[Esc]ape to loader prompt"
  59 set mainmenu_command[3]="goto_prompt"
  60 set mainmenu_keycode[3]=27
  61 set mainansi_caption[3]="^[1mEsc^[mape to loader prompt"
  62 
  63 \ Enable built-in "Reboot" trailing menuitem
  64 \ NOTE: appears before menu_options if configured
  65 \
  66 set mainmenu_reboot
  67 
  68 \ Enable "Options:" separator. When set to a numerical value (1-8), a visual
  69 \ separator is inserted before that menuitem number.
  70 \
  71 set mainmenu_options=5
  72 
  73 \ illumos does not have multiple kernels
  74 \ set mainmenu_kernel=5
  75 \ set mainmenu_command[5]="cycle_kernel"
  76 \ set mainmenu_keycode[5]=107
  77 
  78 set mainmenu_caption[5]="Configure Boot [O]ptions..."
  79 set mainmenu_command[5]="2 goto_menu"
  80 set mainmenu_keycode[5]=111
  81 set mainansi_caption[5]="Configure Boot ^[1mO^[mptions..."
  82 
  83 \ Boot Environments are (supported) only on ZFS
  84 s" currdev" getenv drop 4 s" zfs:" compare 0= be-pages and [if]
  85 set mainmenu_caption[6]="Select Boot [E]nvironment..."
  86 set mainmenu_command[6]="3 goto_menu"
  87 set mainmenu_keycode[6]=101
  88 set mainansi_caption[6]="Select Boot ^[1mE^[mnvironment..."
  89 
  90   s" chain_disk" getenv? [if]
  91         set mainmenu_caption[7]="Chain[L]oad ${chain_disk}"
  92         set mainmenu_command[7]="chain ${chain_disk}"
  93         set mainmenu_keycode[7]=108
  94         set mainansi_caption[7]="Chain^[1mL^[moad ${chain_disk}"
  95   [then]
  96 [else]
  97   s" chain_disk" getenv? [if]
  98         set mainmenu_caption[6]="Chain[L]oad ${chain_disk}"
  99         set mainmenu_command[6]="chain ${chain_disk}"
 100         set mainmenu_keycode[6]=108
 101         set mainansi_caption[6]="Chain^[1mL^[moad ${chain_disk}"
 102   [then]
 103 [then]
 104 
 105 \
 106 \ BOOT OPTIONS MENU
 107 \
 108 
 109 set menuset_name2="options"
 110 
 111 set optionsmenu_caption[1]="Back to Main Menu [Backspace]"
 112 set optionsmenu_command[1]="1 goto_menu"
 113 set optionsmenu_keycode[1]=8
 114 set optionsansi_caption[1]="Back to Main Menu ^[1m[Backspace]^[m"
 115 
 116 \ set optionsmenu_caption[2]="Load System [D]efaults"
 117 \ set optionsmenu_command[2]="set_default_boot_options"
 118 \ set optionsmenu_keycode[2]=100
 119 \ set optionsansi_caption[2]="Load System ^[1mD^[mefaults"
 120 
 121 set optionsmenu_options=2
 122 set optionsmenu_optionstext="Boot Options:"
 123 
 124 set optionsmenu_osconsole=2
 125 set optionsmenu_command[2]="cycle_osconsole"
 126 set optionsmenu_keycode[2]=99
 127 
 128 set optionsmenu_acpi=3
 129 set optionsmenu_command[3]="cycle_acpi"
 130 set optionsmenu_keycode[3]=97
 131 
 132 set optionsmenu_init[4]="init_singleuser"
 133 set optionsmenu_caption[4]="[S]ingle User......... Off"
 134 set optionstoggled_text[4]="[S]ingle User......... On"
 135 set optionsmenu_command[4]="toggle_singleuser"
 136 set optionsmenu_keycode[4]=115
 137 set optionsansi_caption[4]="^[1mS^[mingle User........... ^[34;1mOff^[m"
 138 set optionstoggled_ansi[4]="^[1mS^[mingle User........... ^[32;7mOn^[m"
 139 
 140 set optionsmenu_init[5]="init_verbose"
 141 set optionsmenu_caption[5]="[V]erbose............. Off"
 142 set optionstoggled_text[5]="[V]erbose............. On"
 143 set optionsmenu_command[5]="toggle_verbose"
 144 set optionsmenu_keycode[5]=118
 145 set optionsansi_caption[5]="^[1mV^[merbose............... ^[34;1mOff^[m"
 146 set optionstoggled_ansi[5]="^[1mV^[merbose............... ^[32;7mOn^[m"
 147 
 148 set optionsmenu_init[6]="init_reconfigure"
 149 set optionsmenu_caption[6]="[R]econfigure......... Off"
 150 set optionstoggled_text[6]="[R]econfigure......... On"
 151 set optionsmenu_command[6]="toggle_reconfigure"
 152 set optionsmenu_keycode[6]=114
 153 set optionsansi_caption[6]="^[1mR^[meconfigure........... ^[34;1mOff^[m"
 154 set optionstoggled_ansi[6]="^[1mR^[meconfigure........... ^[32;7mOn^[m"
 155 
 156 set optionsmenu_init[7]="init_kmdb"
 157 set optionsmenu_caption[7]="Load [k]mdb........... Off"
 158 set optionstoggled_text[7]="Load [k]mdb........... On"
 159 set optionsmenu_command[7]="toggle_kmdb"
 160 set optionsmenu_keycode[7]=107
 161 set optionsansi_caption[7]="Load ^[1mk^[mmdb............. ^[34;1mOff^[m"
 162 set optionstoggled_ansi[7]="Load ^[1mk^[mmdb............. ^[32;7mOn^[m"
 163 
 164 set optionsmenu_init[8]="init_drop_into_kmdb"
 165 set optionsmenu_caption[8]="[D]rop into kmdb...... Off"
 166 set optionstoggled_text[8]="[D]rop into kmdb...... On"
 167 set optionsmenu_command[8]="toggle_drop_into_kmdb"
 168 set optionsmenu_keycode[8]=100
 169 set optionsansi_caption[8]="^[1mD^[mrop into kmdb........ ^[34;1mOff^[m"
 170 set optionstoggled_ansi[8]="^[1mD^[mrop into kmdb........ ^[32;7mOn^[m"
 171 
 172 
 173 \
 174 \ BOOT ENVIRONMENT MENU
 175 \
 176 
 177 \ the BE list is read from [pool]/boot/menu.lst, the list in file
 178 \ is ordered from oldest to most recent.
 179 \ the BE menu will list entries from most recent to oldest,
 180 \ so the first page in menu is last page in menu.lst
 181 
 182 be-pages [if]
 183   set zfs_be_currpage=1
 184   be-set-page                   \ set page data
 185   set menuset_name3="bootenv"
 186 
 187   set bootenvmenu_command[1]="be_draw_screen 1 goto_menu"
 188   set bootenvmenu_keycode[1]=8
 189 
 190   set bootenvmenu_keycode[2]=8
 191   set bootenvmenu_command[2]="be_draw_screen 1 goto_menu"
 192 
 193   set bemenu_current="Active: "
 194   set beansi_current="^[1m${bemenu_current}^[m"
 195   set bemenu_bootfs="bootfs: "
 196   set beansi_bootfs="^[1m${bemenu_bootfs}^[m"
 197   set bemenu_page="[P]age: "
 198   set beansi_page="^[1mP^[mage: "
 199   set bemenu_pageof=" of "
 200   set beansi_pageof="${bemenu_pageof}"
 201 
 202   set bootenvmenu_init="init_bootenv"
 203 
 204   set bootenvmenu_keycode[3]=112
 205   set bootenvmenu_command[3]="set_be_page"
 206 
 207   set bootenvmenu_options=4
 208   set bootenvmenu_optionstext="Boot Environments:"
 209 [then]
 210 
 211 \ Enable automatic booting (add ``autoboot_delay=N'' to loader.conf(5) to
 212 \ customize the timeout; default is 10-seconds)
 213 \
 214 set menu_timeout_command="boot"
 215 
 216 \ Include optional elements defined in a local file
 217 \
 218 try-include /boot/menu.rc.local
 219 
 220 \ Display the main menu (see `menu.4th')
 221 set menuset_initial=1
 222 menuset-loadinitial
 223 menu-display