diff options
Diffstat (limited to 'gnu/bootloader')
-rw-r--r-- | gnu/bootloader/grub.scm | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm index 65d7171432..4f18c9b518 100644 --- a/gnu/bootloader/grub.scm +++ b/gnu/bootloader/grub.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020 Stefan <stefan-guix@vodafonemail.de> ;;; Copyright © 2022 Karl Hallsby <karl@hallsby.com> +;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -57,6 +58,7 @@ grub-bootloader grub-efi-bootloader grub-efi-removable-bootloader + grub-efi32-bootloader grub-efi-netboot-bootloader grub-mkrescue-bootloader grub-minimal-bootloader @@ -636,6 +638,29 @@ fi~%")))) "--bootloader-id=Guix" "--efi-directory" target-esp))))) +(define install-grub-efi32 + #~(lambda (bootloader efi-dir mount-point) + ;; There is nothing useful to do when called in the context of a disk + ;; image generation. + (when efi-dir + ;; Install GRUB onto the EFI partition mounted at EFI-DIR, for the + ;; system whose root is mounted at MOUNT-POINT. + (let ((grub-install (string-append bootloader "/sbin/grub-install")) + (install-dir (string-append mount-point "/boot")) + ;; When installing Guix, it's common to mount EFI-DIR below + ;; MOUNT-POINT rather than /boot/efi on the live image. + (target-esp (if (file-exists? (string-append mount-point efi-dir)) + (string-append mount-point efi-dir) + efi-dir))) + ;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or + ;; root partition. + (setenv "GRUB_ENABLE_CRYPTODISK" "y") + (invoke/quiet grub-install "--boot-directory" install-dir + "--bootloader-id=Guix" + (cond ((target-x86?) "--target=i386-efi") + ((target-arm?) "--target=arm-efi")) + "--efi-directory" target-esp))))) + (define (install-grub-efi-netboot subdir) "Define a grub-efi-netboot bootloader installer for installation in SUBDIR, which is usually efi/Guix or efi/boot." @@ -768,6 +793,13 @@ considered for security aspects." (name 'grub-efi-removable-bootloader) (installer install-grub-efi-removable))) +(define grub-efi32-bootloader + (bootloader + (inherit grub-efi-bootloader) + (installer install-grub-efi32) + (name 'grub-efi32) + (package grub-efi32))) + (define grub-efi-netboot-bootloader (bootloader (inherit grub-efi-bootloader) |