[Bug 1711452] Re: grub.cfg fails back to 'text' video mode on UEFI which is not supported

Steve Langasek steve.langasek at canonical.com
Thu Aug 17 21:09:00 UTC 2017


Booting up the grub shell, I see that I have 'grub_platform=efi' set.
It should be possible for grub.cfg to key off of this, and e.g. set a
gfx_fallback_mode variable to either 'text' or 'auto' depending on its
value, then feeding that into linux_gfx_mode instead of hard-coding of
'text'.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to grub2 in Ubuntu.
https://bugs.launchpad.net/bugs/1711452

Title:
  grub.cfg fails back to 'text' video mode on UEFI which is not
  supported

Status in grub2 package in Ubuntu:
  Confirmed

Bug description:
  The grub.cfg generated by update-grub for both UEFI and BIOS includes
  the following logic:

  ### BEGIN /etc/grub.d/10_linux ###
  function gfxmode {
          set gfxpayload="${1}"
          if [ "${1}" = "keep" ]; then
                  set vt_handoff=vt.handoff=7
          else
                  set vt_handoff=
          fi
  }
  if [ "${recordfail}" != 1 ]; then
    if [ -e ${prefix}/gfxblacklist.txt ]; then
      if hwmatch ${prefix}/gfxblacklist.txt 3; then
        if [ ${match} = 0 ]; then
          set linux_gfx_mode=keep
        else
          set linux_gfx_mode=text
        fi
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=keep
    fi
  else
    set linux_gfx_mode=text
  fi
  export linux_gfx_mode

  [...]

  menuentry [...]
      gfxmode $linux_gfx_mode

  This means that in some cases, we are calling 'set gfxpayload="text"'
  on UEFI systems.

  However, grub-core/loader/i386/linux.c has:

  #ifdef GRUB_MACHINE_EFI
  #include <grub/efi/efi.h>
  #define HAS_VGA_TEXT 0
  #define DEFAULT_VIDEO_MODE "auto"
  #define ACCEPTS_PURE_TEXT 0
  #elif [...]

  and if ACCEPTS_PURE_TEXT is 0, grub_linux_boot() masks
  GRUB_VIDEO_MODE_TYPE_PURE_TEXT out of the allowed set when calling
  grub_video_set_mode().

  So our generated grub.cfg should *never* be setting gfxpayload=text on
  a UEFI system.  If we do, we get the following error message from grub
  at boot:

  error: invalid video mode specification `text'.
  Booting in blind mode

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1711452/+subscriptions



More information about the foundations-bugs mailing list