Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Nov 2012 18:35:46 +0000 (UTC)
From:      Devin Teske <dteske@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r243660 - head/sys/boot/forth
Message-ID:  <201211281835.qASIZknp008510@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dteske
Date: Wed Nov 28 18:35:46 2012
New Revision: 243660
URL: http://svnweb.freebsd.org/changeset/base/243660

Log:
  Discussed at-length on -arch.
  
  Make the following interface changes to my beastie boot menu:
  + Move boot options to a submenu
  + Add a new "Boot Single" menu item
  + Make "Boot" item and new "Boot Single" item reverse when boot_single is set
  + Add new "Load Defaults" item (in new "Boot Options" submenu) for overridding
    loader.conf(5) provided values with system defaults.
  
  Reviewed by:	adrian (co-mentor)
  Approved by:	adrian (co-mentor)

Modified:
  head/sys/boot/forth/menu-commands.4th
  head/sys/boot/forth/menu.rc

Modified: head/sys/boot/forth/menu-commands.4th
==============================================================================
--- head/sys/boot/forth/menu-commands.4th	Wed Nov 28 18:29:34 2012	(r243659)
+++ head/sys/boot/forth/menu-commands.4th	Wed Nov 28 18:35:46 2012	(r243660)
@@ -32,6 +32,51 @@ variable kernel_state
 variable root_state
 
 \ 
+\ Boot
+\ 
+
+: init_boot ( N -- N )
+	dup
+	s" boot_single" getenv -1 <> if
+		drop ( n n c-addr -- n n ) \ unused
+		toggle_menuitem ( n n -- n n )
+		s" set menu_keycode[N]=115" \ base command to execute
+	else
+		s" set menu_keycode[N]=98" \ base command to execute
+	then
+	17 +c! \ replace 'N' with ASCII numeral
+	evaluate
+;
+
+\ 
+\ Alternate Boot
+\ 
+
+: init_altboot ( N -- N )
+	dup
+	s" boot_single" getenv -1 <> if
+		drop ( n c-addr -- n ) \ unused
+		toggle_menuitem ( n -- n )
+		s" set menu_keycode[N]=109" \ base command to execute
+	else
+		s" set menu_keycode[N]=115" \ base command to execute
+	then
+	17 +c! \ replace 'N' with ASCII numeral
+	evaluate
+;
+
+: altboot ( -- )
+	s" boot_single" 2dup getenv -1 <> if
+		drop ( c-addr/u c-addr -- c-addr/u ) \ unused
+		unsetenv ( c-addr/u -- )
+	else
+		2drop ( c-addr/u -- ) \ unused
+		s" set boot_single=YES" evaluate
+	then
+	0 boot ( state -- )
+;
+
+\ 
 \ ACPI
 \ 
 
@@ -287,3 +332,15 @@ variable root_state
 	menu-redraw
 	TRUE \ Loop menu again
 ;
+
+\ 
+\ Defaults
+\ 
+
+: set_default_boot_options ( N -- N TRUE )
+	acpi_enable
+	safemode_disable
+	singleuser_disable
+	verbose_disable
+	2 goto_menu
+;

Modified: head/sys/boot/forth/menu.rc
==============================================================================
--- head/sys/boot/forth/menu.rc	Wed Nov 28 18:29:34 2012	(r243659)
+++ head/sys/boot/forth/menu.rc	Wed Nov 28 18:35:46 2012	(r243660)
@@ -18,57 +18,98 @@ menu-init     \ initialize the menu area
 \ Initialize main menu constructs (see `menu.4th')
 \ NOTE: To use the `ansi' variants, add `loader_color=1' to loader.conf(5)
 
-set menu_caption[1]="Boot [Enter]"
-set menu_command[1]="boot"
-set ansi_caption[1]="Boot [Enter]"
-set menu_keycode[1]="98"
-
-set menu_caption[2]="[Esc]ape to loader prompt"
-set menu_command[2]="goto_prompt"
-set menu_keycode[2]="27"
-set ansi_caption[2]="Escape to loader prompt"
+\ 
+\ MAIN MENU
+\ 
+
+set menuset_name1="main"
+
+set mainmenu_init[1]="init_boot"
+set mainmenu_caption[1]="Boot Multi User [Enter]"
+set maintoggled_text[1]="Boot [S]ingle User [Enter]"
+set mainmenu_command[1]="boot"
+set mainansi_caption[1]="Boot Multi User [Enter]"
+set maintoggled_ansi[1]="Boot Single User [Enter]"
+\ keycode set by init_boot
+
+set mainmenu_init[2]="init_altboot"
+set mainmenu_caption[2]="Boot [S]ingle User"
+set maintoggled_text[2]="Boot [M]ulti User"
+set mainmenu_command[2]="altboot"
+set mainansi_caption[2]="Boot Single User"
+set maintoggled_ansi[2]="Boot Multi User"
+\ 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]="Escape to loader prompt"
 
 \ Enable built-in "Reboot" trailing menuitem
 \ NOTE: appears before menu_options if configured
 \ 
