Commit 6e1ff90a authored by Ben Wolsieffer's avatar Ben Wolsieffer Committed by github-actions[bot]
Browse files

linux/common-config: enable EFI on supported platforms

Currently, is it possible for stdenv.hostPlatform.isEfi to be true but
the kernel to have no EFI support. This mainly occurs on armv6l and
causes systemd in initrd to fail to build because it attempts to include
the non-existent efivarfs module in the initrd.

To fix this, automatically enable CONFIG_EFI on platforms where isEfi is
true. An alternative would be to make isEfi false on armv6l, but EFI is
in fact usable on that platform.

To prove this, I successfully booted NixOS on a Raspberry Pi Zero using
systemd-boot and U-Boot's EFI support. I confirmed that efivarfs works
as well.

(cherry picked from commit 3aff7b47)
parent 64ac770c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1165,6 +1165,7 @@ let

        DVB_DYNAMIC_MINORS = option yes; # we use udev

        EFI = lib.mkIf stdenv.hostPlatform.isEfi yes;
        EFI_STUB = yes; # EFI bootloader in the bzImage itself
        EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER = whenOlder "6.2" (whenAtLeast "5.8" yes); # initrd kernel parameter for EFI