summaryrefslogtreecommitdiff
path: root/gnu/bootloader
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/bootloader')
-rw-r--r--gnu/bootloader/grub.scm34
1 files changed, 34 insertions, 0 deletions
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index 120cd55012b..65d7171432c 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -7,6 +7,7 @@
7;;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com> 7;;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
8;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> 8;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
9;;; Copyright © 2020 Stefan <stefan-guix@vodafonemail.de> 9;;; Copyright © 2020 Stefan <stefan-guix@vodafonemail.de>
10;;; Copyright © 2022 Karl Hallsby <karl@hallsby.com>
10;;; 11;;;
11;;; This file is part of GNU Guix. 12;;; This file is part of GNU Guix.
12;;; 13;;;
@@ -50,10 +51,12 @@
50 grub-theme-color-highlight 51 grub-theme-color-highlight
51 grub-theme-gfxmode 52 grub-theme-gfxmode
52 53
54 install-grub-efi-removable
53 install-grub-efi-netboot 55 install-grub-efi-netboot
54 56
55 grub-bootloader 57 grub-bootloader
56 grub-efi-bootloader 58 grub-efi-bootloader
59 grub-efi-removable-bootloader
57 grub-efi-netboot-bootloader 60 grub-efi-netboot-bootloader
58 grub-mkrescue-bootloader 61 grub-mkrescue-bootloader
59 grub-minimal-bootloader 62 grub-minimal-bootloader
@@ -608,6 +611,31 @@ fi~%"))))
608 "--bootloader-id=Guix" 611 "--bootloader-id=Guix"
609 "--efi-directory" target-esp))))) 612 "--efi-directory" target-esp)))))
610 613
614(define install-grub-efi-removable
615 #~(lambda (bootloader efi-dir mount-point)
616 ;; NOTE: mount-point is /mnt in guix system init /etc/config.scm /mnt/point
617 ;; NOTE: efi-dir comes from target list of booloader configuration
618 ;; There is nothing useful to do when called in the context of a disk
619 ;; image generation.
620 (when efi-dir
621 ;; Install GRUB onto the EFI partition mounted at EFI-DIR, for the
622 ;; system whose root is mounted at MOUNT-POINT.
623 (let ((grub-install (string-append bootloader "/sbin/grub-install"))
624 (install-dir (string-append mount-point "/boot"))
625 ;; When installing Guix, it's common to mount EFI-DIR below
626 ;; MOUNT-POINT rather than /boot/efi on the live image.
627 (target-esp (if (file-exists? (string-append mount-point efi-dir))
628 (string-append mount-point efi-dir)
629 efi-dir)))
630 ;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or
631 ;; root partition.
632 (setenv "GRUB_ENABLE_CRYPTODISK" "y")
633 (invoke/quiet grub-install "--boot-directory" install-dir
634 "--removable"
635 ;; "--no-nvram"
636 "--bootloader-id=Guix"
637 "--efi-directory" target-esp)))))
638
611(define (install-grub-efi-netboot subdir) 639(define (install-grub-efi-netboot subdir)
612 "Define a grub-efi-netboot bootloader installer for installation in SUBDIR, 640 "Define a grub-efi-netboot bootloader installer for installation in SUBDIR,
613which is usually efi/Guix or efi/boot." 641which is usually efi/Guix or efi/boot."
@@ -734,6 +762,12 @@ considered for security aspects."
734 (name 'grub-efi) 762 (name 'grub-efi)
735 (package grub-efi))) 763 (package grub-efi)))
736 764
765(define grub-efi-removable-bootloader
766 (bootloader
767 (inherit grub-efi-bootloader)
768 (name 'grub-efi-removable-bootloader)
769 (installer install-grub-efi-removable)))
770
737(define grub-efi-netboot-bootloader 771(define grub-efi-netboot-bootloader
738 (bootloader 772 (bootloader
739 (inherit grub-efi-bootloader) 773 (inherit grub-efi-bootloader)