From: ludo@gnu.org (Ludovic Courtès)
To: Marius Bakke <mbakke@fastmail.com>
Cc: 26815@debbugs.gnu.org
Subject: bug#26815: [PATCH 3/3] vm: Support EFI boot in base image.
Date: Mon, 08 May 2017 16:50:47 +0200 [thread overview]
Message-ID: <87efvzl7w8.fsf@gnu.org> (raw)
In-Reply-To: <87d1bjyay3.fsf@fastmail.com> (Marius Bakke's message of "Mon, 08 May 2017 11:06:28 +0200")
Marius Bakke <mbakke@fastmail.com> skribis:
> From 9555239cfc9362a15cc3f255040c410395d49e04 Mon Sep 17 00:00:00 2001
> From: Marius Bakke <mbakke@fastmail.com>
> Date: Sun, 7 May 2017 15:31:30 +0200
> Subject: [PATCH] vm: Support EFI boot in base image.
>
> * gnu/system/vm.scm (qemu-image): Add GRUB-EFI to inputs. Append 40MB
> EFI System Partition.
> * gnu/build/vm.scm (initialize-hard-disk): Generate grub EFI blob when ESP is
> present.
[...]
> + ;; If we have an ESP partition, generate a self-contained grub EFI
> + ;; image and write it to a well-known location.
> + (when esp
> + (let* ((system %host-type)
> + (efi-payload-directory (string-append efi-directory "/EFI/BOOT"))
> + ;; Map the grub targets to the boot file names expected by
> + ;; UEFI compliant firmware. See "Removable Media Boot Behavior":
> + ;; http://www.uefi.org/sites/default/files/resources/UEFI%20Spec%202_6.pdf
> + (efi-target-map (cond
> + ((string-prefix? "x86_64" system)
> + '("x86_64-efi" . "BOOTX64.EFI"))
> + ((string-prefix? "i686" system)
> + '("i386-efi" . "BOOTIA32.EFI"))
> + ((string-prefix? "armhf" system)
> + '("arm-efi" . "BOOTARM.EFI"))
> + ((string-prefix? "aarch64" system)
> + '("arm64-efi" . "BOOTAA64.EFI"))))
> + (grub-tmp (string-append target "/tmp"))
> + (grub.cfg (string-append grub-tmp "/grub.cfg")))
> + (display "mounting EFI system partition...\n")
> + (mkdir-p efi-directory)
> + (mount (partition-device esp) efi-directory
> + (partition-file-system esp))
> + (mkdir-p efi-payload-directory)
> +
> + ;; Grub needs a tmpdir to prepare the image.
> + (setenv "TMPDIR" grub-tmp)
> + ;; We also need a tiny configuration file telling the EFI blob where
> + ;; to find the real thing.
> + (with-output-to-file grub.cfg
> + (lambda _
> + (format #t
> + "insmod part_msdos~@
> + search --set=root --label gnu-disk-image~@
> + configfile /boot/grub/grub.cfg~%")))
> + (display "creating grub firmware image...\n")
> + (unless (zero? (system* "grub-mkstandalone" "-O" (car efi-target-map)
> + "-o" (string-append efi-payload-directory "/"
> + (cdr efi-target-map))
> + ;; Graft the contents of our configuration file
> + ;; into the image. See grub-mkstandalone(1).
> + (string-append "boot/grub/grub.cfg=" grub.cfg)))
> + (error "failed to create grub EFI image"))
> +
> + (delete-file grub.cfg)
> + (umount efi-directory)))
Could you move the body hi of ‘when’ to a separate procedure, say
‘install-efi’, such that this reduces to something like:
(when esp
(install-efi esp grub.cfg))
> + (partition
> + ;; Append a small FAT32 partition for
> + ;; use with UEFI bootloaders.
> + (size (* 40 (expt 2 20)))
> + (label "gnu-esp")
> + (file-system "vfat")
> + (flags '(esp))))))
> (initialize-hard-disk "/dev/vda"
> #:partitions partitions
> #:bootloader
All the images we create will now have that extra ESP, but maybe that’s
OK.
Is the “gnu-esp” label of this partition used for lookup anywhere? If
it was, we’d run into problems as soon as we have several partitions
with this hard-coded label (say you have your installed GuixSD as well
as the installation image on a USB key that’s plugged in.) If the label
is not used for lookup, that’s OK.
Apart from that LGTM, thank you!
Ludo’.
next prev parent reply other threads:[~2017-05-08 14:52 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-07 14:35 bug#26815: [PATCH 0/3] Hybrid UEFI disk image Marius Bakke
2017-05-07 14:36 ` bug#26815: [PATCH 1/3] vm: Add support for arbitrary partition flags Marius Bakke
2017-05-07 14:36 ` bug#26815: [PATCH 2/3] vm: Support creating FAT partitions Marius Bakke
2017-05-07 15:26 ` Danny Milosavljevic
2017-05-07 15:52 ` Marius Bakke
2017-05-07 16:32 ` bug#26815: [PATCH v2 " Marius Bakke
2017-05-07 17:06 ` bug#26815: [PATCH " Danny Milosavljevic
2017-05-07 19:15 ` Marius Bakke
2017-05-07 20:07 ` Danny Milosavljevic
2017-05-08 14:45 ` Ludovic Courtès
2017-05-08 15:59 ` Maxim Cournoyer
2017-05-07 14:36 ` bug#26815: [PATCH 3/3] vm: Support EFI boot in base image Marius Bakke
2017-05-07 15:18 ` Danny Milosavljevic
2017-05-07 15:41 ` Marius Bakke
2017-05-07 19:17 ` Marius Bakke
2017-05-08 9:06 ` Marius Bakke
2017-05-08 14:50 ` Ludovic Courtès [this message]
2017-05-10 19:52 ` bug#26815: [PATCH 1/3] vm: Support arbitrary partition flags Marius Bakke
2017-05-10 19:52 ` bug#26815: [PATCH 2/3] vm: Support creating FAT partitions Marius Bakke
2017-05-10 19:52 ` bug#26815: [PATCH 3/3] vm: Add UEFI loader to disk images Marius Bakke
2017-05-10 21:05 ` Ludovic Courtès
2017-05-10 21:21 ` Marius Bakke
2017-05-10 19:58 ` bug#26815: [PATCH 3/3] vm: Support EFI boot in base image Marius Bakke
2017-05-12 22:06 ` Ludovic Courtès
2017-05-12 23:12 ` Marius Bakke
2017-05-13 9:17 ` Mathieu Othacehe
2017-05-13 13:11 ` Ludovic Courtès
2017-05-13 14:13 ` Marius Bakke
2017-05-13 19:23 ` Ludovic Courtès
2017-05-16 15:17 ` Ludovic Courtès
2017-05-17 11:05 ` Marius Bakke
2017-05-17 12:36 ` Marius Bakke
2017-05-17 13:42 ` Ricardo Wurmus
2017-05-17 19:47 ` Ludovic Courtès
2017-05-17 11:05 ` bug#26815: [PATCH v4 1/3] vm: Support arbitrary partition flags Marius Bakke
2017-05-17 11:05 ` bug#26815: [PATCH v4 2/3] vm: Support creating FAT partitions Marius Bakke
2017-05-17 11:05 ` bug#26815: [PATCH v4 3/3] vm: Add UEFI loader to disk images Marius Bakke
2017-05-17 21:28 ` Ludovic Courtès
2017-05-18 16:21 ` Marius Bakke
2017-05-18 17:34 ` Marius Bakke
2017-05-18 20:59 ` Ludovic Courtès
2017-05-19 16:15 ` Marius Bakke
2017-05-19 17:37 ` Mathieu Othacehe
2017-05-19 18:06 ` Marius Bakke
2017-05-20 8:25 ` Ludovic Courtès
2017-05-20 8:55 ` Mathieu Othacehe
2017-05-20 9:23 ` Marius Bakke
2017-05-20 9:36 ` Ludovic Courtès
2017-05-20 9:36 ` Mathieu Othacehe
2017-05-20 10:05 ` Marius Bakke
2017-05-19 21:21 ` Ludovic Courtès
2017-05-18 20:50 ` Ludovic Courtès
2017-05-18 22:52 ` Marius Bakke
2017-05-19 7:00 ` Ludovic Courtès
2017-05-17 21:21 ` bug#26815: [PATCH v4 1/3] vm: Support arbitrary partition flags Ludovic Courtès
2017-05-07 15:28 ` bug#26815: [PATCH 1/3] vm: Add support for " Danny Milosavljevic
2017-05-08 14:43 ` Ludovic Courtès
2017-05-08 15:55 ` Maxim Cournoyer
2017-05-08 21:41 ` Danny Milosavljevic
2017-05-07 15:02 ` bug#26815: [PATCH 0/3] Hybrid UEFI disk image 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87efvzl7w8.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=26815@debbugs.gnu.org \
--cc=mbakke@fastmail.com \
/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 external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.