From: Colin Watson Date: Mon, 13 Jan 2014 12:13:30 +0000 (+0000) Subject: Add configure option to use vt.handoff=7 X-Git-Tag: archive/raspbian/2.14_git20250718.0e36779-2+rpi1^2~54 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e80f716593facd4c0598bd03311cbf4d15f74b03;p=grub2.git Add configure option to use vt.handoff=7 This is used for non-recovery Linux entries only; it enables flicker-free booting if gfxpayload=keep is in use and a suitable kernel is present. Author: Andy Whitcroft Forwarded: not-needed Last-Update: 2013-12-25 Patch-Name: vt-handoff.patch Gbp-Pq: Name vt-handoff.patch --- diff --git a/configure.ac b/configure.ac index 52de262..ae73d67 100644 --- a/configure.ac +++ b/configure.ac @@ -2161,6 +2161,17 @@ else fi AC_SUBST([GFXPAYLOAD_DYNAMIC]) +AC_ARG_ENABLE([vt-handoff], + [AS_HELP_STRING([--enable-vt-handoff], + [use Linux vt.handoff option for flicker-free booting (default=no)])], + [], [enable_vt_handoff=no]) +if test x"$enable_vt_handoff" = xyes ; then + VT_HANDOFF=1 +else + VT_HANDOFF=0 +fi +AC_SUBST([VT_HANDOFF]) + LIBS="" AC_SUBST([FONT_SOURCE]) diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in index 28d5103..c1b1c29 100644 --- a/util/grub.d/10_linux.in +++ b/util/grub.d/10_linux.in @@ -24,6 +24,7 @@ ubuntu_recovery="@UBUNTU_RECOVERY@" quiet_boot="@QUIET_BOOT@" quick_boot="@QUICK_BOOT@" gfxpayload_dynamic="@GFXPAYLOAD_DYNAMIC@" +vt_handoff="@VT_HANDOFF@" . "$pkgdatadir/grub-mkconfig_lib" @@ -100,6 +101,14 @@ if [ "$ubuntu_recovery" = 1 ]; then GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY nomodeset" fi +if [ "$vt_handoff" = 1 ]; then + for word in $GRUB_CMDLINE_LINUX_DEFAULT; do + if [ "$word" = splash ]; then + GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \$vt_handoff" + fi + done +fi + linux_entry () { os="$1" @@ -145,7 +154,7 @@ linux_entry () fi if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \ ([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then - echo " set gfxpayload=\$linux_gfx_mode" | sed "s/^/$submenu_indentation/" + echo " gfxmode \$linux_gfx_mode" | sed "s/^/$submenu_indentation/" fi echo " insmod gzio" | sed "s/^/$submenu_indentation/" @@ -218,6 +227,23 @@ prepare_root_cache= boot_device_id= title_correction_code= +cat << 'EOF' +function gfxmode { + set gfxpayload="${1}" +EOF +if [ "$vt_handoff" = 1 ]; then + cat << 'EOF' + if [ "${1}" = "keep" ]; then + set vt_handoff=vt.handoff=7 + else + set vt_handoff= + fi +EOF +fi +cat << EOF +} +EOF + # Use ELILO's generic "efifb" when it's known to be available. # FIXME: We need an interface to select vesafb in case efifb can't be used. if [ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 0 ]; then