-set menu_reboot
+set mainmenu_reboot
 
 \ Enable "Options:" separator. When set to a numerical value (1-8), a visual
 \ separator is inserted before that menuitem number.
 \ 
-set menu_options=4
+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 Options..."
+
+\ 
+\ BOOT OPTIONS MENU
+\ 
+
+set menuset_name2="options"
 
-set menu_caption[4]="[A]CPI Support off"
-set toggled_text[4]="[A]CPI Support On"
-set menu_command[4]="toggle_acpi"
-set menu_keycode[4]="97"
-set menu_acpi=4
-set ansi_caption[4]="ACPI Support Off"
-set toggled_ansi[4]="ACPI Support On"
-
-set menu_caption[5]="Safe [M]ode... off"
-set toggled_text[5]="Safe [M]ode... On"
-set menu_init[5]="init_safemode"
-set menu_command[5]="toggle_safemode"
-set menu_keycode[5]="109"
-set ansi_caption[5]="Safe Mode... Off"
-set toggled_ansi[5]="Safe Mode... On"
-
-set menu_caption[6]="[S]ingle User. off"
-set toggled_text[6]="[S]ingle User. On"
-set menu_init[6]="init_singleuser"
-set menu_command[6]="toggle_singleuser"
-set menu_keycode[6]="115"
-set ansi_caption[6]="Single User. Off"
-set toggled_ansi[6]="Single User. On"
-
-set menu_caption[7]="[V]erbose..... off"
-set toggled_text[7]="[V]erbose..... On"
-set menu_init[7]="init_verbose"
-set menu_command[7]="toggle_verbose"
-set menu_keycode[7]="118"
-set ansi_caption[7]="Verbose..... Off"
-set toggled_ansi[7]="Verbose..... On"
+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 [Backspace]"
+
+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 Defaults"
+
+set optionsmenu_options=3
+set optionsmenu_optionstext="Boot Options:"
+
+set optionsmenu_acpi=3
+set optionsmenu_caption[3]="[A]CPI Support off"
+set optionstoggled_text[3]="[A]CPI Support On"
+set optionsmenu_command[3]="toggle_acpi"
+set optionsmenu_keycode[3]=97
+set optionsansi_caption[3]="ACPI Support Off"
+set optionstoggled_ansi[3]="ACPI Support On"
+
+set optionsmenu_init[4]="init_safemode"
+set optionsmenu_caption[4]="Safe [M]ode... off"
+set optionstoggled_text[4]="Safe [M]ode... On"
+set optionsmenu_command[4]="toggle_safemode"
+set optionsmenu_keycode[4]=109
+set optionsansi_caption[4]="Safe Mode... Off"
+set optionstoggled_ansi[4]="Safe Mode... On"
+
+set optionsmenu_init[5]="init_singleuser"
+set optionsmenu_caption[5]="[S]ingle User. off"
+set optionstoggled_text[5]="[S]ingle User. On"
+set optionsmenu_command[5]="toggle_singleuser"
+set optionsmenu_keycode[5]=115
+set optionsansi_caption[5]="Single User. Off"
+set optionstoggled_ansi[5]="Single User. On"
+
+set optionsmenu_init[6]="init_verbose"
+set optionsmenu_caption[6]="[V]erbose..... off"
+set optionstoggled_text[6]="[V]erbose..... On"
+set optionsmenu_command[6]="toggle_verbose"
+set optionsmenu_keycode[6]=118
+set optionsansi_caption[6]="Verbose..... Off"
+set optionstoggled_ansi[6]="Verbose..... On"
 
 \ Enable automatic booting (add ``autoboot_delay=N'' to loader.conf(5) to
 \ customize the timeout; default is 10-seconds)
@@ -76,4 +117,6 @@ set toggled_ansi[7]="Verbose...
 set menu_timeout_command="boot"
 
 \ Display the main menu (see `menu.4th')
+set menuset_initial=1
+menuset-loadinitial
 menu-display



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211281835.qASIZknp008510>