HEADS-UP: Boot Loader Interface Fixes
Devin Teske
devin.teske at fisglobal.com
Fri Nov 16 02:22:28 UTC 2012
Hi All,
I'm back with more changes to the boot loader menu.
First, don't panic!
Second, calm down!
Let's go over where we've been so-far so we don't repeat it here.
1. Changing the order of items should be avoided as it "moves the goal posts"
Agreed. This is not always avoidable, but should be avoided if possible.
2. Hiding "Single User" mode behind a submenu is bad.
Agreed. It's been suggested, "why can't it be an action item?" I've thought about it and it doesn't seem right to be an action item because it's a setting in loader.conf(5). However, nobody said it can't be both an action item _and_ a boolean option.
===
Now that we've covered those basics, let me explain the current situation:
If you are a proponent of the "goal posts" argument, then you may find yourself astonished one day to find that the following procedure does not work:
+ Boot to beastie menu
+ Press V to enable verbosity
+ Press Enter to boot
The reason the above may fail and violate POLA is because of the improvements made in SVN r241523. Since r241523, adding something like:
boot_verbose="YES"
to loader.conf(5) will not cause the boot menu to display a default ON-status for the Verbose boot option. In this case, booting and pressing V will disable verbose boot.
Given that all boot options in the menu are dynamically-initializing and will inherit the states of their respective options from loader.conf(5), a new problem emerges:
Q. How does one go about restoring the defaults in the event that a system doesn't boot?
Furthermore, the person may not know what the defaults are.
The need arises to have a "Load Defaults" option.
However, the introduction of this new menu item would both crowd the main menu and (unless appended to the end) violate the first rule of not re-ordering items (which we just argued that it doesn't matter if you memorize the numbers, their initial state may be negated from what the user expects).
The latter arguments of crowded main-menu and that the memorization of numbers is broken right now brings up the good idea of utilizing submenus (reasoning that if we have to make a change, best to make a change that can last).
===
I want to move the boot options into a submenu. This submenu will have all the boot options you see today on the main menu.
At the same time, add a "Load Defaults" action item for resetting the various boot options to their hard-coded defaults (overriding loader.conf(5) inheritance).
===
While proposing this, I realize that we need an easy way to get to single-user mode. So in-addition to be able to access SUM as a boolean option in the "Boot Options" submenu, I propose adding a new "alternate boot" menu item to the main menu.
At the same time, I've recognized the need to have more feedback in the "Boot" option. For example, it would be nice if setting boot_single="YES" in loader.conf(5) that the first menu item said "Boot Single User [Enter]" -- vociferating the default boot action. Meanwhile, the "Alternate Boot" (not actually titled that) gives a quick and easy way of booting Multi-User in the case of boot_single="YES" or vice-versa.
===
Last, but not least, pictures…
Here's the proposed new main-menu (with loader_color="YES" in loader.conf(5)):
https://twitter.com/devinteske/status/267082532976218113
and here's the submenu for the Boot Options:
https://twitter.com/devinteske/status/267083020400488449
--
Devin
P.S. http://bikeshed.org
===
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.
PR:
Submitted by:
Reviewed by: adrian (co-mentor) [pending your review]
Approved by: adrian (co-mentor) [pending your approval]
Obtained from:
MFC after:
Security:
--This line, and those below, will be ignored--
> Description of fields to fill in above: 76 columns --|
> PR: If a GNATS PR is affected by the change.
> Submitted by: If someone else sent in the change.
> Reviewed by: If someone else reviewed your modification.
> Approved by: If you needed approval for this commit.
> Obtained from: If the change is from a third party.
> MFC after: N [day[s]|week[s]|month[s]]. Request a reminder email.
> Security: Vulnerability reference (one per line) or description.
> Empty fields above will be automatically removed.
M forth/menu-commands.4th
M forth/menu.rc
_____________
The information contained in this message is proprietary and/or confidential. If you are not the intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, please be aware that any message addressed to our domain is subject to archiving and review by persons other than the intended recipient. Thank you.
More information about the freebsd-arch
mailing list