[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#772595: UEFI fixes, round 2



Package: release.debian.org
Severity: normal

Hi folks,

Please unblock package grub2 and grub-installer.

There's a fix for a set of related RC bug fixes (#767037 and others,
merged). There's a lot of broken UEFI implementations in the wild, and
I've added code to help us support users of those systems. For systems
which don't work properly in terms of boot configuration, we can now
force copying of grub-efi to the removable-media path as well as the
normal boot file location. I've been seeing more and more people
reporting this problem lately, and it would be awesome to have Jessie
work for these people.

There are small, contained changes for both grub2 and grub-installer,
and both are needed for this fix to work.

In grub-installer, I've added the front-end which drives most of this:

  * Add extra support for forcing installation to the EFI
    removable media path, either during installation (low priority or
    preseeding), or as an extra rescue-mode option to help people fix
    their systems post-install once they realise they need to. (#767037)

I've also added the backend support to grub2 (grub-install) which does
the extra work needed:

  * Add support for forcing an extra copy of grub-efi to the removable
    media path /boot/efi/EFI/BOOT/BOOT$ARCH.EFI (#767037)

Debdiffs attached (grub2 filtered to remove noise in the po/ dir).

unblock grub-installer/1.102
unblock grub2/2.02~beta2-18

Clearly, this is also d-i material. KiBi has been letting me drive
this, and I hope he's still happy here. I've added d-boot in CC
accordingly.

-- System Information:
Debian Release: 7.7
  APT prefers stable
  APT policy: (500, 'stable'), (500, 'oldstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.2.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -Nru grub-installer-1.101/debian/changelog grub-installer-1.102/debian/changelog
--- grub-installer-1.101/debian/changelog	2014-11-12 15:16:49.000000000 +0000
+++ grub-installer-1.102/debian/changelog	2014-12-08 21:39:23.000000000 +0000
@@ -1,3 +1,13 @@
+grub-installer (1.102) unstable; urgency=medium
+
+  [ Steve McIntyre ]
+  * Add extra support for forcing installation to the EFI
+    removable media path, either during installation (low priority or
+    preseeding), or as an extra rescue-mode option to help people fix
+    their systems post-install once they realise they need to. (#767037)
+
+ -- Steve McIntyre <93sam@debian.org>  Mon, 01 Dec 2014 02:49:36 +0000
+
 grub-installer (1.101) unstable; urgency=medium
 
   [ Steve McIntyre ]
diff -Nru grub-installer-1.101/debian/grub-installer.templates grub-installer-1.102/debian/grub-installer.templates
--- grub-installer-1.101/debian/grub-installer.templates	2014-09-28 22:03:12.000000000 +0100
+++ grub-installer-1.102/debian/grub-installer.templates	2014-12-08 21:39:23.000000000 +0000
@@ -209,6 +209,21 @@
 # :sl1:
 _Description: Updating /etc/kernel-img.conf...
 
+Template: grub-installer/progress/step_force_efi_removable
+Type: text
+# :sl1:
+_Description: Checking whether to force usage of the removable media path
+
+Template: grub-installer/progress/step_mount_filesystems
+Type: text
+# :sl1:
+_Description: Mounting filesystems
+
+Template: grub-installer/progress/step_update_debconf_efi_removable
+Type: text
+# :sl1:
+_Description: Configuring grub-efi for future usage of the removable media path
+
 Template: debian-installer/grub-installer/title
 Type: text
 #  Main menu item
@@ -242,3 +257,31 @@
  Check /var/log/syslog or see virtual console 4 for the details.
  .
  Warning: Your system may be unbootable!
+
+Template: rescue/menu/grub-efi-force-removable
+Type: text
+# Rescue menu item
+# :sl2:
+_Description: Force GRUB installation to the EFI removable media path
+
+Template: grub-installer/force-efi-extra-removable
+Type: boolean
+Default: false
+# :sl1:
+_Description: Force GRUB installation to the EFI removable media path?
+ It seems that this computer is configured to boot via EFI, but maybe
+ that configuration will not work for booting from the hard
+ drive. Some EFI firmware implementations do not meet the EFI
+ specification (i.e. they are buggy!) and do not support proper
+ configuration of boot options from system hard drives.
+ .
+ A workaround for this problem is to install an extra copy of the EFI
+ version of the GRUB boot loader to a fallback location, the
+ "removable media path". Almost all EFI systems, no matter how buggy,
+ will boot GRUB that way.
+ .
+ Warning: If the installer failed to detect another operating system
+ that is present on your computer that also depends on this fallback,
+ installing GRUB there will make that operating system temporarily
+ unbootable. GRUB can be manually configured later to boot it if
+ necessary.
diff -Nru grub-installer-1.101/debian/po/zh_CN.po grub-installer-1.102/debian/po/zh_CN.po
--- grub-installer-1.101/debian/po/zh_CN.po	2014-09-28 22:03:12.000000000 +0100
+++ grub-installer-1.102/debian/po/zh_CN.po	2014-12-08 21:38:10.000000000 +0000
@@ -39,7 +39,7 @@
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bits\n"
+"Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
 #. Type: boolean
diff -Nru grub-installer-1.101/grub-installer grub-installer-1.102/grub-installer
--- grub-installer-1.101/grub-installer	2014-11-12 15:16:49.000000000 +0000
+++ grub-installer-1.102/grub-installer	2014-12-08 21:39:23.000000000 +0000
@@ -785,6 +785,20 @@
 			fi
 		fi
 
+		# Should we force a copy of grub-efi to be installed
+		# to the removable media path too? Ask at low
+		# priority, or can also be pre-seeded of course
+		db_input low grub-installer/force-efi-extra-removable || [ $? -eq 30 ]
+		db_go || exit 10
+		db_get grub-installer/force-efi-extra-removable
+		if [ "$RET" = true ]; then
+			grub_install_params="$grub_install_params --force-extra-removable"
+			# Make sure this happens on upgrades too
+			$chroot $ROOT 'debconf-set-selections' <<EOF
+grub2/force_efi_extra_removable boolean true
+EOF
+		fi
+
 		if [ "$ARCH" = "powerpc/chrp_pegasos" ] ; then
 			# nvram is broken here
 			grub_install_params="$grub_install_params --no-nvram"
diff -Nru grub-installer-1.101/rescue.d/81grub-efi-force-removable grub-installer-1.102/rescue.d/81grub-efi-force-removable
--- grub-installer-1.101/rescue.d/81grub-efi-force-removable	1970-01-01 01:00:00.000000000 +0100
+++ grub-installer-1.102/rescue.d/81grub-efi-force-removable	2014-12-08 21:39:23.000000000 +0000
@@ -0,0 +1,93 @@
+#! /bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+. /usr/share/grub-installer/functions.sh
+
+EXTRA_PATHS=""
+
+log () {
+	logger -t grub-installer "grub-efi-force-removable $@"
+}
+
+error () {
+	log "error: $@"
+}
+
+die () {
+	local template="$1"
+	shift
+
+	error "$@"
+	db_input critical "$template" || [ $? -eq 30 ]
+	db_go || true
+	exit 1
+}
+
+mountvirtfs () {
+	fstype="$1"
+	path="$2"
+	if grep -q "[[:space:]]$fstype\$" /proc/filesystems && \
+	   ! grep -q "^[^ ]\+ \+$path " /proc/mounts; then
+		mkdir -p "$path" || \
+			die grub-installer/mounterr "Error creating $path"
+		mount -t "$fstype" "$fstype" "$path" || \
+			die grub-installer/mounterr "Error mounting $path"
+		EXTRA_PATHS="$EXTRA_PATHS $path"
+		trap "umount $EXTRA_PATHS" HUP INT QUIT KILL PIPE TERM EXIT
+	fi
+}
+
+db_progress START 0 3 grub-installer/progress/title
+db_progress INFO grub-installer/progress/step_force_efi_removable
+
+# Should we also install grub-efi to the removable media path?
+# Ask the user
+log "Prompting user about removable media path"
+db_input high grub-installer/force-efi-extra-removable
+if ! db_go; then
+	# back up to menu
+	db_progress STOP
+	exit 10
+fi
+db_get grub-installer/force-efi-extra-removable
+if [ "$RET" != true ]; then
+	db_progress STOP
+	exit 0
+fi
+
+db_progress STEP 1
+db_progress INFO grub-installer/progress/step_mount_filesystems
+
+log "Mounting filesystems"
+# If we're installing grub-efi, it wants /sys mounted in the
+# target. Maybe /proc too?
+mountvirtfs proc /target/proc
+mountvirtfs sysfs /target/sys
+chroot /target mount /boot/efi || true
+EXTRA_PATHS="$EXTRA_PATHS /target/boot/efi"
+trap "umount $EXTRA_PATHS" HUP INT QUIT KILL PIPE TERM EXIT
+
+db_progress STEP 1
+db_progress INFO grub-installer/progress/step_install_loader
+# Do the installation now
+log "Running grub-install"
+if ! chroot /target grub-install --force-extra-removable; then
+	db_input critical grub-installer/grub-install-failed || true
+	db_go || true
+	db_progress STOP
+	exit 1
+fi
+
+db_progress STEP 1
+db_progress INFO grub-installer/progress/step_update_debconf_efi_removable
+# And add the debconf flag so the installed system will also do this in future
+log "Running debconf-set-selections in the chroot"
+chroot /target 'debconf-set-selections' <<EOF
+grub2/force_efi_extra_removable boolean true
+EOF
+
+db_progress STEP 1
+db_progress STOP
+
+# Don't need to clean up - the trap calls above will unmount filesystems for us
diff -Nru grub-installer-1.101/rescue.d/81grub-efi-force-removable.tst grub-installer-1.102/rescue.d/81grub-efi-force-removable.tst
--- grub-installer-1.101/rescue.d/81grub-efi-force-removable.tst	1970-01-01 01:00:00.000000000 +0100
+++ grub-installer-1.102/rescue.d/81grub-efi-force-removable.tst	2014-12-08 21:39:23.000000000 +0000
@@ -0,0 +1,3 @@
+#! /bin/sh -e
+[ -f /target/boot/grub/grub.cfg ] && ( grep -q /boot/efi /target/etc/fstab )
+
diff -Nru grub2-2.02~beta2/debian/.git-dpm grub2-2.02~beta2/debian/.git-dpm
diff -Nru grub2-2.02~beta2/debian/changelog grub2-2.02~beta2/debian/changelog
--- grub2-2.02~beta2/debian/changelog	2014-11-30 17:15:23.000000000 +0000
+++ grub2-2.02~beta2/debian/changelog	2014-12-08 08:38:41.000000000 +0000
@@ -1,3 +1,14 @@
+grub2 (2.02~beta2-18) unstable; urgency=medium
+
+  [ Steve McIntyre ]
+  * Add support for forcing an extra copy of grub-efi to the removable
+    media path /boot/efi/EFI/BOOT/BOOT$ARCH.EFI (#767037)
+
+  [ Ian Campbell ]
+  * Add myself to Uploaders.
+
+ -- Ian Campbell <ijc@debian.org>  Mon, 08 Dec 2014 08:38:38 +0000
+
 grub2 (2.02~beta2-17) unstable; urgency=medium
 
   [ Colin Watson ]
diff -Nru grub2-2.02~beta2/debian/config.in grub2-2.02~beta2/debian/config.in
--- grub2-2.02~beta2/debian/config.in	2014-11-30 14:20:34.000000000 +0000
+++ grub2-2.02~beta2/debian/config.in	2014-12-07 16:41:50.000000000 +0000
@@ -73,4 +73,5 @@
 
 db_input ${priority} grub2/linux_cmdline || true
 db_input medium grub2/linux_cmdline_default || true
+db_input low grub2/force_efi_extra_removable || true
 db_go
diff -Nru grub2-2.02~beta2/debian/control grub2-2.02~beta2/debian/control
--- grub2-2.02~beta2/debian/control	2014-11-30 17:15:15.000000000 +0000
+++ grub2-2.02~beta2/debian/control	2014-12-08 08:38:13.000000000 +0000
@@ -2,7 +2,7 @@
 Section: admin
 Priority: extra
 Maintainer: GRUB Maintainers <pkg-grub-devel@lists.alioth.debian.org>
-Uploaders: Robert Millan <rmh@debian.org>, Felix Zielcke <fzielcke@z-51.de>, Jordi Mallach <jordi@debian.org>, Colin Watson <cjwatson@debian.org>
+Uploaders: Robert Millan <rmh@debian.org>, Felix Zielcke <fzielcke@z-51.de>, Jordi Mallach <jordi@debian.org>, Colin Watson <cjwatson@debian.org>, Ian Campbell <ijc@debian.org>
 Build-Depends: debhelper (>= 7.4.2~),
  dpkg-dev (>= 1.15.1~),
  patchutils,
diff -Nru grub2-2.02~beta2/debian/patches/grub-install-extra-removable.patch grub2-2.02~beta2/debian/patches/grub-install-extra-removable.patch
--- grub2-2.02~beta2/debian/patches/grub-install-extra-removable.patch	1970-01-01 01:00:00.000000000 +0100
+++ grub2-2.02~beta2/debian/patches/grub-install-extra-removable.patch	2014-12-08 08:38:08.000000000 +0000
@@ -0,0 +1,138 @@
+From dfcbcb60e5428bcb87ba96011c7b7ab1b7891fa1 Mon Sep 17 00:00:00 2001
+From: Steve McIntyre <93sam@debian.org>
+Date: Wed, 3 Dec 2014 01:25:12 +0000
+Subject: Add support for forcing EFI installation to the removable media path
+
+Add an extra option to grub-install "--force-extra-removable". On EFI
+platforms, this will cause an extra copy of the grub-efi image to be
+written to the appropriate removable media patch
+/boot/efi/EFI/BOOT/BOOT$ARCH.EFI as well. This will help with broken
+UEFI implementations where the firmware does not work when configured
+with new boot paths.
+
+Signed-off-by: Steve McIntyre <93sam@debian.org>
+
+Bug-Debian: https://bugs.debian.org/767037
+Forwarded: Not yet
+Last-Update: 2014-12-03
+
+Patch-Name: grub-install-extra-removable.patch
+---
+ util/grub-install.c | 46 ++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 44 insertions(+), 2 deletions(-)
+
+diff --git a/util/grub-install.c b/util/grub-install.c
+index 7a7734e..18015da 100644
+--- a/util/grub-install.c
++++ b/util/grub-install.c
+@@ -56,6 +56,7 @@
+ 
+ static char *target;
+ static int removable = 0;
++static int force_extra_removable = 0;
+ static int recheck = 0;
+ static int update_nvram = 1;
+ static char *install_device = NULL;
+@@ -114,7 +115,8 @@ enum
+     OPTION_LABEL_BGCOLOR,
+     OPTION_PRODUCT_VERSION,
+     OPTION_UEFI_SECURE_BOOT,
+-    OPTION_NO_UEFI_SECURE_BOOT
++    OPTION_NO_UEFI_SECURE_BOOT,
++    OPTION_FORCE_EXTRA_REMOVABLE
+   };
+ 
+ static int fs_probe = 1;
+@@ -217,6 +219,10 @@ argp_parser (int key, char *arg, struct argp_state *state)
+       removable = 1;
+       return 0;
+ 
++    case OPTION_FORCE_EXTRA_REMOVABLE:
++      force_extra_removable = 1;
++      return 0;
++
+     case OPTION_ALLOW_FLOPPY:
+       allow_floppy = 1;
+       return 0;
+@@ -323,6 +329,9 @@ static struct argp_option options[] = {
+    N_("do not install an image usable with UEFI Secure Boot, even if the "
+       "system was currently started using it. "
+       "This option is only available on EFI."), 2},
++  {"force-extra-removable", OPTION_FORCE_EXTRA_REMOVABLE, 0, 0,
++   N_("force installation to the removable media path also. "
++      "This option is only available on EFI."), 2},
+   {0, 0, 0, 0, 0, 0}
+ };
+ 
+@@ -829,6 +838,27 @@ fill_core_services (const char *core_services)
+   free (sysv_plist);
+ }
+ 
++static void
++also_install_removable(const char *src, const char *base_efidir, const char *efi_suffix_upper)
++{
++  char *efi_file = NULL;
++  char *dst = NULL;
++  char *dir = NULL;
++
++  if (!efi_suffix_upper)
++    grub_util_error ("%s", _("efi_suffix_upper not set"));
++  efi_file = xasprintf ("BOOT%s.EFI", efi_suffix_upper);
++
++  dir = grub_util_path_concat (3, base_efidir, "EFI", "BOOT");
++  grub_install_mkdir_p (dir);
++
++  dst = grub_util_path_concat (2, dir, efi_file);
++  grub_install_copy_file (src, dst, 1);
++  free (dst);
++  free (efi_file);
++  free (dir);
++}
++
+ int
+ main (int argc, char *argv[])
+ {
+@@ -846,6 +876,7 @@ main (int argc, char *argv[])
+   char *relative_grubdir;
+   char **efidir_device_names = NULL;
+   grub_device_t efidir_grub_dev = NULL;
++  char *base_efidir = NULL;
+   char *efidir_grub_devname;
+   int efidir_is_mac = 0;
+   int is_prep = 0;
+@@ -878,6 +909,9 @@ main (int argc, char *argv[])
+       bootloader_id = xstrdup ("grub");
+     }
+ 
++  if (removable && force_extra_removable)
++    grub_util_error (_("Invalid to use both --removable and --force_extra_removable"));
++
+   if (!grub_install_source_directory)
+     {
+       if (!target)
+@@ -1087,6 +1121,8 @@ main (int argc, char *argv[])
+       if (!efidir_is_mac && grub_strcmp (fs->name, "fat") != 0)
+ 	grub_util_error (_("%s doesn't look like an EFI partition.\n"), efidir);
+ 
++      base_efidir = xstrdup(efidir);
++
+       /* The EFI specification requires that an EFI System Partition must
+ 	 contain an "EFI" subdirectory, and that OS loaders are stored in
+ 	 subdirectories below EFI.  Vendors are expected to pick names that do
+@@ -1949,9 +1985,15 @@ main (int argc, char *argv[])
+ 	    fprintf (config_dst_f, "configfile $prefix/grub.cfg\n");
+ 	    fclose (config_dst_f);
+ 	    free (config_dst);
++	    if (force_extra_removable)
++	      also_install_removable(efi_signed, base_efidir, efi_suffix_upper);
+ 	  }
+ 	else
+-	  grub_install_copy_file (imgfile, dst, 1);
++	  {
++	    grub_install_copy_file (imgfile, dst, 1);
++	    if (force_extra_removable)
++	      also_install_removable(imgfile, base_efidir, efi_suffix_upper);
++	  }
+ 	free (dst);
+       }
+       if (!removable && update_nvram)
diff -Nru grub2-2.02~beta2/debian/patches/series grub2-2.02~beta2/debian/patches/series
--- grub2-2.02~beta2/debian/patches/series	2014-11-30 14:20:36.000000000 +0000
+++ grub2-2.02~beta2/debian/patches/series	2014-12-08 08:38:08.000000000 +0000
@@ -62,3 +62,4 @@
 grub-install-pvxen-paths.patch
 gettext-print-typo.patch
 insmod-xzio-and-lzopio-on-xen.patch
+grub-install-extra-removable.patch
diff -Nru grub2-2.02~beta2/debian/po/ar.po grub2-2.02~beta2/debian/po/ar.po
diff -Nru grub2-2.02~beta2/debian/po/ast.po grub2-2.02~beta2/debian/po/ast.po
diff -Nru grub2-2.02~beta2/debian/po/be.po grub2-2.02~beta2/debian/po/be.po
diff -Nru grub2-2.02~beta2/debian/po/bg.po grub2-2.02~beta2/debian/po/bg.po
diff -Nru grub2-2.02~beta2/debian/po/ca.po grub2-2.02~beta2/debian/po/ca.po
diff -Nru grub2-2.02~beta2/debian/po/cs.po grub2-2.02~beta2/debian/po/cs.po
diff -Nru grub2-2.02~beta2/debian/po/cy.po grub2-2.02~beta2/debian/po/cy.po
diff -Nru grub2-2.02~beta2/debian/po/da.po grub2-2.02~beta2/debian/po/da.po
diff -Nru grub2-2.02~beta2/debian/po/de.po grub2-2.02~beta2/debian/po/de.po
diff -Nru grub2-2.02~beta2/debian/po/dz.po grub2-2.02~beta2/debian/po/dz.po
diff -Nru grub2-2.02~beta2/debian/po/el.po grub2-2.02~beta2/debian/po/el.po
diff -Nru grub2-2.02~beta2/debian/po/eo.po grub2-2.02~beta2/debian/po/eo.po
diff -Nru grub2-2.02~beta2/debian/po/es.po grub2-2.02~beta2/debian/po/es.po
diff -Nru grub2-2.02~beta2/debian/po/eu.po grub2-2.02~beta2/debian/po/eu.po
diff -Nru grub2-2.02~beta2/debian/po/fa.po grub2-2.02~beta2/debian/po/fa.po
diff -Nru grub2-2.02~beta2/debian/po/fi.po grub2-2.02~beta2/debian/po/fi.po
diff -Nru grub2-2.02~beta2/debian/po/fr.po grub2-2.02~beta2/debian/po/fr.po
diff -Nru grub2-2.02~beta2/debian/po/gl.po grub2-2.02~beta2/debian/po/gl.po
diff -Nru grub2-2.02~beta2/debian/po/gu.po grub2-2.02~beta2/debian/po/gu.po
diff -Nru grub2-2.02~beta2/debian/po/he.po grub2-2.02~beta2/debian/po/he.po
diff -Nru grub2-2.02~beta2/debian/po/hr.po grub2-2.02~beta2/debian/po/hr.po
diff -Nru grub2-2.02~beta2/debian/po/hu.po grub2-2.02~beta2/debian/po/hu.po
diff -Nru grub2-2.02~beta2/debian/po/id.po grub2-2.02~beta2/debian/po/id.po
diff -Nru grub2-2.02~beta2/debian/po/is.po grub2-2.02~beta2/debian/po/is.po
diff -Nru grub2-2.02~beta2/debian/po/it.po grub2-2.02~beta2/debian/po/it.po
diff -Nru grub2-2.02~beta2/debian/po/ja.po grub2-2.02~beta2/debian/po/ja.po
diff -Nru grub2-2.02~beta2/debian/po/ka.po grub2-2.02~beta2/debian/po/ka.po
diff -Nru grub2-2.02~beta2/debian/po/kk.po grub2-2.02~beta2/debian/po/kk.po
diff -Nru grub2-2.02~beta2/debian/po/km.po grub2-2.02~beta2/debian/po/km.po
diff -Nru grub2-2.02~beta2/debian/po/ko.po grub2-2.02~beta2/debian/po/ko.po
diff -Nru grub2-2.02~beta2/debian/po/lt.po grub2-2.02~beta2/debian/po/lt.po
diff -Nru grub2-2.02~beta2/debian/po/lv.po grub2-2.02~beta2/debian/po/lv.po
diff -Nru grub2-2.02~beta2/debian/po/mr.po grub2-2.02~beta2/debian/po/mr.po
diff -Nru grub2-2.02~beta2/debian/po/nb.po grub2-2.02~beta2/debian/po/nb.po
diff -Nru grub2-2.02~beta2/debian/po/nl.po grub2-2.02~beta2/debian/po/nl.po
diff -Nru grub2-2.02~beta2/debian/po/pl.po grub2-2.02~beta2/debian/po/pl.po
diff -Nru grub2-2.02~beta2/debian/po/pt.po grub2-2.02~beta2/debian/po/pt.po
diff -Nru grub2-2.02~beta2/debian/po/pt_BR.po grub2-2.02~beta2/debian/po/pt_BR.po
diff -Nru grub2-2.02~beta2/debian/po/ro.po grub2-2.02~beta2/debian/po/ro.po
diff -Nru grub2-2.02~beta2/debian/po/ru.po grub2-2.02~beta2/debian/po/ru.po
diff -Nru grub2-2.02~beta2/debian/po/si.po grub2-2.02~beta2/debian/po/si.po
diff -Nru grub2-2.02~beta2/debian/po/sk.po grub2-2.02~beta2/debian/po/sk.po
diff -Nru grub2-2.02~beta2/debian/po/sl.po grub2-2.02~beta2/debian/po/sl.po
diff -Nru grub2-2.02~beta2/debian/po/sv.po grub2-2.02~beta2/debian/po/sv.po
diff -Nru grub2-2.02~beta2/debian/po/ta.po grub2-2.02~beta2/debian/po/ta.po
diff -Nru grub2-2.02~beta2/debian/po/templates.pot grub2-2.02~beta2/debian/po/templates.pot
diff -Nru grub2-2.02~beta2/debian/po/th.po grub2-2.02~beta2/debian/po/th.po
diff -Nru grub2-2.02~beta2/debian/po/tr.po grub2-2.02~beta2/debian/po/tr.po
diff -Nru grub2-2.02~beta2/debian/po/ug.po grub2-2.02~beta2/debian/po/ug.po
diff -Nru grub2-2.02~beta2/debian/po/uk.po grub2-2.02~beta2/debian/po/uk.po
diff -Nru grub2-2.02~beta2/debian/po/vi.po grub2-2.02~beta2/debian/po/vi.po
diff -Nru grub2-2.02~beta2/debian/po/zh_CN.po grub2-2.02~beta2/debian/po/zh_CN.po
diff -Nru grub2-2.02~beta2/debian/po/zh_TW.po grub2-2.02~beta2/debian/po/zh_TW.po
diff -Nru grub2-2.02~beta2/debian/postinst.in grub2-2.02~beta2/debian/postinst.in
--- grub2-2.02~beta2/debian/postinst.in	2014-11-30 14:20:34.000000000 +0000
+++ grub2-2.02~beta2/debian/postinst.in	2014-12-07 16:41:50.000000000 +0000
@@ -704,7 +704,11 @@
             grub-efi-arm)   target=arm-efi ;;
             grub-efi-arm64) target=arm64-efi ;;
           esac
-          run_grub_install --target="$target"
+          db_get grub2/force_efi_extra_removable
+          if [ "$RET" = true ]; then
+            FORCE_EXTRA_REMOVABLE="--force-extra-removable"
+          fi
+          run_grub_install --target="$target" "$FORCE_EXTRA_REMOVABLE"
         fi
 
         # /boot/grub/ has more chances of being accessible by GRUB
diff -Nru grub2-2.02~beta2/debian/templates.in grub2-2.02~beta2/debian/templates.in
--- grub2-2.02~beta2/debian/templates.in	2014-11-30 14:20:34.000000000 +0000
+++ grub2-2.02~beta2/debian/templates.in	2014-12-07 16:41:50.000000000 +0000
@@ -12,6 +12,17 @@
  The following string will be used as Linux parameters for the default menu
  entry but not for the recovery mode.
 
+Template: grub2/force_efi_extra_removable
+Type: boolean
+Default: false
+_Description: Force extra installation to the EFI removable path?
+ Some EFI-based systems are buggy and do not handle new bootloaders correctly.
+ If you force extra installation of GRUB to the EFI removable path, it should
+ make sure that this system will boot Debian correctly despite such a problem.
+ However, this may remove the ability to boot any other operating systems that
+ also depend on this path. If so, you will need to ensure that GRUB is
+ configured successfully to be able boot any other OS installations correctly.
+
 # still unused
 Template: grub2/kfreebsd_cmdline
 Type: string

Reply to: