GNU GRUB
GNU GRUB , also known as the Grand Unified Bootlader, is a multiboot bootloader created and maintained by GNU. It is a versatile alternative to systemd-boot that supports both UEFI and Legacy BIOS.
Usage
To install and enable GRUB on UEFI systems, add this to your system configuration:
boot.loader = {
grub = {
enable = true;
device = "nodev"; # "nodev" is used for UEFI
efiSupport = true;
};
efi.canTouchEfiVariables = true;
};
Alternatively, to install and enable GRUB on Legacy BIOS systems, add this to your system configuration:
<nowiki>
boot.loader.grub = {
enable = true;
device = "/dev/sda"; #replace with the drive intended for boot
};
For additional GRUB module configuration options, refer to boot.loader.grub.
FAQ
→ See Bootloader#FAQ as those questions also applies to GRUB.
this GPT partition label contains no BIOS Boot Partition
This error is caused by using grub for legacy boot with a disk formatted as GPT[1].
This can be fixed either by:
- Using a MBR partition scheme
- Adding a BIOS boot partition among your GPT partitions. See https://github.com/nix-community/disko/blob/master/example/gpt-bios-compat.nix# for an example setup using disko.
How do I use GRUB in text mode?
Sometimes you need to access GRUB in text mode (e.g. when using out of band management systems like HP ILO in "textcons" mode).
To use GRUB in text mode there are two settings that need to be configured depending on whether you use EFI or BIOS boot:
boot.loader.grub.gfxmodeEfi= "text";
boot.loader.grub.gfxmodeBios= "text";
Only disabling the GRUB splash screen via boot.loader.grub.splashImage = null; results in a similar output but that is not the real text only mode.