Package: grub-common
Version: 2.02~beta2-10
Severity: important
Tags: patch

Currently recordfail is disabled on filesystems that GRUB can’t write to.  
However, a filesystem that GRUB could write to might still be located on 
an _abstraction_ that GRUB can’t write to, including LLVM and/or RAID.  
This leads to an error message and delay during boot:

Error: diskfilter writes are not supported.
Press any key to continue...

See also https://bugs.launchpad.net/bugs/1274320.

recordfail is added in debian/patches/quick_boot.patch.  Below is a patch 
on top of that to check for unsupported abstractions.  (I believe this is 
the form of the patch most convenient for git-dpm, but let me know if 
you’d like it in another form.)

Anders


diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
index 8dc5592..7ab59e3 100644
--- a/util/grub.d/00_header.in
+++ b/util/grub.d/00_header.in
@@ -102,23 +102,42 @@ function savedefault {
 EOF
 
 if [ "$quick_boot" = 1 ]; then
-    cat <<EOF
+  cat <<EOF
 function recordfail {
   set recordfail=1
 EOF
+
+  check_writable () {
+    abstractions="$(grub-probe --target=abstraction "${grubdir}")"
+    for abstraction in $abstractions; do
+      case "$abstraction" in
+       diskfilter | lvm)
+         cat <<EOF
+  # GRUB lacks write support for $abstraction, so recordfail support is 
disabled.
+EOF
+         return
+         ;;
+      esac
+    done
+
     FS="$(grub-probe --target=fs "${grubdir}")"
     case "$FS" in
       btrfs | cpiofs | newc | odc | romfs | squash4 | tarfs | zfs)
        cat <<EOF
   # GRUB lacks write support for $FS, so recordfail support is disabled.
 EOF
+       return
        ;;
-      *)
-       cat <<EOF
-  if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env 
recordfail; fi; fi
-EOF
     esac
+
     cat <<EOF
+  if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env 
recordfail; fi; fi
+EOF
+  }
+
+  check_writable
+
+  cat <<EOF
 }
 EOF
 fi


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to