Report the kernel console on the boot screen

Report what console the boot loader is telling the kernel to use:
	o Dual (Serial Primary)
	o Dual (Video Primary)
	o Serial
	o Video

This allows the user to interrupt the boot and tweak the cosnole, if
needed, in a trivial way. Useful for installs where the default
selected may not be quite what you want, or when you are running a
dual setup and need to toggle over to the other console being primary.
The 'c'/'C' keys will do the cycling through the consoles.  Note:
you'll still have to drop into the loader to set details about serial
consoles. And this doesn't change the console the loader is using.

Reviewed by: kevans@
MFC After: 3 days
Differential Revision: https://reviews.freebsd.org/D26573
This commit is contained in:
Warner Losh 2020-09-28 16:19:21 +00:00
parent fbc6840bae
commit 8f3b36103b
2 changed files with 45 additions and 0 deletions

View File

@ -451,6 +451,40 @@ function core.popFrontTable(tbl)
return first_value, new_tbl
end
function core.getConsoleName()
if loader.getenv("boot_multicons") ~= nil then
if loader.getenv("boot_serial") ~= nil then
return "Dual (Serial primary)"
else
return "Dual (Video primary)"
end
else
if loader.getenv("boot_serial") ~= nil then
return "Serial"
else
return "Video"
end
end
end
function core.nextConsoleChoice()
if loader.getenv("boot_multicons") ~= nil then
if loader.getenv("boot_serial") ~= nil then
loader.unsetenv("boot_serial")
else
loader.unsetenv("boot_multicons")
loader.setenv("boot_serial", "YES")
end
else
if loader.getenv("boot_serial") ~= nil then
loader.unsetenv("boot_serial")
else
loader.setenv("boot_multicons", "YES")
loader.setenv("boot_serial", "YES")
end
end
end
recordDefaults()
hook.register("config.reloaded", core.clearCachedKernels)
return core

View File

@ -244,6 +244,7 @@ menu.welcome = {
boot_entry_2,
menu_entries.prompt,
menu_entries.reboot,
menu_entries.console,
{
entry_type = core.MENU_SEPARATOR,
},
@ -284,6 +285,16 @@ menu.welcome = {
end,
alias = {"s", "S"},
},
console = {
entry_type = core.MENU_ENTRY,
name = function()
return color.highlight("C") .. "ons: " .. core.getConsoleName()
end,
func = function()
core.nextConsoleChoice()
end,
alias = {"c", "C"},
},
prompt = {
entry_type = core.MENU_RETURN,
name = color.highlight("Esc") .. "ape to loader prompt",