From 8f3b36103b20049e207e64039ad3e99ffb5b51e2 Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Mon, 28 Sep 2020 16:19:21 +0000 Subject: 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 --- stand/lua/core.lua | 34 ++++++++++++++++++++++++++++++++++ stand/lua/menu.lua | 11 +++++++++++ 2 files changed, 45 insertions(+) (limited to 'stand') diff --git a/stand/lua/core.lua b/stand/lua/core.lua index c56443e98733a..1bb2efb75446b 100644 --- a/stand/lua/core.lua +++ b/stand/lua/core.lua @@ -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 diff --git a/stand/lua/menu.lua b/stand/lua/menu.lua index 103ec9c000500..4eb801a16e2dd 100644 --- a/stand/lua/menu.lua +++ b/stand/lua/menu.lua @@ -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", -- cgit v1.2.3