Bootloader: Difference between revisions

m update nixos iso url
Klinger (talk | contribs)
m wiki links to GNU GRUB, systemd/boot and Limine articles
 
(4 intermediate revisions by 3 users not shown)
Line 4: Line 4:


A bootloader is a type of software that manages the loading of the operating system (OS) on the computer at startup. It is responsible for preparing the system before passing control to the OS. Here are the types of bootloaders commonly used in NixOS:
A bootloader is a type of software that manages the loading of the operating system (OS) on the computer at startup. It is responsible for preparing the system before passing control to the OS. Here are the types of bootloaders commonly used in NixOS:
* '''GRUB (Grand Unified Bootloader)''': Widely used, supports multiple operating systems, and provides a boot menu to select how the system boots.
* '''[[GNU GRUB]] (Grand Unified Bootloader)''': Widely used, supports multiple operating systems, and provides a boot menu to select how the system boots.
* '''systemd-boot''': Simple UEFI-only bootloader, formerly known as gummiboot.
* '''[[Systemd/boot|systemd-boot]]''': Simple UEFI-only bootloader, formerly known as gummiboot.
* '''[[Limine]]''': Modern, advanced, multiprotocol bootloader and boot manager.
* '''EFISTUB''': Utilizes the UEFI firmware itself to boot the kernel, without the need for a traditional bootloader.
* '''EFISTUB''': Utilizes the UEFI firmware itself to boot the kernel, without the need for a traditional bootloader.


Line 30: Line 31:
=== How do I remove older generations from the bootloader? ===
=== How do I remove older generations from the bootloader? ===


First, collect garbages in your system, then rebuild. The scripts will collect leftover files.
First, remove some system generations of your system, then rebuild. The rebuild script will remove stale boot entries.


The first command, in the example below, removes everything older than 14 days.
The first command, in the example below, removes system generations older than 14 days.


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
sudo nix-collect-garbage --delete-older-than 14d  
sudo nix-env --delete-generations --profile /nix/var/nix/profiles/system 14d
</syntaxhighlight>
</syntaxhighlight>
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Line 69: Line 70:
};
};
</nowiki>}}
</nowiki>}}
=== Show a custom label or tags for my build in the bootloader menu ===
Most bootloaders like GRUB will show the NixOS version as the name of the generation (as shown with nixos-rebuild list-generations). To add a custom name for your build use [https://search.nixos.org/options?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=system.nixos.label system.nixos.label]


== Troubleshooting ==
== Troubleshooting ==
Line 160: Line 165:


Some laptops, mostly those based on Intel Atom (and first-gen 2006-2007 Intel Macs), have a very strange setup: x86_64 CPU, 2-4GB of RAM, and ia-32 bootloader. They usually come with 64-bit Windows 10, which is slow and jerky on such configurations. Installing Linux on these systems is trivial, because most of the time you can just install 32-bit versions, which come with 32-bit UEFI bootloader, and not lose practically anything as amount of RAM is small enough for 32 bits of address. This is not the case with NixOS, though, because by choosing a 32-bit version you lose the prebuilt packages from nixos cache. To install a full 64-bit system with 32-bit bootloader, you need to take the following steps:
Some laptops, mostly those based on Intel Atom (and first-gen 2006-2007 Intel Macs), have a very strange setup: x86_64 CPU, 2-4GB of RAM, and ia-32 bootloader. They usually come with 64-bit Windows 10, which is slow and jerky on such configurations. Installing Linux on these systems is trivial, because most of the time you can just install 32-bit versions, which come with 32-bit UEFI bootloader, and not lose practically anything as amount of RAM is small enough for 32 bits of address. This is not the case with NixOS, though, because by choosing a 32-bit version you lose the prebuilt packages from nixos cache. To install a full 64-bit system with 32-bit bootloader, you need to take the following steps:
# Download both latest "Minimal installation CD, 32-bit Intel/AMD" and "Minimal installation CD, 64-bit Intel/AMD" from httpshttps://nixos.org/download/#nixos-iso.
# Download both latest "Minimal installation CD, 32-bit Intel/AMD" and "Minimal installation CD, 64-bit Intel/AMD" from https://nixos.org/download/#nixos-iso.
# Flash 32-bit version on USB stick and boot it. If it does not boot, then you probably have a 64-bit bootloader and do not need to worry about this tutorial.
# Flash 32-bit version on USB stick and boot it. If it does not boot, then you probably have a 64-bit bootloader and do not need to worry about this tutorial.
# Note: if your system hangs randomly when booted, you can try adding <nowiki>intel_idle.max_cstate=1</nowiki> to kernel parameters before booting (press e when you see systemd-boot prompt to enter editing mode).
# Note: if your system hangs randomly when booted, you can try adding <nowiki>intel_idle.max_cstate=1</nowiki> to kernel parameters before booting (press e when you see systemd-boot prompt to enter editing mode).
Line 191: Line 196:
</nowiki>}}
</nowiki>}}
to the grub section of your configuration.
to the grub section of your configuration.


=== Manually adding EFI boot entry ===
=== Manually adding EFI boot entry ===