summaryrefslogtreecommitdiff
path: root/usr/src/boot/forth/menu.rc
blob: 00ab7445c3db2109a672b209c94f3e3f8e4bc1de (plain)
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
\ Menu.rc
\
\ Load required Forth modules
include /boot/forth/version.4th
include /boot/forth/brand.4th
include /boot/forth/menu.4th
include /boot/forth/menu-commands.4th
include /boot/forth/shortcuts.4th

\ Screen prep
clear         \ clear the screen (see `screen.4th')
print_version \ print version string (bottom-right; see `version.4th')
draw-beastie  \ draw freebsd mascot (on right; see `beastie.4th')
draw-brand    \ draw the FreeBSD title (top-left; see `brand.4th')
menu-init     \ initialize the menu area (see `menu.4th')

\ Initialize main menu constructs (see `menu.4th')
\ NOTE: To use `non-ansi' variants, add `loader_color=0' to loader.conf(5)
\ NOTE: ANSI variants can use `^' in place of literal `Esc' (ASCII 27)

\
\ MAIN MENU
\

set menuset_name1="main"

set mainmenu_init[1]="init_boot"

s" smartos" getenv? [if]
	set mainmenu_caption[1]="Boot SmartOS [Enter]"
	set maintoggled_text[1]="R[e]covery (root/root) [Enter]"
	set mainansi_caption[1]="^[1mB^[moot SmartOS ^[1m[Enter]^[m"
	set maintoggled_ansi[1]="R^[1me^[mcovery (root/root) ^[1m[Enter]^[m"
[else]
	set mainmenu_caption[1]="Boot Multi User [Enter]"
	set maintoggled_text[1]="Boot [S]ingle User [Enter]"
	set mainansi_caption[1]="^[1mB^[moot Multi User ^[1m[Enter]^[m"
	set maintoggled_ansi[1]="Boot ^[1mS^[mingle User ^[1m[Enter]^[m"
[then]
set mainmenu_command[1]="boot"
\ keycode set by init_boot

set mainmenu_init[2]="init_altboot"
s" smartos" getenv? [if]
	set mainmenu_caption[2]="[R]ecovery (root/root)"
	set maintoggled_text[2]="[B]oot SmartOS"
	set mainansi_caption[2]="^[1mR^[mecovery (root/root)"
	set maintoggled_ansi[2]="^[1mB^[oot SmartOS"
[else]
	set mainmenu_caption[2]="Boot [S]ingle User"
	set maintoggled_text[2]="Boot [M]ulti User"
	set mainansi_caption[2]="Boot ^[1mS^[mingle User"
	set maintoggled_ansi[2]="Boot ^[1mM^[multi User"
[then]
set mainmenu_command[2]="altboot"
\ keycode set by init_altboot

set mainmenu_caption[3]="[Esc]ape to loader prompt"
set mainmenu_command[3]="goto_prompt"
set mainmenu_keycode[3]=27
set mainansi_caption[3]="^[1mEsc^[mape to loader prompt"

\ Enable built-in "Reboot" trailing menuitem
\ NOTE: appears before menu_options if configured
\
set mainmenu_reboot

\ Enable "Options:" separator. When set to a numerical value (1-8), a visual
\ separator is inserted before that menuitem number.
\
set mainmenu_options=5

set mainmenu_caption[5]="Configure Boot [O]ptions..."
set mainmenu_command[5]="2 goto_menu"
set mainmenu_keycode[5]=111
set mainansi_caption[5]="Configure Boot ^[1mO^[mptions..."

\ Boot Environments are (supported) only on ZFS
s" currdev" getenv drop 4 s" zfs:" compare 0= be-pages and [if]
set mainmenu_caption[6]="Select Boot [E]nvironment..."
set mainmenu_command[6]="3 goto_menu"
set mainmenu_keycode[6]=101
set mainansi_caption[6]="Select Boot ^[1mE^[mnvironment..."

  s" chain_disk" getenv? [if]
	set mainmenu_caption[7]="Chain[L]oad ${chain_disk}"
	set mainmenu_command[7]="chain ${chain_disk}"
	set mainmenu_keycode[7]=108
	set mainansi_caption[7]="Chain^[1mL^[moad ${chain_disk}"
  [then]
[else]
  s" chain_disk" getenv? [if]
	set mainmenu_caption[6]="Chain[L]oad ${chain_disk}"
	set mainmenu_command[6]="chain ${chain_disk}"
	set mainmenu_keycode[6]=108
	set mainansi_caption[6]="Chain^[1mL^[moad ${chain_disk}"
  [then]
[then]

\
\ BOOT OPTIONS MENU
\

set menuset_name2="options"

set optionsmenu_caption[1]="Back to Main Menu [Backspace]"
set optionsmenu_command[1]="1 goto_menu"
set optionsmenu_keycode[1]=8
set optionsansi_caption[1]="Back to Main Menu ^[1m[Backspace]^[m"

\ set optionsmenu_caption[2]="Load System [D]efaults"
\ set optionsmenu_command[2]="set_default_boot_options"
\ set optionsmenu_keycode[2]=100
\ set optionsansi_caption[2]="Load System ^[1mD^[mefaults"

set optionsmenu_options=2
set optionsmenu_optionstext="Boot Options:"

set optionsmenu_osconsole=2
set optionsmenu_command[2]="cycle_osconsole"
set optionsmenu_keycode[2]=99

set optionsmenu_acpi=3
set optionsmenu_command[3]="cycle_acpi"
set optionsmenu_keycode[3]=97

set optionsmenu_init[4]="init_singleuser"
set optionsmenu_caption[4]="[S]ingle User......... Off"
set optionstoggled_text[4]="[S]ingle User......... On"
set optionsmenu_command[4]="toggle_singleuser"
set optionsmenu_keycode[4]=115
set optionsansi_caption[4]="^[1mS^[mingle User........... ^[34;1mOff^[m"
set optionstoggled_ansi[4]="^[1mS^[mingle User........... ^[32;7mOn^[m"

set optionsmenu_init[5]="init_verbose"
set optionsmenu_caption[5]="[V]erbose............. Off"
set optionstoggled_text[5]="[V]erbose............. On"
set optionsmenu_command[5]="toggle_verbose"
set optionsmenu_keycode[5]=118
set optionsansi_caption[5]="^[1mV^[merbose............... ^[34;1mOff^[m"
set optionstoggled_ansi[5]="^[1mV^[merbose............... ^[32;7mOn^[m"

set optionsmenu_init[6]="init_reconfigure"
set optionsmenu_caption[6]="[R]econfigure......... Off"
set optionstoggled_text[6]="[R]econfigure......... On"
set optionsmenu_command[6]="toggle_reconfigure"
set optionsmenu_keycode[6]=114
set optionsansi_caption[6]="^[1mR^[meconfigure........... ^[34;1mOff^[m"
set optionstoggled_ansi[6]="^[1mR^[meconfigure........... ^[32;7mOn^[m"

set optionsmenu_kmdb=7
set optionsmenu_command[7]="cycle_kmdb"
set optionsmenu_keycode[7]=107

\
\ In EFI mode the framebuffer cannot be disabled. Although "framebuffer off"
\ does switch to a simple text protocol, it doesn't affect the kernel which
\ still ends up with a framebuffer console. This option is therefore only
\ exposed in a non-EFI environment.
\
efi? invert [if]
  set optionsmenu_init[8]="init_framebuffer"
  set optionsmenu_caption[8]="[G]raphical Console... Off"
  set optionstoggled_text[8]="[G]raphical Console... On"
  set optionsmenu_command[8]="toggle_framebuffer"
  set optionsmenu_keycode[8]=103
  set optionsansi_caption[8]="^[1mG^[mraphical Console..... ^[34;1mOff^[m"
  set optionstoggled_ansi[8]="^[1mG^[mraphical Console..... ^[32;7mOn^[m"
[then]

\
\ BOOT ENVIRONMENT MENU
\

\ the BE list is read from [pool]/boot/menu.lst, the list in file
\ is ordered from oldest to most recent.
\ the BE menu will list entries from most recent to oldest,
\ so the first page in menu is last page in menu.lst

be-pages [if]
  set zfs_be_currpage=1
  be-set-page			\ set page data
  set menuset_name3="bootenv"

  set bootenvmenu_command[1]="be_draw_screen 1 goto_menu"
  set bootenvmenu_keycode[1]=8

  set bootenvmenu_keycode[2]=8
  set bootenvmenu_command[2]="be_draw_screen 1 goto_menu"

  set bemenu_current="Active: "
  set beansi_current="^[1m${bemenu_current}^[m"
  set bemenu_bootfs="bootfs: "
  set beansi_bootfs="^[1m${bemenu_bootfs}^[m"
  set bemenu_page="[P]age: "
  set beansi_page="^[1mP^[mage: "
  set bemenu_pageof=" of "
  set beansi_pageof="${bemenu_pageof}"

  set bootenvmenu_init="init_bootenv"

  set bootenvmenu_keycode[3]=112
  set bootenvmenu_command[3]="set_be_page"

  set bootenvmenu_options=4
  set bootenvmenu_optionstext="Boot Environments:"
[then]

\ Enable automatic booting (add ``autoboot_delay=N'' to loader.conf(5) to
\ customize the timeout; default is 10-seconds)
\
set menu_timeout_command="boot"

\ Include optional elements defined in a local file
\
try-include /boot/menu.rc.local

\ Display the main menu (see `menu.4th')
set menuset_initial=1
menuset-loadinitial
menu-display