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