doc: Document new bootloader grub-efi-netboot-bootloader.
* doc/guix.texi (Bootloader Configuration)[bootloader]: Add grub-efi-netboot-bootloader. [target]: Document TFTP root directory for grub-efi-netboot-bootloader. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
This commit is contained in:
parent
c85f316ae9
commit
740fd97ebe
1 changed files with 58 additions and 8 deletions
|
@ -28682,7 +28682,15 @@ The type of a bootloader configuration declaration.
|
||||||
@cindex BIOS, bootloader
|
@cindex BIOS, bootloader
|
||||||
The bootloader to use, as a @code{bootloader} object. For now
|
The bootloader to use, as a @code{bootloader} object. For now
|
||||||
@code{grub-bootloader}, @code{grub-efi-bootloader},
|
@code{grub-bootloader}, @code{grub-efi-bootloader},
|
||||||
@code{extlinux-bootloader} and @code{u-boot-bootloader} are supported.
|
@code{grub-efi-netboot-bootloader}, @code{extlinux-bootloader} and
|
||||||
|
@code{u-boot-bootloader} are supported.
|
||||||
|
|
||||||
|
@cindex ARM, bootloaders
|
||||||
|
@cindex AArch64, bootloaders
|
||||||
|
Available bootloaders are described in @code{(gnu bootloader @dots{})}
|
||||||
|
modules. In particular, @code{(gnu bootloader u-boot)} contains definitions
|
||||||
|
of bootloaders for a wide range of ARM and AArch64 systems, using the
|
||||||
|
@uref{https://www.denx.de/wiki/U-Boot/, U-Boot bootloader}.
|
||||||
|
|
||||||
@vindex grub-efi-bootloader
|
@vindex grub-efi-bootloader
|
||||||
@code{grub-efi-bootloader} allows to boot on modern systems using the
|
@code{grub-efi-bootloader} allows to boot on modern systems using the
|
||||||
|
@ -28694,12 +28702,52 @@ when you boot it on your system.
|
||||||
@code{grub-bootloader} allows you to boot in particular Intel-based machines
|
@code{grub-bootloader} allows you to boot in particular Intel-based machines
|
||||||
in ``legacy'' BIOS mode.
|
in ``legacy'' BIOS mode.
|
||||||
|
|
||||||
@cindex ARM, bootloaders
|
@vindex grub-efi-netboot-bootloader
|
||||||
@cindex AArch64, bootloaders
|
@code{grub-efi-netboot-bootloader} allows you to boot your system over network
|
||||||
Available bootloaders are described in @code{(gnu bootloader @dots{})}
|
through TFTP. In combination with an NFS root file system this allows you to
|
||||||
modules. In particular, @code{(gnu bootloader u-boot)} contains definitions
|
build a diskless Guix system.
|
||||||
of bootloaders for a wide range of ARM and AArch64 systems, using the
|
|
||||||
@uref{https://www.denx.de/wiki/U-Boot/, U-Boot bootloader}.
|
The installation of the @code{grub-efi-netboot-bootloader} generates the content
|
||||||
|
of the TFTP root directory at @code{target}
|
||||||
|
(@pxref{Bootloader Configuration, @code{target}}), to be served by a TFTP server.
|
||||||
|
You may want to mount your TFTP server directory onto @code{target} to move the
|
||||||
|
required files to the TFTP server automatically.
|
||||||
|
|
||||||
|
If you plan to use an NFS root file system as well (actually if you mount the
|
||||||
|
store from an NFS share), then the TFTP server needs to serve the file
|
||||||
|
@file{/boot/grub/grub.cfg} and other files from the store (like GRUBs background
|
||||||
|
image, the kernel (@pxref{operating-system Reference, @code{kernel}}) and the
|
||||||
|
initrd (@pxref{operating-system Reference, @code{initrd}})), too. All these
|
||||||
|
files from the store will be accessed by GRUB through TFTP with their normal
|
||||||
|
store path, for example as
|
||||||
|
@file{tftp://tftp-server/gnu/store/…-initrd/initrd.cpio.gz}.
|
||||||
|
|
||||||
|
Two symlinks are created to make this possible. The first symlink is
|
||||||
|
@code{target}@file{/efi/Guix/boot/grub/grub.cfg} pointing to
|
||||||
|
@file{../../../boot/grub/grub.cfg},
|
||||||
|
where @code{target} may be @file{/boot}. In this case the link is not leaving
|
||||||
|
the served TFTP root directory, but otherwise it does. The second link is
|
||||||
|
@code{target}@file{/gnu/store} and points to @file{../gnu/store}. This link
|
||||||
|
is leaving the served TFTP root directory.
|
||||||
|
|
||||||
|
The assumption behind all this is that you have an NFS server exporting the root
|
||||||
|
file system for your Guix system, and additionally a TFTP server exporting your
|
||||||
|
@code{target} directory—usually @file{/boot}—from that same root file system for
|
||||||
|
your Guix system. In this constellation the symlinks will work.
|
||||||
|
|
||||||
|
For other constellations you will have to program your own bootloader installer,
|
||||||
|
which then takes care to make necessary files from the store accessible through
|
||||||
|
TFTP, for example by copying them into the TFTP root directory at @code{target}.
|
||||||
|
|
||||||
|
It is important to note that symlinks pointing outside the TFTP root directory
|
||||||
|
may need to be allowed in the configuration of your TFTP server. Further the
|
||||||
|
store link exposes the whole store through TFTP. Both points need to be
|
||||||
|
considered carefully for security aspects.
|
||||||
|
|
||||||
|
Beside the @code{grub-efi-netboot-bootloader}, the already mentioned TFTP and
|
||||||
|
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}.
|
||||||
|
|
||||||
@item @code{target}
|
@item @code{target}
|
||||||
This is a string denoting the target onto which to install the
|
This is a string denoting the target onto which to install the
|
||||||
|
@ -28710,7 +28758,9 @@ The interpretation depends on the bootloader in question. For
|
||||||
the bootloader @command{installer} command, such as @code{/dev/sda} or
|
the bootloader @command{installer} command, such as @code{/dev/sda} or
|
||||||
@code{(hd0)} (@pxref{Invoking grub-install,,, grub, GNU GRUB Manual}). For
|
@code{(hd0)} (@pxref{Invoking grub-install,,, grub, GNU GRUB Manual}). For
|
||||||
@code{grub-efi-bootloader}, it should be the mount point of the EFI file
|
@code{grub-efi-bootloader}, it should be the mount point of the EFI file
|
||||||
system, usually @file{/boot/efi}.
|
system, usually @file{/boot/efi}. For @code{grub-efi-netboot-bootloader},
|
||||||
|
@code{target} should be the mount point corresponding to the TFTP root
|
||||||
|
directory of your TFTP server.
|
||||||
|
|
||||||
@item @code{menu-entries} (default: @code{()})
|
@item @code{menu-entries} (default: @code{()})
|
||||||
A possibly empty list of @code{menu-entry} objects (see below), denoting
|
A possibly empty list of @code{menu-entry} objects (see below), denoting
|
||||||
|
|
Reference in a new issue