summary refs log tree commit diff
path: root/doc
diff options
context:
space:
mode:
authorKarl Hallsby <karl@hallsby.com>2022-05-24 23:32:54 -0500
committerLudovic Courtès <ludo@gnu.org>2022-06-06 22:43:30 +0200
commit618f665a5ffc6330bc99c4ac2b1077c1e1a7506c (patch)
tree7296eb0052701f42ecb750b50bdcc39b4cbf616f /doc
parente614cf2907105d1d41653c2316b96d29d807baa8 (diff)
downloadguix-618f665a5ffc6330bc99c4ac2b1077c1e1a7506c.tar.gz
bootloader: grub: Add removable grub-efi bootloader option.
For single-disk installs (external USBs) and for amnesiac UEFIs, Guix is not
found using its default Grub EFI bootloader location of
/boot/efi/EFI/Guix/grubx64.efi means the Guix install will not be found.

To handle this, we can place the bootloader file in the UEFI specification
location, overwriting any other OS that may have placed a file there. This
location is namely /boot/efi/EFI/BOOT/BOOTX64.efi. Grub has explicit support
for this location/situation with the `--removable` flag.

* gnu/bootloader/grub.scm (install-grub-efi-removable)
(grub-efi-removable-bootloader): New variables.
* doc/guix.texi (Bootloader Configuration): Document it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'doc')
-rw-r--r--doc/guix.texi22
1 files changed, 19 insertions, 3 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index d069b7f0e6..7bedb8660e 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -103,6 +103,7 @@ Copyright @copyright{} 2021 Josselin Poiret@*
 Copyright @copyright{} 2022 Remco van 't Veer@*
 Copyright @copyright{} 2022 Aleksandr Vityazev@*
 Copyright @copyright{} 2022 Philip M@sup{c}Grath@*
+Copyright @copyright{} 2022 Karl Hallsby@*
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -36270,8 +36271,8 @@ The type of a bootloader configuration declaration.
 @cindex BIOS, bootloader
 The bootloader to use, as a @code{bootloader} object.  For now
 @code{grub-bootloader}, @code{grub-efi-bootloader},
-@code{grub-efi-netboot-bootloader}, @code{extlinux-bootloader} and
-@code{u-boot-bootloader} are supported.
+@code{grub-efi-netboot-bootloader}, @code{grub-efi-removable-bootloader},
+@code{extlinux-bootloader} and @code{u-boot-bootloader} are supported.
 
 @cindex ARM, bootloaders
 @cindex AArch64, bootloaders
@@ -36340,6 +36341,20 @@ NFS servers, you also need a properly configured DHCP server to make the booting
 over netboot possible.  For all this we can currently only recommend you to look
 for instructions about @acronym{PXE, Preboot eXecution Environment}.
 
+@vindex grub-efi-removable-bootloader
+@code{grub-efi-removable-bootloader} allows you to boot your system from
+removable media by writing the GRUB file to the UEFI-specification location of
+@file{/EFI/BOOT/BOOTX64.efi} of the boot directory, usually @file{/boot/efi}.
+This is also useful for some UEFI firmwares that ``forget'' their configuration
+from their non-volatile storage. Like @code{grub-efi-bootloader}, this can only
+be used if the @file{/sys/firmware/efi} directory is available.
+
+@quotation Note
+This @emph{will} overwrite the GRUB file from any other operating systems that
+also place their GRUB file in the UEFI-specification location; making them
+unbootable.
+@end quotation
+
 @item @code{targets}
 This is a list of strings denoting the targets onto which to install the
 bootloader.
@@ -36348,7 +36363,8 @@ The interpretation of targets depends on the bootloader in question.
 For @code{grub-bootloader}, for example, they should be device names
 understood by the bootloader @command{installer} command, such as
 @code{/dev/sda} or @code{(hd0)} (@pxref{Invoking grub-install,,, grub,
-GNU GRUB Manual}).  For @code{grub-efi-bootloader}, they should be mount
+GNU GRUB Manual}).  For @code{grub-efi-bootloader} and
+@code{grub-efi-removable-bootloader} they should be mount
 points of the EFI file system, usually @file{/boot/efi}.  For
 @code{grub-efi-netboot-bootloader}, @code{targets} should be the mount
 points corresponding to TFTP root directories served by your TFTP