Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Sep 2019 21:30:38 +0000 (UTC)
From:      Kyle Evans <kevans@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r352194 - head/stand/lua
Message-ID:  <201909102130.x8ALUc93094699@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201909102130.x8ALUc93094699>