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