[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 6/6] gnu: Add grub-efi.
From: |
Marius Bakke |
Subject: |
Re: [PATCH 6/6] gnu: Add grub-efi. |
Date: |
Fri, 16 Dec 2016 18:33:20 +0100 |
User-agent: |
Notmuch/0.23.3 (https://notmuchmail.org) Emacs/25.1.1 (x86_64-unknown-linux-gnu) |
Ludovic Courtès <address@hidden> writes:
> Hi Marius,
>
> Marius Bakke <address@hidden> skribis:
>
>> Ludovic Courtès <address@hidden> writes:
>>
>>>>>> From 940c03c7dcddec019e27f6eb1470aeab4db57799 Mon Sep 17 00:00:00 2001
>>>>>> From: Marius Bakke <address@hidden>
>>>>>> Date: Thu, 20 Oct 2016 17:26:52 +0100
>>>>>> Subject: [PATCH] gnu: Add grub-efi.
>>>>>>
>>>>>> * gnu/packages/grub.scm (grub-efi): New variable.
>>>>>
>>>>> [...]
>>>>>
>>>>>> + (name "grub-efi")
>>>>>> + (synopsis (string-append (package-synopsis grub) " (UEFI version)"))
>>>>>
>>>>> Please use a literal string for ‘synopsis’; use of ‘string-append’ like
>>>>> this prevents i18n.
>>>>>
>>>>>> + `(#:tests? #f ; FIXME: 40 failures, 24 skipped, 17 passed.
>>>>>
>>>>> It would be good to investigate, especially if the tests pass in the
>>>>> ‘grub’ package.
>>>>>
>>>>> Also, what’s the rationale for making ‘grub-efi’ separate instead of
>>>>> incorporating the changes in ‘grub’ proper? Are there issues around the
>>>>> portability of ‘efibootmgr’, or an increased closure size?
>>>>
>>>> This is a good point. The only difference with "--with-platform=efi" is
>>>> that another directory is created in place of the i386-pc directory. It
>>>> is perfectly possible to build multiple platforms and copying the
>>>> platform-specific stuff to $out/lib -- grub will pick the correct
>>>> platform at runtime. This is what the Gentoo ebuild does.
>>>
>>> Are you saying that a GRUB compiled with UEFI support will no longer
>>> work out-of-the-box on non-UEFI machines, unless platform-specific stuff
>>> is moved like you suggest?
>>
>> Ha, no, it was just a long-winded and intoxicated way of saying what you
>> proposed should work fine. :)
>
> It turns out I have an immediate need ;-), so I pushed this as commit
> 3eee16130d858ae96510ec1c7d38d31290de2699. Let me know if that doesn’t
> seem right!
I think you need to compile with '--with-platform=efi' as well. Check
/gnu/store/...grub-.../lib/grub. I still use a custom 'grub-efi'
expression (attached, needs adaption to 3eee16). Otherwise grub won't
have the required install files, even if it could detect the platform.
Relatedly, I think the way to build a 'multi-grub' is to have one
expression for each supported grub platform, and then consolidate
out/lib/grub from each.
> Now there are things I didn’t quite get. Apparently you’re supposed to
> have a /boot/efi as a vfat partition, and ‘grub-install’ is supposed to
> detect it and install the EFI stuff, or so I thought (info "(grub)
> Installing GRUB using grub-install").
>
> However, ‘grub-install’ still seems to be installing for “i386-pc”
> instead of EFI.
>
> What am I missing?
IIRC grub-install will detect and install for the running mode (pc, efi,
etc). So in a classic chicken-and-egg situation, you need to be booted
with UEFI mode for grub to select the correct installation platform!
I worked around this by installing grub from a UEFI live CD, copy and
adapt the grub.cfg from an existing (BIOS) GuixSD installation, then
coerce the GuixSD system to use EFI from that point..
signature.asc
Description: PGP signature
>From 1ca87a51f55f0b05f89eed707c1485b94f3d7d16 Mon Sep 17 00:00:00 2001
From: Marius Bakke <address@hidden>
Date: Thu, 20 Oct 2016 17:26:52 +0100
Subject: [PATCH] gnu: Add grub-efi.
* gnu/packages/grub.scm (grub-efi): New variable.
---
gnu/packages/grub.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/gnu/packages/grub.scm b/gnu/packages/grub.scm
index ef7395e95..1cb835695 100644
--- a/gnu/packages/grub.scm
+++ b/gnu/packages/grub.scm
@@ -164,3 +164,26 @@ on the same computer; upon booting the computer, the user
is presented with a
menu to select one of the installed operating systems.")
(license gpl3+)
(properties '((cpe-name . "grub2")))))
+
+(define-public grub-efi
+ (package
+ (inherit grub)
+ (name "grub-efi")
+ (synopsis (string-append (package-synopsis grub) " (UEFI version)"))
+ (inputs
+ `(("efibootmgr" ,efibootmgr)
+ ,@(package-inputs grub)))
+ (arguments
+ `(#:tests? #f ; FIXME: 40 failures, 24 skipped, 17 passed.
+ ,@(substitute-keyword-arguments (package-arguments grub)
+ ((#:configure-flags flags) `(cons* "--with-platform=efi"
+ ,flags))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'patch-stuff 'use-absolute-efibootmgr-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "grub-core/osdep/unix/platform.c"
+ (("efibootmgr")
+ (string-append (assoc-ref inputs "efibootmgr")
+ "/sbin/efibootmgr")))
+ #t)))))))))
--
2.11.0
- Re: [PATCH 6/6] gnu: Add grub-efi., Ludovic Courtès, 2016/12/16
- Re: [PATCH 6/6] gnu: Add grub-efi., Danny Milosavljevic, 2016/12/16
- Re: [PATCH 6/6] gnu: Add grub-efi.,
Marius Bakke <=
- Re: [PATCH 6/6] gnu: Add grub-efi., Ludovic Courtès, 2016/12/18
- Re: [PATCH 6/6] gnu: Add grub-efi., Marius Bakke, 2016/12/18
- Re: [PATCH 6/6] gnu: Add grub-efi., Ludovic Courtès, 2016/12/19
- Re: [PATCH 6/6] gnu: Add grub-efi., Marius Bakke, 2016/12/19
- Re: [PATCH 6/6] gnu: Add grub-efi., Ludovic Courtès, 2016/12/19
- Re: [PATCH 6/6] gnu: Add grub-efi., Marius Bakke, 2016/12/19
- Re: [PATCH 6/6] gnu: Add grub-efi., Ludovic Courtès, 2016/12/20
- Re: [PATCH 6/6] gnu: Add grub-efi., Marius Bakke, 2016/12/20
- Re: [PATCH 6/6] gnu: Add grub-efi., Ludovic Courtès, 2016/12/20
- Re: [PATCH 6/6] gnu: Add grub-efi., Marius Bakke, 2016/12/20