![[Guide]How to reduce boot time using systemd-boot and hide menu/reveal hidden bootloader menu](https://external-preview.redd.it/u6V77THL-0Zzhk3ITU5z1AUfVKvOuTbANMSKPTtE5zk.png?width=1080&crop=smart&auto=webp&s=0e20e0257108f411e71c6f52c340bb8f5a0e8ea0)
[Guide]How to reduce boot time using systemd-boot and hide menu/reveal hidden bootloader menu
Hello,
For those that want to speed up their boot time, specifically for the loader section as shown as output for systemd-analyze command, while using the standard provided bootloader, systemd-boot, there is the simple option to remove the timeout and changing it to zero, this will not only speed up boot time but also hide the systemd-boot menu.
The change will not affect more advanced setups that use encryption, lvm, RAID, etc., the only thing that will change is the slow down caused by the bootloader selection menu for the entry (generally the current generation) and there are 2 main ways to achieve this
1.Changing the timeout manually and applying only to the current generation
sudo -i
Password
cd /boot/loader
ls
entries entries.srel keys loader.conf random-seed
nano loader.conf
Example loader.conf
timeout 0
default nixos-generation-20.conf
console-mode keep
Generally the timeout will be 5 which means 5 seconds, change it to 0. With nano, Ctrl and x to exit, y to save changes, Enter to confirm.
The advantage of this solution is that it only applies to the current generation, if you ever forget how to reveal the bootloader entries menu, just use "sudo nixos-rebuild switch" and the new entry will be automatically created with a timeout, thus revealing the menu.
2.Changing the timeout in the NixOS configuration
sudo -i
Pass
nano /etc/nixos/configuration.nix
To the bootloader section add the following line, respect text formatting within the config
boot.loader.timeout = 0;
Ctrl and x, y, Enter
The example was using nano text editor, use the text editor of choice
Lastly
sudo nixos-rebuild switch
Allow the process to take place then reboot
The new systemd-analyze output should confirm after reboot that the loader section is much faster, example from my system
systemd-analyze
Startup finished in 4.790s (firmware) + 366ms (loader) + 1.959s (kernel) + 3.404s (userspace) = 10.520s
graphical target reached after 3.403s in userspace.
The advantage of using the NixOS config is that it automatically adds 0 to the /boot/loader/loader.conf entry timeout parameter so every time you rebuild, the timeout remains the same.
To revert back, if using the first solution, redo the steps and change 0 to 5 or as needed, for second solution remove the above line and rebuild, then boot with the new generation.
If you simply want to reveal the systemd-boot menu after it becomes hidden, after pressing the power button, press and hold Esc key, if it does not work, likely pressed too late, it has to be done before the bootloader step, during firmware initialization (while motherboard logo is on screen). Restart and try again.
In general systemd-boot as provided by default now is the fastest bootloader available on x86-64 systems, there are faster non bootloader options like EFI boot stub (guide linked bellow), however the gains are marginal, for my system EFIstub reports 179ms while systemd-boot without timeout arround 360ms (there is slight plus or minus delta per boot session), EFIstub is roughly twice as fast but for normal computers it does not matter, however it could be useful for IoT and applications where really fast boot time is important. As a distro, I completely agree with the use of systemd-boot as standard. Generally people do not care as much about boot performance, instead favor aesthetics so hiding the boot menu could also help them with either systemd-boot or the more technically involved EFIstub.