NixOS on ARM/UEFI: Difference between revisions

imported>Samueldr
mNo edit summary
imported>Samueldr
m Tested systemd-boot, documents grub
Line 60: Line 60:


Know if your ''Initial Boot Firmware'''s UEFI implementation has writable EFI vars. This is not true for all UEFI implementations on ARM, but is something to be mindful about. If it does not, {{Nixos:option|boot.loader.efi.canTouchEfiVariables}} has to be set to '''<code>false</code>'''.
Know if your ''Initial Boot Firmware'''s UEFI implementation has writable EFI vars. This is not true for all UEFI implementations on ARM, but is something to be mindful about. If it does not, {{Nixos:option|boot.loader.efi.canTouchEfiVariables}} has to be set to '''<code>false</code>'''.
<syntaxhighlight lang="nix">
{ /* configuration.nix */
  boot.loader.efi.canTouchEfiVariables = false;
}
</syntaxhighlight>


{{tip|Just like on <tt>x86_64</tt> [[REFInd|rEFInd]] installed to the fallback location (<code>/EFI/BOOT/BOOTAA64.EFI</code>) may be helpful.}}
{{tip|Just like on <tt>x86_64</tt> [[REFInd|rEFInd]] installed to the fallback location (<code>/EFI/BOOT/BOOTAA64.EFI</code>) may be helpful.}}


{{note|TBD: does systemd-boot work? I only have tested grub for the time being...}}
For the time being, only GRUB2 has been verified to work. When using the systemd-boot bootloader on a test system, the kernel panics. Since EFI variables cannot be manipulated, using <code>efiInstallAsRemovable</code> handles installing GRUB2 to the default fallback location.
 
<syntaxhighlight lang="nix">
{ /* configuration.nix */
  boot.loader.grub.enable = true;
  boot.loader.grub.efiSupport = true;
  boot.loader.grub.efiInstallAsRemovable = true;
  boot.loader.grub.device = "nodev";
}
</syntaxhighlight>