mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-25 11:37:56 +00:00
802e09ac9e
Discussed on hackers and recommended for inclusion into 9.0 at the devsummit. All support email to devin dteske at vicor dot ignoreme dot com . Submitted by: dteske at vicor dot ignoreme dot com Reviewed by: me and many others
308 lines
8.1 KiB
Groff
308 lines
8.1 KiB
Groff
.\" Copyright (c) 2011 Devin Teske
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd May 18, 2011
|
|
.Dt MENU.4TH 8
|
|
.Os
|
|
.Sh NAME
|
|
.Nm menu.4th
|
|
.Nd FreeBSD dynamic menu boot module.
|
|
.Sh DESCRIPTION
|
|
The file that goes by the name of
|
|
.Nm
|
|
is a set of commands designed to display a dynamic menu system managed through
|
|
a system of carefully named environment variables.
|
|
The commands of
|
|
.Nm
|
|
by themselves are not enough for most uses.
|
|
Please refer to the
|
|
examples below for the most common situations, and to
|
|
.Xr loader 8
|
|
for additional commands.
|
|
.Pp
|
|
Before using any of the commands provided in
|
|
.Nm ,
|
|
it must be included
|
|
through the command:
|
|
.Pp
|
|
.Dl include menu.4th
|
|
.Pp
|
|
This line is present in the default
|
|
.Pa /boot/menu.rc
|
|
file, so it is not needed (and should not be re-issued) in a normal setup.
|
|
.Pp
|
|
The commands provided by it are:
|
|
.Pp
|
|
.Bl -tag -width disable-module_module -compact -offset indent
|
|
.It Ic menu-init
|
|
Draws the menu bounding box and initializes some internal state variables.
|
|
This should be called before any other menu-related functions.
|
|
.It Ic menu-display
|
|
Displays the menu (configured via the below documented environment variables)
|
|
and blocks on keyboard input, awaiting user action.
|
|
.It Ic menu-erase
|
|
Clears the screen area within the menu bounding box.
|
|
.It Ic menu-redraw
|
|
Calls
|
|
.Ic menu-erase
|
|
and then redraws the menu.
|
|
.It Ic menu-clear
|
|
Unsets all possible environment variables used
|
|
to configure the menu and then calls
|
|
.Ic menu-erase .
|
|
.El
|
|
.Pp
|
|
The environment variables that effect its behavior are:
|
|
.Bl -tag -width bootfile -offset indent
|
|
.It Va loader_color
|
|
If set to
|
|
.Dq Li YES
|
|
(case-insensitive) or
|
|
.Dq Li 1 ,
|
|
causes the menu to be displayed in color wherever possible. This includes the
|
|
use of ANSI bold for numbers appearing to the left of menuitems and the use of
|
|
special
|
|
.Dq Li ansi
|
|
variables describd below.
|
|
.It Va autoboot_delay
|
|
Number of seconds
|
|
.Ic menu-display
|
|
will wait before executing
|
|
.Va menu_timeout_command
|
|
.Ic ( boot
|
|
by default) unless a key is pressed.
|
|
If set to
|
|
.Dq Li NO
|
|
(case-insensitive) or
|
|
.Dq Li -1 ,
|
|
.Ic menu-display
|
|
will wait for user input and never execute
|
|
.Ic menu_timeout_command .
|
|
Default is
|
|
.Dq Li 10 .
|
|
See
|
|
.Xr loader 8
|
|
for additional information.
|
|
.It Va menu_timeout_command
|
|
The command to be executed after
|
|
.Va autoboot_delay
|
|
seconds if a key is not pressed. The default is
|
|
.Ic boot .
|
|
.It Va loader_menu_timeout_x
|
|
Sets the desired column position of the timeout countdown text. Default is 4.
|
|
.It Va loader_menu_timeout_y
|
|
Sets the desired row position of the timeout countdown text. Default is 23.
|
|
.It Va loader_menu_title
|
|
The text to display centered above the menu. Default is
|
|
.Dq Li "Welcome to FreeBSD" .
|
|
.It Va menu_caption[x]
|
|
The text to be displayed for the numbered menuitem
|
|
.Dq Li x .
|
|
.It Va menu_command[x]
|
|
The command to be executed when the number associated with menuitem
|
|
.Dq Li x
|
|
is pressed. See the list of included FICL words below for some ideas.
|
|
.It Va menu_keycode[x]
|
|
An optional decimal ASCII keycode to be associated with menuitem
|
|
.Dq Li x .
|
|
When pressed, will cause the execution of
|
|
.Va menu_command[x] .
|
|
.It Va ansi_caption[x]
|
|
If
|
|
.Va loader_color
|
|
is set, use this caption for menuitem
|
|
.Dq Li x
|
|
instead of
|
|
.Va menu_caption[x] .
|
|
.It Va toggled_text[x]
|
|
For menuitems where
|
|
.Va menu_command[x]
|
|
is set to
|
|
.Dq Li toggle_menuitem
|
|
(or a derivative thereof), the text displayed
|
|
will toggle between this and
|
|
.Va menu_caption[x] .
|
|
.It Va toggled_ansi[x]
|
|
Like
|
|
.Va toggled_text[x]
|
|
except used when
|
|
.Va loader_color
|
|
is enabled.
|
|
.It Va menu_caption[x][y]
|
|
For menuitems where
|
|
.Va menu_command[x]
|
|
is set to
|
|
.Dq Li cycle_menuitem
|
|
(or a derivative thereof), the text displayed will cycle between this and other
|
|
.Va menu_caption[x][y]
|
|
entries.
|
|
.It Va ansi_caption[x][y]
|
|
Like
|
|
.Va menu_caption[x][y]
|
|
except used when
|
|
.Va loader_color
|
|
is enabled.
|
|
.It Va menu_acpi
|
|
When set to a number
|
|
.Dq Li x
|
|
associated with a given menuitem, that menuitem will only appear when
|
|
running on i386-compatible hardware,
|
|
.Va hint.acpi.0.rsdp
|
|
is set (indicating the presence of hardware ACPI support as detected by
|
|
.Xr loader 8 ) ,
|
|
and
|
|
.Va hint.acpi.0.disabled
|
|
is not set.
|
|
On non-i386 hardware, menuitems configured after the
|
|
.Dq Li menu_acpi
|
|
menuitem will use a lower number (to compensate for the missing ACPI menuitem)
|
|
but continue to function as expected.
|
|
On i386-compatible hardware lacking ACPI support (as detected by
|
|
.Xr loader 8 ) ,
|
|
subsequent menuitems will retain their associated numbers.
|
|
.It Va hint.acpi.0.rsdp
|
|
Set automatically by
|
|
.Xr loader 8
|
|
on i386-compatible hardware when ACPI support is detected at boot time.
|
|
Effects the display of the
|
|
.Dq Li menu_acpi
|
|
menuitem (if configured).
|
|
.It Va hint.acpi.0.disabled
|
|
Effects the display of the
|
|
.Va menu_acpi
|
|
menuitem. If set, the menuitem will display
|
|
.Va toggled_text[x]
|
|
.Va ( toggled_ansi[x]
|
|
if
|
|
.Va loader_color
|
|
is set), otherwise
|
|
.Va menu_caption[x]
|
|
.Va ( ansi_caption[x]
|
|
if
|
|
.Va loader_color
|
|
is set).
|
|
.It Va menu_options
|
|
When set to a number
|
|
.Dq Li x ,
|
|
a single blank-line and an
|
|
.Dq Li Options
|
|
header are inserted between
|
|
.Va menu_caption[x-1]
|
|
and
|
|
.Va menu_caption[x]
|
|
(if configured).
|
|
.It Va menu_reboot
|
|
If set, adds a built-in
|
|
.Dq Li Reboot
|
|
menuitem to the end of the last configured menuitem. If
|
|
.Va menu_options
|
|
is configured, the
|
|
.Dq Li Reboot
|
|
menuitem will be inserted before the
|
|
.Dq Options
|
|
separator.
|
|
.El
|
|
.Pp
|
|
In addition, it provides the following FICL words:
|
|
.Pp
|
|
.Bl -tag -width disable-module_module -compact -offset indent
|
|
.It Ic arch-i386? ( -- BOOL )
|
|
Returns true (-1) on i386 and false (0) otherwise.
|
|
.It Ic acpipresent? ( -- BOOL )
|
|
Returns true (-1) if ACPI is present and false (0) otherwise.
|
|
.It Ic acpienabled? ( -- BOOL )
|
|
Returns true (-1) if ACPI is enabled and false (0) otherwise.
|
|
.It Ic toggle_menuitem ( N -- N )
|
|
Toggles menuitem
|
|
.Dq Li N
|
|
between
|
|
.Va menu_caption[x]
|
|
and
|
|
.Va toggled_text[x]
|
|
(where
|
|
.Dq Li N
|
|
represents the ASCII decimal value for
|
|
.Dq Li x ) .
|
|
.It Ic cycle_menuitem ( N -- N )
|
|
Cycles menuitem
|
|
.Dq Li N
|
|
between
|
|
.Va menu_caption[x][y]
|
|
entries (where
|
|
.Va N
|
|
represents the ASCII decimal value for
|
|
.Va x ) .
|
|
.El
|
|
.Pp
|
|
For all values of
|
|
.Dq Li x
|
|
above, use any number between 1 through 9. Sorry, double-digits are not
|
|
currently supported.
|
|
.Sh FILES
|
|
.Bl -tag -width /boot/loader.4th -compact
|
|
.It Pa /boot/loader
|
|
The
|
|
.Xr loader 8 .
|
|
.It Pa /boot/menu.4th
|
|
.Nm
|
|
itself.
|
|
.It Pa /boot/loader.rc
|
|
.Xr loader 8
|
|
bootstrapping script.
|
|
.El
|
|
.Sh EXAMPLES
|
|
A simple boot menu:
|
|
.Pp
|
|
.Bd -literal -offset indent -compact
|
|
include /boot/menu.4th
|
|
menu-init
|
|
set menu_caption[1]="Boot"
|
|
set menu_command[1]="boot"
|
|
set menu_options=2
|
|
set menu_caption[2]="Option: NO"
|
|
set toggled_text[2]="Option: YES"
|
|
set menu_command[2]="toggle_menuitem"
|
|
set menu_timeout_command="boot"
|
|
set menu_reboot
|
|
menu-display
|
|
.Ed
|
|
.Sh SEE ALSO
|
|
.Xr loader.conf 5 ,
|
|
.Xr loader 8 ,
|
|
.Xr loader.4th 8 ,
|
|
.Xr beastie.4th 8
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
set of commands first appeared in
|
|
.Fx 9.0 .
|
|
.Sh AUTHORS
|
|
The
|
|
.Nm
|
|
set of commands was written by
|
|
.An -nosplit
|
|
.An Devin Teske Aq devinteske@hotmail.com .
|