100 lines
2.7 KiB
Diff
100 lines
2.7 KiB
Diff
From: Colin Watson <cjwatson@ubuntu.com>
|
|
Date: Mon, 13 Jan 2014 12:13:30 +0000
|
|
Subject: 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 <apw@canonical.com>
|
|
Forwarded: not-needed
|
|
Last-Update: 2013-12-25
|
|
|
|
Patch-Name: vt-handoff.patch
|
|
---
|
|
configure.ac | 11 +++++++++++
|
|
util/grub.d/10_linux.in | 28 +++++++++++++++++++++++++++-
|
|
2 files changed, 38 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 6812742..7f43651 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -2101,6 +2101,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 e68745a..1047cde 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"
|
|
|
|
@@ -105,6 +106,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"
|
|
@@ -150,7 +159,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/"
|
|
@@ -223,6 +232,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
|