From: Marius Bakke <mbakke@fastmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH 6/6] gnu: Add grub-efi.
Date: Sat, 17 Dec 2016 10:38:15 +0100 [thread overview]
Message-ID: <877f6y3ng8.fsf@kirby.i-did-not-set--mail-host-address--so-tickle-me> (raw)
In-Reply-To: <871sx73ink.fsf@gnu.org>
[-- Attachment #1.1: Type: text/plain, Size: 2551 bytes --]
Ludovic Courtès <ludo@gnu.org> writes:
> Hi Marius,
>
> Marius Bakke <mbakke@fastmail.com> skribis:
>
>> Ludovic Courtès <ludo@gnu.org> writes:
>>
>>>>>> From 940c03c7dcddec019e27f6eb1470aeab4db57799 Mon Sep 17 00:00:00 2001
>>>>>> From: Marius Bakke <mbakke@fastmail.com>
>>>>>> 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!
>
> 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?
For anyone following along at home, I've attached the patches I'm using
for UEFI GuixSD. The latter two probably won't work properly on a
non-UEFI system, needs testing.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: uefi.patch --]
[-- Type: text/x-patch, Size: 5434 bytes --]
From 0a7c923618e8323c684ac8328ea6aa498b8cb13c Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 3 Nov 2016 09:58:34 +0000
Subject: [PATCH 1/5] linux-initrd: Support FAT filesystems.
* gnu/system/linux-initrd.scm (base-initrd): When a FAT filesystem is
present: Add fatfsck/static in 'helper-packages'; and add nls_iso8859-1
in 'linux-modules'.
---
gnu/system/linux-initrd.scm | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 174239a56..a787072ba 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -29,6 +29,7 @@
#:select (derivation->output-path))
#:use-module (guix modules)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages disk)
#:use-module (gnu packages linux)
#:use-module (gnu packages guile)
#:use-module ((gnu packages make-bootstrap)
@@ -193,6 +194,9 @@ loaded at boot time in the order in which they appear."
,@(if (find (file-system-type-predicate "9p") file-systems)
virtio-9p-modules
'())
+ ,@(if (find (file-system-type-predicate "vfat") file-systems)
+ '("nls_iso8859-1")
+ '())
,@(if volatile-root?
'("fuse")
'())
@@ -205,6 +209,11 @@ loaded at boot time in the order in which they appear."
file-systems)
(list e2fsck/static)
'())
+ ,@(if (find (lambda (fs)
+ (string-suffix? "fat" (file-system-type fs)))
+ file-systems)
+ (list fatfsck/static)
+ '())
,@(if volatile-root?
(list unionfs-fuse/static)
'())))
--
2.11.0
From fbddad884b553b6a70ae4da0ee47f29599958704 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 3 Nov 2016 11:08:57 +0000
Subject: [PATCH 2/5] file-systems: Suppress fsck status completion bar.
* gnu/build/file-systems.scm (check-file-system): Drop "-C" argument
from fsck for compatibility with other fscks.
---
gnu/build/file-systems.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 431b287d0..b8dbe499d 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -415,7 +415,7 @@ the following:
(define fsck
(string-append "fsck." type))
- (let ((status (system* fsck "-v" "-p" "-C" "0" device)))
+ (let ((status (system* fsck "-v" "-p" device)))
(match (status:exit-val status)
(0
#t)
--
2.11.0
From 10d696468c3c4cb64980fa1131969e9bb42536c5 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 20 Oct 2016 17:26:52 +0100
Subject: [PATCH 3/5] gnu: Add grub-efi.
* gnu/packages/grub.scm (grub-efi): New variable.
---
gnu/packages/grub.scm | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/gnu/packages/grub.scm b/gnu/packages/grub.scm
index 83304b850..8e6590e80 100644
--- a/gnu/packages/grub.scm
+++ b/gnu/packages/grub.scm
@@ -173,3 +173,14 @@ 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 "GRand Unified Boot loader (UEFI variant)")
+ (arguments
+ `(#:tests? #f ; FIXME: 40 failures, 24 skipped, 17 passed.
+ ,@(substitute-keyword-arguments (package-arguments grub)
+ ((#:configure-flags flags) `(cons* "--with-platform=efi"
+ ,flags)))))))
--
2.11.0
From 1bac0d81be36a3d8c0f206acbfd16e2b61a792ac Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Sun, 6 Nov 2016 17:26:06 +0000
Subject: [PATCH 4/5] build: Make grub-install command UEFI aware.
* gnu/build/install.scm (install-grub): Extend grub-install command with
'--bootloader-id' and '--efi-directory'.
---
gnu/build/install.scm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/gnu/build/install.scm b/gnu/build/install.scm
index 5c2b35632..ddd95bbf6 100644
--- a/gnu/build/install.scm
+++ b/gnu/build/install.scm
@@ -54,6 +54,9 @@ GC'd."
(unless (zero? (system* "grub-install" "--no-floppy"
"--boot-directory"
(string-append mount-point "/boot")
+ "--bootloader-id=GNU"
+ "--efi-directory"
+ (string-append mount-point "/boot")
device))
(error "failed to install GRUB")))
--
2.11.0
From 117859a063e99b8726c205f5d454e306a241e885 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Mon, 7 Nov 2016 12:24:01 +0000
Subject: [PATCH 5/5] system: Load efi modules in grub.cfg.
* gnu/system/grub.scm (eye-candy): Load 'efi_gop' and 'efi_uga' grub modules.
---
gnu/system/grub.scm | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm
index 4657b06b5..9477b2494 100644
--- a/gnu/system/grub.scm
+++ b/gnu/system/grub.scm
@@ -183,6 +183,8 @@ system string---e.g., \"x86_64-linux\"."
(if (string-match "^(x86_64|i[3-6]86)-" system)
"
# Leave 'gfxmode' to 'auto'.
+ insmod efi_gop
+ insmod efi_uga
insmod vbe
insmod vga
insmod video_bochs
--
2.11.0
next prev parent reply other threads:[~2016-12-17 9:38 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-05 12:55 Initial vfat support Marius Bakke
2016-11-05 12:55 ` [PATCH 1/6] gnu: Add fatfsck-static Marius Bakke
2016-11-05 16:01 ` Hartmut Goebel
2016-11-05 16:11 ` Marius Bakke
2016-11-06 21:42 ` Ludovic Courtès
2016-11-05 12:55 ` [PATCH 2/6] linux-initrd: Support FAT filesystems Marius Bakke
2016-11-06 21:44 ` Ludovic Courtès
2016-11-05 12:55 ` [PATCH 3/6] file-systems: Suppress fsck status completion bar Marius Bakke
2016-11-06 21:47 ` Ludovic Courtès
2016-11-07 0:00 ` Marius Bakke
2016-11-07 8:59 ` Ludovic Courtès
2016-11-07 9:29 ` Marius Bakke
2016-11-07 10:15 ` Danny Milosavljevic
2016-12-17 9:40 ` Marius Bakke
2016-12-18 10:57 ` Ludovic Courtès
2016-11-05 12:55 ` [PATCH 4/6] gnu: Add efivar Marius Bakke
2016-11-06 21:51 ` Ludovic Courtès
2016-11-05 12:55 ` [PATCH 5/6] gnu: Add efibootmgr Marius Bakke
2016-11-06 21:52 ` Ludovic Courtès
2016-11-05 12:55 ` [PATCH 6/6] gnu: Add grub-efi Marius Bakke
2016-11-05 18:58 ` Leo Famulari
2016-11-05 19:38 ` Marius Bakke
2016-11-06 22:00 ` Ludovic Courtès
2016-11-07 0:19 ` Marius Bakke
2016-11-07 9:00 ` Ludovic Courtès
2016-11-07 9:23 ` Marius Bakke
2016-12-16 17:09 ` Ludovic Courtès
2016-12-16 17:16 ` Danny Milosavljevic
2016-12-16 17:33 ` Marius Bakke
2016-12-18 10:54 ` Ludovic Courtès
2016-12-18 14:36 ` Marius Bakke
2016-12-19 10:48 ` Ludovic Courtès
2016-12-19 15:49 ` Marius Bakke
2016-12-19 21:16 ` Ludovic Courtès
2016-12-19 22:48 ` Marius Bakke
2016-12-20 13:53 ` Ludovic Courtès
2016-12-20 14:42 ` Marius Bakke
2016-12-20 16:53 ` Ludovic Courtès
2016-12-20 18:43 ` Marius Bakke
2016-12-21 9:12 ` Ludovic Courtès
2016-12-21 18:55 ` Danny Milosavljevic
2017-01-03 16:06 ` Ludovic Courtès
2017-01-03 16:16 ` Chris Marusich
2017-01-04 22:18 ` Ludovic Courtès
2016-12-17 9:38 ` Marius Bakke [this message]
2016-12-17 10:15 ` Marius Bakke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877f6y3ng8.fsf@kirby.i-did-not-set--mail-host-address--so-tickle-me \
--to=mbakke@fastmail.com \
--cc=guix-devel@gnu.org \
--cc=ludo@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).