loader: Fully reset terminal settings, not just colors

Reviewed by:	kevans
Reviewed by:	tsoome
Approved by:	mav (mentor)
MFC after:	1 week
Sponsored by:	iXsystems, Inc.
Differential Revision:	https://reviews.freebsd.org/D21733
This commit is contained in:
Ryan Moeller 2020-03-27 17:37:31 +00:00
parent cfe7aad9c3
commit 73531a2abd
5 changed files with 19 additions and 15 deletions

View File

@ -72,6 +72,12 @@ include /boot/check-password.4th
only forth definitions only forth definitions
: maybe-resetcons ( -- )
loader_color? if
ris
then
;
: bootmsg ( -- ) : bootmsg ( -- )
loader_color? dup ( -- bool bool ) loader_color? dup ( -- bool bool )
if 7 fg 4 bg then if 7 fg 4 bg then

View File

@ -14,6 +14,7 @@ try-include /boot/loader.rc.local
start start
maybe-efi-resizecons maybe-efi-resizecons
maybe-resetcons
\ Tests for password -- executes autoboot first if a password was defined \ Tests for password -- executes autoboot first if a password was defined
check-password check-password

View File

@ -39,6 +39,9 @@ marker task-screen.4th
\ clear screen \ clear screen
: clear ( -- ) ho cld ; : clear ( -- ) ho cld ;
\ reset to initial state
: ris ( -- ) 27 emit [char] c emit ;
\ move cursor to x rows, y cols (1-based coords) ( Esc-[%d;%dH ) \ move cursor to x rows, y cols (1-based coords) ( Esc-[%d;%dH )
: at-xy ( x y -- ) escc .# [char] ; emit .# [char] H emit ; : at-xy ( x y -- ) escc .# [char] ; emit .# [char] H emit ;

View File

@ -103,6 +103,7 @@ core.KEY_DELETE = 127
-- other contexts (outside of Lua) may mean 'octal' -- other contexts (outside of Lua) may mean 'octal'
core.KEYSTR_ESCAPE = "\027" core.KEYSTR_ESCAPE = "\027"
core.KEYSTR_CSI = core.KEYSTR_ESCAPE .. "[" core.KEYSTR_CSI = core.KEYSTR_ESCAPE .. "["
core.KEYSTR_RESET = core.KEYSTR_ESCAPE .. "c"
core.MENU_RETURN = "return" core.MENU_RETURN = "return"
core.MENU_ENTRY = "entry" core.MENU_ENTRY = "entry"

View File

@ -38,28 +38,21 @@ local color = require("color")
local core = require("core") local core = require("core")
local config = require("config") local config = require("config")
local password = require("password") local password = require("password")
-- The menu module will be brought in after config has loaded if we actually
-- need it.
local menu
config.load() config.load()
-- Our console may have been setup for a different color scheme before we get
-- here, so make sure we set the default.
if color.isEnabled() then
printc(color.default())
end
try_include("local")
if not core.isMenuSkipped() then
menu = require("menu")
end
if core.isUEFIBoot() then if core.isUEFIBoot() then
loader.perform("efi-autoresizecons") loader.perform("efi-autoresizecons")
end end
-- Our console may have been setup with different settings before we get
-- here, so make sure we reset everything back to default.
if color.isEnabled() then
printc(core.KEYSTR_RESET)
end
try_include("local")
password.check() password.check()
-- menu might be disabled if not core.isMenuSkipped() then
if menu ~= nil then require("menu").run()
menu.run()
else else
-- Load kernel/modules before we go -- Load kernel/modules before we go
config.loadelf() config.loadelf()