1\ Menu.rc 2\ 3\ You should not edit this file! Put any overrides in menu.rc.local 4\ instead as this file can be replaced during system updates. 5\ 6\ Load required Forth modules 7include /boot/version.4th 8include /boot/brand.4th 9include /boot/menu.4th 10include /boot/menu-commands.4th 11include /boot/shortcuts.4th 12 13\ Screen prep 14clear \ clear the screen (see `screen.4th') 15print_version \ print version string (bottom-right; see `version.4th') 16draw-beastie \ draw freebsd mascot (on right; see `beastie.4th') 17draw-brand \ draw the FreeBSD title (top-left; see `brand.4th') 18menu-init \ initialize the menu area (see `menu.4th') 19 20\ Initialize main menu constructs (see `menu.4th') 21\ NOTE: To use `non-ansi' variants, add `loader_color=0' to loader.conf(5) 22\ NOTE: ANSI variants can use `^' in place of literal `Esc' (ASCII 27) 23 24\ 25\ MAIN MENU 26\ 27 28set menuset_name1="main" 29 30set mainmenu_init[1]="init_boot" 31set mainmenu_caption[1]="Boot Multi User [Enter]" 32set maintoggled_text[1]="Boot [S]ingle User [Enter]" 33set mainmenu_command[1]="boot" 34set mainansi_caption[1]="^[1mB^[moot Multi User ^[1m[Enter]^[m" 35set maintoggled_ansi[1]="Boot ^[1mS^[mingle User ^[1m[Enter]^[m" 36\ keycode set by init_boot 37 38set mainmenu_init[2]="init_altboot" 39set mainmenu_caption[2]="Boot [S]ingle User" 40set maintoggled_text[2]="Boot [M]ulti User" 41set mainmenu_command[2]="altboot" 42set mainansi_caption[2]="Boot ^[1mS^[mingle User" 43set maintoggled_ansi[2]="Boot ^[1mM^[multi User" 44\ keycode set by init_altboot 45 46set mainmenu_caption[3]="[Esc]ape to loader prompt" 47set mainmenu_command[3]="goto_prompt" 48set mainmenu_keycode[3]=27 49set mainansi_caption[3]="^[1mEsc^[mape to loader prompt" 50 51\ Enable built-in "Reboot" trailing menuitem 52\ NOTE: appears before menu_options if configured 53\ 54set mainmenu_reboot 55 56\ Enable "Options:" separator. When set to a numerical value (1-8), a visual 57\ separator is inserted before that menuitem number. 58\ 59set mainmenu_options=5 60 61set mainmenu_kernel=5 62set mainmenu_command[5]="cycle_kernel" 63set mainmenu_keycode[5]=107 64 65set mainmenu_caption[6]="Configure Boot [O]ptions..." 66set mainmenu_command[6]="2 goto_menu" 67set mainmenu_keycode[6]=111 68set mainansi_caption[6]="Configure Boot ^[1mO^[mptions..." 69 70s" currdev" getenv dup 0> [if] drop 4 s" zfs:" compare 0= [if] 71 set mainmenu_caption[7]="Select Boot [E]nvironment..." 72 set mainmenu_command[7]="3 goto_menu" 73 set mainmenu_keycode[7]=101 74 set mainansi_caption[7]="Select Boot ^[1mE^[mnvironment..." 75 76 s" chain_disk" getenv? [if] 77 set mainmenu_caption[8]="Chain[L]oad ${chain_disk}" 78 set mainmenu_command[8]="chain ${chain_disk}" 79 set mainmenu_keycode[8]=108 80 set mainansi_caption[8]="Chain^[1mL^[moad ${chain_disk}" 81 [then] 82[else] 83 s" chain_disk" getenv? [if] 84 set mainmenu_caption[7]="Chain[L]oad ${chain_disk}" 85 set mainmenu_command[7]="chain ${chain_disk}" 86 set mainmenu_keycode[7]=108 87 set mainansi_caption[7]="Chain^[1mL^[moad ${chain_disk}" 88 [then] 89[then] [else] drop [then] 90 91 92\ 93\ BOOT OPTIONS MENU 94\ 95 96set menuset_name2="options" 97 98set optionsmenu_caption[1]="Back to Main Menu [Backspace]" 99set optionsmenu_command[1]="1 goto_menu" 100set optionsmenu_keycode[1]=8 101set optionsansi_caption[1]="Back to Main Menu ^[1m[Backspace]^[m" 102 103set optionsmenu_caption[2]="Load System [D]efaults" 104set optionsmenu_command[2]="set_default_boot_options" 105set optionsmenu_keycode[2]=100 106set optionsansi_caption[2]="Load System ^[1mD^[mefaults" 107 108set optionsmenu_options=3 109set optionsmenu_optionstext="Boot Options:" 110 111set optionsmenu_acpi=3 112set optionsmenu_caption[3]="[A]CPI Support off" 113set optionstoggled_text[3]="[A]CPI Support On" 114set optionsmenu_command[3]="toggle_acpi" 115set optionsmenu_keycode[3]=97 116set optionsansi_caption[3]="^[1mA^[mCPI Support ^[34;1mOff^[m" 117set optionstoggled_ansi[3]="^[1mA^[mCPI Support ^[32;7mOn^[m" 118 119set optionsmenu_init[4]="init_safemode" 120set optionsmenu_caption[4]="Safe [M]ode... off" 121set optionstoggled_text[4]="Safe [M]ode... On" 122set optionsmenu_command[4]="toggle_safemode" 123set optionsmenu_keycode[4]=109 124set optionsansi_caption[4]="Safe ^[1mM^[mode... ^[34;1mOff^[m" 125set optionstoggled_ansi[4]="Safe ^[1mM^[mode... ^[32;7mOn^[m" 126 127set optionsmenu_init[5]="init_singleuser" 128set optionsmenu_caption[5]="[S]ingle User. off" 129set optionstoggled_text[5]="[S]ingle User. On" 130set optionsmenu_command[5]="toggle_singleuser" 131set optionsmenu_keycode[5]=115 132set optionsansi_caption[5]="^[1mS^[mingle User. ^[34;1mOff^[m" 133set optionstoggled_ansi[5]="^[1mS^[mingle User. ^[32;7mOn^[m" 134 135set optionsmenu_init[6]="init_verbose" 136set optionsmenu_caption[6]="[V]erbose..... off" 137set optionstoggled_text[6]="[V]erbose..... On" 138set optionsmenu_command[6]="toggle_verbose" 139set optionsmenu_keycode[6]=118 140set optionsansi_caption[6]="^[1mV^[merbose..... ^[34;1mOff^[m" 141set optionstoggled_ansi[6]="^[1mV^[merbose..... ^[32;7mOn^[m" 142 143\ 144\ BOOT ENVIRONMENT MENU 145\ 146 147set menuset_name3="bootenv" 148 149set bemenu_current="Active: " 150set beansi_current="^[1m${bemenu_current}^[m" 151set bemenu_bootfs="bootfs: " 152set beansi_bootfs="^[1m${bemenu_bootfs}^[m" 153set bemenu_page="[P]age: " 154set beansi_page="^[1mP^[mage: " 155set bemenu_pageof=" of " 156set beansi_pageof="${bemenu_pageof}" 157set zfs_be_currpage=1 158 159set bootenvmenu_init="init_bootenv" 160 161set bootenvmenu_command[1]="be_draw_screen 1 goto_menu" 162set bootenvmenu_keycode[1]=8 163 164set bootenvmenu_command[2]="set_bootenv" 165set bootenvmenu_keycode[2]=97 166set bootenv_root[2]="${zfs_be_active}" 167 168set bootenvmenu_command[3]="set_be_page" 169set bootenvmenu_keycode[3]=112 170 171set bootenvmenu_options=4 172set bootenvmenu_optionstext="Boot Environments:" 173 174\ Enable automatic booting (add ``autoboot_delay=N'' to loader.conf(5) to 175\ customize the timeout; default is 10-seconds) 176\ 177set menu_timeout_command="boot" 178 179\ Include optional elements defined in a local file 180\ 181try-include /boot/menu.rc.local 182 183\ Initialize boot environment variables 184\ 185s" reloadbe" sfind ( xt|0 bool ) [if] 186 s" bootenv_autolist" getenv dup -1 = [if] 187 drop s" execute" evaluate \ Use evaluate to avoid passing 188 \ reloadbe an optional parameter 189 [else] 190 s" YES" compare-insensitive 0= [if] 191 s" execute" evaluate 192 [then] 193 [then] 194[else] 195 drop ( xt=0 ) 196[then] 197 198\ Display the main menu (see `menu.4th') 199set menuset_initial=1 200menuset-loadinitial 201menu-display 202