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.
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to