diff options
author | Will Fancher <elvishjerricco@gmail.com> | 2023-05-30 18:42:50 -0400 |
---|---|---|
committer | Will Fancher <elvishjerricco@gmail.com> | 2023-05-30 19:21:16 -0400 |
commit | 6727bab05eb516fa3c6ec53c39c4b7499ee55539 (patch) | |
tree | 0a025781351d9f43fe3296d3a72a1bbd8890939c /nixos/tests/systemd-boot.nix | |
parent | 58c85835512b0db938600b6fe13cc3e3dc4b364e (diff) |
systemd-boot: Patch for firmwares that fail to load large files
Diffstat (limited to 'nixos/tests/systemd-boot.nix')
-rw-r--r-- | nixos/tests/systemd-boot.nix | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/nixos/tests/systemd-boot.nix b/nixos/tests/systemd-boot.nix index 94e269ff37bb8..19034b299999b 100644 --- a/nixos/tests/systemd-boot.nix +++ b/nixos/tests/systemd-boot.nix @@ -251,4 +251,29 @@ in machine.succeed("test -e /boot/efi/nixos/.extra-files/efi/netbootxyz/netboot.xyz.efi") ''; }; + + # See: [Firmware file size bug] in systemd/default.nix + uefiLargeFileWorkaround = makeTest { + name = "uefi-large-file-workaround"; + + nodes.machine = { pkgs, ... }: { + imports = [common]; + virtualisation.efi.OVMF = pkgs.OVMF.overrideAttrs (old: { + # This patch deliberately breaks the FAT driver in EDK2 to + # exhibit (part of) the firmware bug that we are testing + # for. Files greater than 10MiB will fail to be read in a + # single Read() call, so systemd-boot will fail to load the + # initrd without a workaround. The number 10MiB was chosen + # because if it were smaller than the kernel size, even the + # LoadImage call would fail, which is not the failure mode + # we're testing for. It needs to be between the kernel size + # and the initrd size. + patches = old.patches or [] ++ [ ./systemd-boot-ovmf-broken-fat-driver.patch ]; + }); + }; + + testScript = '' + machine.wait_for_unit("multi-user.target") + ''; + }; } |