efi-less grub install fails

OpenSubmitted by Ricardo Wurmus.
Details
6 participants
  • Danny Milosavljevic
  • Ludovic Courtès
  • Marius Bakke
  • Mark H Weaver
  • Ricardo Wurmus
  • Ricardo Wurmus
Owner
unassigned
Severity
important
R
R
Ricardo Wurmus wrote on 31 Jan 2018 19:55
(address . bug-guix@gnu.org)
idjmv0t503l.fsf@bimsb-sys02.mdc-berlin.net
“guix system init” fails with a configuration file that specifiesgrub-bootloader (not grub-efi-bootloader).
“grub-install” reports an error about “lib/grub/x86_64-efi/modinfo.sh”not being available. It suggests passing “--target” or “--device”.
Our invocation of grub-install does not include a “--target” argument.Only after I edited it to pass “--target=i386-pc” did “guix system init”pass.
This is on an x86_64 laptop where “legacy” BIOS booting is enabled.
--Ricardo
D
D
Danny Milosavljevic wrote on 1 Feb 2018 00:34
(name . Ricardo Wurmus)(address . ricardo.wurmus@mdc-berlin.de)(address . 30311@debbugs.gnu.org)
20180201003414.4a535dec@scratchpost.org
Hi Ricardo,
On Wed, 31 Jan 2018 19:55:58 +0100Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> wrote:
Toggle quote (10 lines)> “guix system init” fails with a configuration file that specifies> grub-bootloader (not grub-efi-bootloader).> > “grub-install” reports an error about “lib/grub/x86_64-efi/modinfo.sh”> not being available. It suggests passing “--target” or “--device”.> > Our invocation of grub-install does not include a “--target” argument.> Only after I edited it to pass “--target=i386-pc” did “guix system init”> pass.
Hmm, I wonder what happened here.
We've been very careful to keep grub and grub-efi separate.
The entire directory lib/grub/x86_64-efi shouldn't be available in the"grub" package output - and I checked on master, it isn't. Good.
So that leaves automatic target selection as the culprit.
And indeed, there's a call to grub_install_get_default_x86_platformin util/grub-install.c . And that checks for availability of/sys/firmware/efi and if it exists, defaults to EFI.
I think it's a bug in grub to do that for a grub which doesn't have EFIplatform support. :P
We could just always pass i386-pc in install-grub for i386, but thenwe lose i386-ieee1275 (which I have never heard anyone using so maybenot so bad).
Please report a bug with grub...
L
L
Ludovic Courtès wrote on 1 Feb 2018 00:55
(name . Ricardo Wurmus)(address . ricardo.wurmus@mdc-berlin.de)
87y3kdoa6m.fsf@gnu.org
Heya,
Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> skribis:
Toggle quote (12 lines)> “guix system init” fails with a configuration file that specifies> grub-bootloader (not grub-efi-bootloader).>> “grub-install” reports an error about “lib/grub/x86_64-efi/modinfo.sh”> not being available. It suggests passing “--target” or “--device”.>> Our invocation of grub-install does not include a “--target” argument.> Only after I edited it to pass “--target=i386-pc” did “guix system init”> pass.>> This is on an x86_64 laptop where “legacy” BIOS booting is enabled.
To complement from what we’ve discussed on IRC:
• It’s a UEFI laptop with legacy-BIOS enabled, but UEFI still.
• AIUI the installation image boots in UEFI mode on UEFI machines, and then ‘grub-install’ (probably via ‘efivar’ or /sys or similar) detects that it’s UEFI, decides that the target is thus “x86_64-efi”, and fails because it lacks the EFI files.
I can think of two possible workarounds:
1. Default to ‘grub-hybrid’. But in that case, you’d have done a UEFI install unconditionally.
2. For ‘grub-bootloader’ (not EFI), always pass ‘--target=i386-pc’.
Danny, Marius, thoughts? :-)
Ludo’.
M
M
Marius Bakke wrote on 1 Feb 2018 13:40
(address . 30311@debbugs.gnu.org)
87inbgq3wp.fsf@fastmail.com
Danny Milosavljevic <dannym@scratchpost.org> writes:
Toggle quote (35 lines)> Hi Ricardo,>> On Wed, 31 Jan 2018 19:55:58 +0100> Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> wrote:>>> “guix system init” fails with a configuration file that specifies>> grub-bootloader (not grub-efi-bootloader).>> >> “grub-install” reports an error about “lib/grub/x86_64-efi/modinfo.sh”>> not being available. It suggests passing “--target” or “--device”.>> >> Our invocation of grub-install does not include a “--target” argument.>> Only after I edited it to pass “--target=i386-pc” did “guix system init”>> pass.>> Hmm, I wonder what happened here.>> We've been very careful to keep grub and grub-efi separate.>> The entire directory lib/grub/x86_64-efi shouldn't be available in the> "grub" package output - and I checked on master, it isn't. Good.>> So that leaves automatic target selection as the culprit.>> And indeed, there's a call to grub_install_get_default_x86_platform> in util/grub-install.c . And that checks for availability of> /sys/firmware/efi and if it exists, defaults to EFI.>> I think it's a bug in grub to do that for a grub which doesn't have EFI> platform support. :P>> We could just always pass i386-pc in install-grub for i386, but then> we lose i386-ieee1275 (which I have never heard anyone using so maybe> not so bad).
I agree, passing --target seems like the best workaround for this GRUBbug.
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAlpzCrYACgkQoqBt8qM6VPq+8gf/Y1ibK7FQhUDxpyA9k86wEW0DQi/y7S2oe6KbqQutUWi0gNtsOGGzbv5CqydX7PAEHKkZLAWNEKBRB2ykzzN1RbmgdCZbopEam7GFPrt/+PTr0cNB8slEv9V263n4BZqPjPupYYSyPaZ9hksBHINBccqX3JwwtTV+WnnD9v7W5hgqPX7xnEcFE0ZKf/7ISzRfRh1pPD6dF0mxMBH5XULruFK/F2i6C2lIDKubbf9lrYgvx00zEoZtxNrS1I3uoIYEPcUVY2YAnO/TPQzHHkT5OACfCWYkK+/1gs5pBBDov4UncMBab3QamPQ/0/T1JxgenCK8hWBpyW0bLo/jcU1chA===ULOe-----END PGP SIGNATURE-----
L
L
Ludovic Courtès wrote on 6 Feb 2018 17:05
control message for bug #30311
(address . control@debbugs.gnu.org)
87372e5cjg.fsf@gnu.org
severity 30311 important
R
R
Ricardo Wurmus wrote on 18 Feb 2018 12:28
Re: bug#30311: efi-less grub install fails
(name . Marius Bakke)(address . mbakke@fastmail.com)
87371yy1te.fsf@mdc-berlin.de
Marius Bakke <mbakke@fastmail.com> writes:
Toggle quote (40 lines)> Danny Milosavljevic <dannym@scratchpost.org> writes:>>> Hi Ricardo,>>>> On Wed, 31 Jan 2018 19:55:58 +0100>> Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> wrote:>>>>> “guix system init” fails with a configuration file that specifies>>> grub-bootloader (not grub-efi-bootloader).>>> >>> “grub-install” reports an error about “lib/grub/x86_64-efi/modinfo.sh”>>> not being available. It suggests passing “--target” or “--device”.>>> >>> Our invocation of grub-install does not include a “--target” argument.>>> Only after I edited it to pass “--target=i386-pc” did “guix system init”>>> pass.>>>> Hmm, I wonder what happened here.>>>> We've been very careful to keep grub and grub-efi separate.>>>> The entire directory lib/grub/x86_64-efi shouldn't be available in the>> "grub" package output - and I checked on master, it isn't. Good.>>>> So that leaves automatic target selection as the culprit.>>>> And indeed, there's a call to grub_install_get_default_x86_platform>> in util/grub-install.c . And that checks for availability of>> /sys/firmware/efi and if it exists, defaults to EFI.>>>> I think it's a bug in grub to do that for a grub which doesn't have EFI>> platform support. :P>>>> We could just always pass i386-pc in install-grub for i386, but then>> we lose i386-ieee1275 (which I have never heard anyone using so maybe>> not so bad).>> I agree, passing --target seems like the best workaround for this GRUB> bug.
Okay, I’ve added “--target=i386-pc” to the list of arguments.
Thanks for the comments.
-- Ricardo
Closed
M
M
Mark H Weaver wrote on 18 Feb 2018 17:20
(address . 30311@debbugs.gnu.org)
87tvuel15z.fsf@netris.org
reopen 30311thanks
Hi Ricardo,
Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> writes:
Toggle quote (2 lines)> Okay, I’ve added “--target=i386-pc” to the list of arguments.
This change breaks my mips64el-linux GuixSD system, which is supportedby GRUB, but where "--target=i386-pc" is obviously not appropriate. Onmy system I need a different 'target' setting.
It would be great if we could find another solution to this issue.GRUB's automatic target selection seems to work on most systems, sincewe've been relying on it for a long time without anyone reportingproblems until this bug report.
In the rare cases where GRUB fails to detect the target, perhaps wecould provide a way to specify an explicit GRUB 'target' in the grubconfiguration? What do you think?
Mark
D
D
Danny Milosavljevic wrote on 18 Feb 2018 17:49
(name . Mark H Weaver)(address . mhw@netris.org)
20180218174922.47f656a7@scratchpost.org
Hi Mark,
Toggle quote (4 lines)> 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-efiin ./grub-core/osdep/linux/platform.c for non-efi grub.
See attachment...
Toggle quote (4 lines)> 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 tomassage grub to not select a target which grub wasn't compiled for - wepatch/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 rathergrub did the right thing automatically.
From 263b1dc0de9643094bc41f4be47b4b2317e95d7c Mon Sep 17 00:00:00 2001From: Danny Milosavljevic <dannym@scratchpost.org>Date: Sun, 18 Feb 2018 17:30:48 +0100Subject: [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(+)
Toggle diff (24 lines)diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scmindex 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"
M
M
Marius Bakke wrote on 20 Feb 2018 04:21
(name . Ricardo Wurmus)(address . ricardo.wurmus@mdc-berlin.de)
878tbocpm2.fsf@fastmail.com
Mark H Weaver <mhw@netris.org> writes:
Toggle quote (9 lines)> Hi Ricardo,>> Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> writes:>> Okay, I’ve added “--target=i386-pc” to the list of arguments.>> 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.
Maybe we can make it conditional on EFI for now. Ricardo, are you ableto test the attached patch? I suspect we might get problems on POWERand some ARM systems down the road, but it should at least fix thisimmediate issue.
Note: I haven't tested this patch myself.
From ce5d6089aff0cf6c31260ac2bbe0aeb2803eb8a0 Mon Sep 17 00:00:00 2001From: Marius Bakke <mbakke@fastmail.com>Date: Tue, 20 Feb 2018 04:02:23 +0100Subject: [PATCH] gnu: Pass "--target" to EFI-less GRUB only when EFI variables are present.
Fixes https://bugs.gnu.org/30311.
* gnu/bootloader/grub.scm (install-grub): Make "--target" argumentconditional on the presence of "/sys/firmware/efi".--- gnu/bootloader/grub.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
Toggle diff (21 lines)diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scmindex 3b01125c7..2b8458161 100644--- a/gnu/bootloader/grub.scm+++ b/gnu/bootloader/grub.scm@@ -386,8 +386,13 @@ submenu \"GNU system, old configurations...\" {~%") ;; root partition. (setenv "GRUB_ENABLE_CRYPTODISK" "y") - (unless (zero? (system* grub "--no-floppy" "--target=i386-pc"+ (unless (zero? (system* grub "--no-floppy" "--boot-directory" install-dir+ ;; Explicitly pass target if the non-EFI+ ;; GRUB is requested on an EFI system.+ ;; See <https://bugs.gnu.org/30311>.+ ,@(if (file-exists? "/sys/firmware/efi")+ "--target=i386-pc") device)) (error "failed to install GRUB (BIOS)"))))) -- 2.16.2
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAlqLlFUACgkQoqBt8qM6VPr4tgf/USpnc+DLJxUw12BYHs8BJhh3hX7I37pcNa+w8+wm1oD7WjjpJ6MGV5vBpp2J3l21xlvss9gkOraxtzw4UA15D2KvfyB76E2y4e6ez5QA3xr9/d0Ske0guqQdpu2Kdr0nEP7o5uLIU3Hyzu+G3wNUZQpipMJ8Q3UxaQU6jeFiGlJo8A+Mf9mi7/U4oKgqFQk3rBFHQNnH53cuMNLkQ/9HTlt7Wk5liUIPWalwdgq75g9eWW6/QGCYRtoKtkVn8qy4tV6ANXTtCmLWvGG+HmVe312Uf6mB8a9m6x1DSmVK9+O4sn6pflrWgb6XFxh5kMabo3I1EJRv08tzkBHZRg63ow===ozrx-----END PGP SIGNATURE-----
M
M
Marius Bakke wrote on 20 Feb 2018 04:46
(name . Ricardo Wurmus)(address . ricardo.wurmus@mdc-berlin.de)
87606scohd.fsf@fastmail.com
Marius Bakke <mbakke@fastmail.com> writes:
Toggle quote (18 lines)> Mark H Weaver <mhw@netris.org> writes:>>> Hi Ricardo,>>>> Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> writes:>>> Okay, I’ve added “--target=i386-pc” to the list of arguments.>>>> 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.>> Maybe we can make it conditional on EFI for now. Ricardo, are you able> to test the attached patch? I suspect we might get problems on POWER> and some ARM systems down the road, but it should at least fix this> immediate issue.>> Note: I haven't tested this patch myself.
Bah, here is a fixed version that actually works (for the normal case).
From 968ccb27e40ce683ec469f3ac7973827a7e8ddf5 Mon Sep 17 00:00:00 2001From: Marius Bakke <mbakke@fastmail.com>Date: Tue, 20 Feb 2018 04:02:23 +0100Subject: [PATCH] gnu: Pass "--target" to EFI-less GRUB only when EFI variables are present.
Fixes https://bugs.gnu.org/30311.
* gnu/bootloader/grub.scm (install-grub): Make "--target" argumentconditional on the presence of "/sys/firmware/efi".--- gnu/bootloader/grub.scm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
Toggle diff (25 lines)diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scmindex 3b01125c7..17ded5f6d 100644--- a/gnu/bootloader/grub.scm+++ b/gnu/bootloader/grub.scm@@ -386,9 +386,15 @@ submenu \"GNU system, old configurations...\" {~%") ;; root partition. (setenv "GRUB_ENABLE_CRYPTODISK" "y") - (unless (zero? (system* grub "--no-floppy" "--target=i386-pc"- "--boot-directory" install-dir- device))+ (unless (zero? (apply system* grub+ (list "--no-floppy"+ "--boot-directory" install-dir+ ;; Explicitly pass target if the non-EFI+ ;; GRUB is requested on an EFI system.+ ;; See <https://bugs.gnu.org/30311>.+ #$@(if (file-exists? "/sys/firmware/efi")+ '("--target=i386-pc"))+ device))) (error "failed to install GRUB (BIOS)"))))) (define install-grub-efi-- 2.16.2
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAlqLmg4ACgkQoqBt8qM6VPorfwf+I0dEVp0xpxREgpi5NA6BGVafqm35tu4lMfRuACa+GiNo/JkY7YsRSrfJV0KONQlRHnq2ts9kjnA4EukAvtUvXdixNX0anHbNTRHXvCYIJzbjHM54VIe/Ws3OlI2YsshsZFcMZnNDOIYXCixLfA+1f315kwqjeOW+NG7PzIhDUeTG/CvOobVVTv+hn92gk0Ru3c7c4asL0gAKw8LZ3BWKNObOJuTqdFE5Xl186AC5pPakiXqgDpZHTExwF6OhgHQPX/3O5/qBqqUOrqBgwKQKXVS+qlMDj9l4tLNuMdCrywuFmWp+PVg9AGE/nCeOjHXuPOQ3bLmcd4LE9cj9G47wfg===yG6e-----END PGP SIGNATURE-----
D
D
Danny Milosavljevic wrote on 20 Feb 2018 21:54
(name . Marius Bakke)(address . mbakke@fastmail.com)
20180220215420.072269e6@scratchpost.org
Hi Marius,
hmm, if the conditional doesn't have an alternative case, doesn't that mean that thevalue is unspecified? The list constructor doesn't like that...
You probably meant '()
Other than that, I agree that something like this patch is the low-risk workaroundto do.
D
D
Danny Milosavljevic wrote on 20 Feb 2018 22:00
(name . Marius Bakke)(address . mbakke@fastmail.com)
20180220220011.737ee227@scratchpost.org
Also, grub-hybrid is supposed to use efi so the workaround shouldn't be used with it...
What do you think about my direct grub patch?
R
R
Ricardo Wurmus wrote on 20 Feb 2018 22:40
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
87o9kjqqzw.fsf@elephly.net
Hi Danny,
Toggle quote (7 lines)>> 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.
I don’t understand this patch. How does it work?
What is the effect of replacing /sys/firmware/efi with/sys/firmware/non-efi?
-- Ricardo
GPG: BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAChttps://elephly.net
D
D
Danny Milosavljevic wrote on 20 Feb 2018 22:43
(name . Ricardo Wurmus)(address . rekado@elephly.net)
20180220224317.36920bcb@scratchpost.org
Toggle quote (5 lines)> I don’t understand this patch. How does it work?> > What is the effect of replacing /sys/firmware/efi with> /sys/firmware/non-efi?
It won't find EFI since it's looking in the wrong place.
That's what we want :)
R
R
Ricardo Wurmus wrote on 20 Feb 2018 22:49
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
87lgfnqqlc.fsf@elephly.net
Danny Milosavljevic <dannym@scratchpost.org> writes:
Toggle quote (9 lines)>> I don’t understand this patch. How does it work?>>>> What is the effect of replacing /sys/firmware/efi with>> /sys/firmware/non-efi?>> It won't find EFI since it's looking in the wrong place.>> That's what we want :)
So the value “/sys/firmware/non-efi” might as well be“/does-not-exist”?
Your patch subject says “Make sure that non-EFI grub doesn't try to useEFI”, but the problem I had was that GRUB insisted on being passed a“--target” option. That was with a GRUB installation on a system inlegacy mode. Do you mean that this failed because GRUB erroneouslyattempted an EFI installation?
I’m thoroughly confused.
--Ricardo
GPG: BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAChttps://elephly.net
D
D
Danny Milosavljevic wrote on 20 Feb 2018 23:00
(name . Ricardo Wurmus)(address . rekado@elephly.net)
20180220230027.1884531a@scratchpost.org
Hi Ricardo,
On Tue, 20 Feb 2018 22:49:19 +0100Ricardo Wurmus <rekado@elephly.net> wrote:
Toggle quote (3 lines)> So the value “/sys/firmware/non-efi” might as well be> “/does-not-exist”?
Yes.
Toggle quote (8 lines)> Your patch subject says “Make sure that non-EFI grub doesn't try to use> EFI”, but the problem I had was that GRUB insisted on being passed a> “--target” option.
> That was with a GRUB installation on a system in> legacy mode. Do you mean that this failed because GRUB erroneously> attempted an EFI installation?
Yes, I think so.
There's a default-platform function in grub which determines the defaultplatform to use at runtime if you don't specify one. It one checks forthe existence of /sys/firmware/efi, and if so, returns "i386-efi" or"x86_64-efi" (see ./grub-core/osdep/linux/platform.c).
Grub's "configure" script has the ability to select which platform youwant to compile. For the "grub" package, we choose i386, and for the"grub-efi" package, we choose i386-efi.
The "grub-hybrid" package unions the "grub" and "grub-efi" packages,preferring files from the "grub-efi" package. I think thisconfiguration is what upstream actually tests (only).
In the "grub" package we then had the situation that it was compiledfor i386 (not EFI) but THEIR OWN default-platform function specifiedto use i386-efi which is some seriously strange stuff.
Do you think that this was not the cause?
M
M
Marius Bakke wrote on 22 Feb 2018 16:06
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
87mv019i88.fsf@fastmail.com
Danny Milosavljevic <dannym@scratchpost.org> writes:
Toggle quote (2 lines)> Also, grub-hybrid is supposed to use efi so the workaround shouldn't be used with it...
Right, I had forgotten about grub-hybrid. That complicates things.
Toggle quote (2 lines)> What do you think about my direct grub patch?
That works too :-) It just felt a little "heavy-handed". I'll letRicardo judge which approach to take.
I do wonder if we can do better though, and maybe even fix it properly.Ricardo: Can you post the output of `find /sys/firmware/efi -maxdepth 1`on the affected machine? With luck, we'll find a variable that is onlypresent on "real" EFI.
Can you also post the contents of '/sys/firmware/efi/runtime'?
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAlqO3HcACgkQoqBt8qM6VPqSEgf/RuzsaZ8bFG4EfBDdBdPCVcPuHYr6udH50T/0jf/W7LIVj+4Twj1VU6gjH8m7Ev4UFFXbp95rlme2NDO2xAKq03R1S4UxZyMuaDonjwJo8lfvdyiYKD3tgFIxiTPakwHBWtvntTC63UPVHcD8/YX9V2FldN/3Ehs/a1YXn7qoCITjQ8aIDaFUtN/FlRkB3MS4iC0EYy2cbFpW9WfBtk7UxMRIfHrgwDmNIvs4RTpL1ijnXGl0HMxCqZ30b+6/Jwb6LiJsU5pb1Y3svqGQztyJ3C4dj7Mp9/VfKEa2GXZyTAf/Pl6Rj2CWekSuVqrBEdxAndpgkymjL0jmnHTeyVtjyg===dbJA-----END PGP SIGNATURE-----
R
R
Ricardo Wurmus wrote on 22 Feb 2018 16:47
(name . Marius Bakke)(address . mbakke@fastmail.com)
871shdqb5q.fsf@elephly.net
Marius Bakke <mbakke@fastmail.com> writes:
Toggle quote (6 lines)> Ricardo: Can you post the output of `find /sys/firmware/efi -maxdepth 1`> on the affected machine? With luck, we'll find a variable that is only> present on "real" EFI.>> Can you also post the contents of '/sys/firmware/efi/runtime'?
Now that I have GuixSD installed on that machine I don’t have/sys/firmware/efi at all. /sys/firmware contains “acpi”, “dmi”, and“memmap” only.
The problem occurred when I tried to install GuixSD (after booting froma GuixSD installer USB drive), not when reconfiguring. I don’t have aUSB drive with me at the moment, so I cannot check the contents of/sys/firmware in the installer GuixSD now.
--Ricardo
GPG: BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAChttps://elephly.net
M
M
Marius Bakke wrote on 23 Feb 2018 12:30
(name . Ricardo Wurmus)(address . rekado@elephly.net)
87bmgg9c47.fsf@fastmail.com
Ricardo Wurmus <rekado@elephly.net> writes:
Toggle quote (17 lines)> Marius Bakke <mbakke@fastmail.com> writes:>>> Ricardo: Can you post the output of `find /sys/firmware/efi -maxdepth 1`>> on the affected machine? With luck, we'll find a variable that is only>> present on "real" EFI.>>>> Can you also post the contents of '/sys/firmware/efi/runtime'?>> Now that I have GuixSD installed on that machine I don’t have> /sys/firmware/efi at all. /sys/firmware contains “acpi”, “dmi”, and> “memmap” only.>> The problem occurred when I tried to install GuixSD (after booting from> a GuixSD installer USB drive), not when reconfiguring. I don’t have a> USB drive with me at the moment, so I cannot check the contents of> /sys/firmware in the installer GuixSD now.
In this case I'm certain that the installer booted in EFI mode, crushingmy dreams of a proper fix. So we'll need one of the proposedworkarounds to prevent this problem in the future.
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAlqP+2kACgkQoqBt8qM6VPrZuAgAn3jwrKMtExGQ5WWbRIRodfH07x66GlJVN+rie9wjWRG/GL5dwrsBvEJksUCRNVLGx000PQF/ojF11XnmdXnJH3tmHuMOl80BQzvf0XiLM8NcHFphtUcSwSzxG608tnaDU6f5FNMK3pOGyBrP7Z/b0eeYpFYam5VHT/kIMXOeqGQxrBG728CYEo535C2hVZI6vFbOUTvsga0EKNWNDJ9ZCM2RVeg4U1zDZh9xbrTqwXXnw/y3tidnnDzLVbq+kI/nct3BiaiCbVBA5hxXCeTnQZFS91p0iaOST04zea+g4TK+e8z5N+/H4kXHk+i8mqboCmEHA5+vYwCLq+wlegQqkg===1WN8-----END PGP SIGNATURE-----
D
D
Danny Milosavljevic wrote on 26 Mar 2018 23:15
(name . Ricardo Wurmus)(address . rekado@elephly.net)
20180326231545.32ad7d9d@scratchpost.org
Any news on how to proceed on this grub target thing?
I think the patch below is harmless enough and makes each grub packageself-consistent (the non-efi grub doesn't try to use efi, the grub-efitries to use efi and grub-hybrid tries to use efi, then).
Toggle quote (1 lines)>From 263b1dc0de9643094bc41f4be47b4b2317e95d7c Mon Sep 17 00:00:00 2001
From: Danny Milosavljevic <dannym@scratchpost.org>Date: Sun, 18 Feb 2018 17:30:48 +0100Subject: [PATCH] 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(+)
Toggle diff (24 lines)diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scmindex 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"
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAlq5YwEACgkQ5xo1VCwwuqX1ewgAkeorF3oQ251U2U69xZLLzukjbYwTRFSqYLYTUCZqjGV9eiNt8+jH/XwXdO5I98hdXZR6UfxPqhBkjc8xB9f7TJxTiQaVgUDWRCDhxkAlK7LYRAK4MLxcXC/2i0OpHuO9Gzg4eslNOh/HSlDqH88NRI+6FLKrHxYSWyGQKoCiRce1Lms2CsEf8ebj/bGqXtpvn1kMAMxKqbe/FD2hYFE39LRh41fiDlDdzmB3LhIDPIN1Tn+9VVP5bYbPnZ6UCNA3hMS3I1SS50yGg2EYLuCpVBnRPLdfgl8tMcybbGOOZcuqOx8qJ/rTE8tSLmGrq7GKoVptAgcR24bl3FsoNMRBOA===oGOM-----END PGP SIGNATURE-----

?