Hi Mark, > This change breaks my mips64el-linux GuixSD system, which is supported > by GRUB, but where "--target=i386-pc" is obviously not appropriate. On > my system I need a different 'target' setting.
A pretty safe workaround is to substitute /sys/firmware/efi by /sys/firmware/non-efi in ./grub-core/osdep/linux/platform.c for non-efi grub. See attachment... > In the rare cases where GRUB fails to detect the target, perhaps we > could provide a way to specify an explicit GRUB 'target' in the grub > configuration? I still think that upstream should fix this bug. It's silly that we have to massage grub to not select a target which grub wasn't compiled for - we patch/configure one part of grub so another part of grub isn't confused. It's the same package :P Bootloader configuration is complicated enough already. In this case I'd rather grub did the right thing automatically.
>From 263b1dc0de9643094bc41f4be47b4b2317e95d7c Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic <[email protected]> Date: Sun, 18 Feb 2018 17:30:48 +0100 Subject: [FIXME] gnu: grub: Make sure that non-EFI grub doesn't try to use EFI. Tags: patch * gnu/packages/bootloader.scm (grub)[arguments]<:phases> [patch-/sys/firmware/efi-out]: New phase. (grub-efi)[arguments]<:phases>[patch-/sys/firmware/efi-out]: Delete phase. Fixes <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=30311>. --- gnu/packages/bootloaders.scm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 59eb22f24..c09829e17 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -103,6 +103,11 @@ (copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz") (system* "gunzip" "unifont.bdf.gz") #t)) + (add-after 'unpack 'patch-/sys/firmware/efi-out + (lambda _ + (substitute* "grub-core/osdep/linux/platform.c" + (("/sys/firmware/efi") "/sys/firmware/non-efi")) + #t)) (add-before 'check 'disable-flaky-test (lambda _ ;; This test is unreliable. For more information, see: @@ -177,6 +182,7 @@ menu to select one of the installed operating systems.") `(cons "--with-platform=efi" ,flags)) ((#:phases phases) `(modify-phases ,phases + (delete 'patch-/sys/firmware/efi-out) (add-after 'patch-stuff 'use-absolute-efibootmgr-path (lambda* (#:key inputs #:allow-other-keys) (substitute* "grub-core/osdep/unix/platform.c"
