svn commit: r352194 - head/stand/lua

Kyle Evans kevans at FreeBSD.org
Tue Sep 10 21:30:38 UTC 2019


Author: kevans
Date: Tue Sep 10 21:30:38 2019
New Revision: 352194
URL: https://svnweb.freebsd.org/changeset/base/352194

Log:
  lualoader: Revert to ASCII menu frame for serial console
  
  The box drawing characters we use aren't necessarily safe with a serial
  console; for instance, in the report by npn@, these were causing his xterm
  to send back a sequence that lua picked up as input and halted the boot.
  This is less than ideal.
  
  Fallback to ASCII frames for console with 'comconsole' in it.  This is a
  partial revert r338108 by imp@ -- instead of removing the menu entirely and
  disabling color/cursor sequences, just reverting the default frame to ASCII
  is enough to not break in this setup.
  
  Reported by:	npn
  Triaged and recommended by:	tsoome

Modified:
  head/stand/lua/core.lua
  head/stand/lua/drawer.lua

Modified: head/stand/lua/core.lua
==============================================================================
--- head/stand/lua/core.lua	Tue Sep 10 21:14:56 2019	(r352193)
+++ head/stand/lua/core.lua	Tue Sep 10 21:30:38 2019	(r352194)
@@ -325,6 +325,16 @@ function core.isZFSBoot()
 	return false
 end
 
+function core.isSerialConsole()
+	local c = loader.getenv("console")
+	if c ~= nil then
+		if c:find("comconsole") ~= nil then
+			return true
+		end
+	end
+	return false
+end
+
 function core.isSerialBoot()
 	local s = loader.getenv("boot_serial")
 	if s ~= nil then

Modified: head/stand/lua/drawer.lua
==============================================================================
--- head/stand/lua/drawer.lua	Tue Sep 10 21:14:56 2019	(r352193)
+++ head/stand/lua/drawer.lua	Tue Sep 10 21:30:38 2019	(r352194)
@@ -144,13 +144,20 @@ local function drawmenu(menudef)
 	return alias_table
 end
 
+local function defaultframe()
+	if core.isSerialConsole() then
+		return "ascii"
+	end
+	return "double"
+end
+
 local function drawbox()
 	local x = menu_position.x - 3
 	local y = menu_position.y - 1
 	local w = frame_size.w
 	local h = frame_size.h
 
-	local framestyle = loader.getenv("loader_menu_frame") or "double"
+	local framestyle = loader.getenv("loader_menu_frame") or defaultframe()
 	local framespec = drawer.frame_styles[framestyle]
 	-- If we don't have a framespec for the current frame style, just don't
 	-- draw a box.


More information about the svn-src-head mailing list