Commit d9105c28 authored by Alyssa Ross's avatar Alyssa Ross
Browse files

nixos/stage-1: create initramfs /lib at build time

Modules built in to the kernel can attempt to load firmware before
init is started.  To guarantee the firmware is accessible to them
where they expect, /lib has to exist in the initramfs — it can't be
created later by init, because by that point the module may already
have tried and given up.
parent e55c73a6
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -253,9 +253,6 @@ done
@setHostId@

# Load the required kernel modules.
mkdir -p /lib
ln -s @modulesClosure@/lib/modules /lib/modules
ln -s @modulesClosure@/lib/firmware /lib/firmware
echo @extraUtils@/bin/modprobe > /proc/sys/kernel/modprobe
for i in @kernelModules@; do
    info "loading module $(basename $i)..."
+4 −1
Original line number Diff line number Diff line
@@ -307,7 +307,7 @@ let
      ${pkgs.buildPackages.busybox}/bin/ash -n $target
    '';

    inherit linkUnits udevRules extraUtils modulesClosure;
    inherit linkUnits udevRules extraUtils;

    inherit (config.boot) resumeDevice;

@@ -349,6 +349,9 @@ let
      [ { object = bootStage1;
          symlink = "/init";
        }
        { object = "${modulesClosure}/lib";
          symlink = "/lib";
        }
        { object = pkgs.runCommand "initrd-kmod-blacklist-ubuntu" {
              src = "${pkgs.kmod-blacklist-ubuntu}/modprobe.conf";
              preferLocalBuild = true;