diff --git a/test/boot-stage-1.nix b/test/boot-stage-1.nix index 1099fe08a21..329ca513a95 100644 --- a/test/boot-stage-1.nix +++ b/test/boot-stage-1.nix @@ -5,7 +5,7 @@ # is supposed to be put into an initial RAM disk (initrd). { genericSubstituter, shell, staticTools -, module_init_tools, utillinux, modules +, module_init_tools, extraUtils, modules }: genericSubstituter { @@ -15,7 +15,7 @@ genericSubstituter { path = [ staticTools module_init_tools -# utillinux + extraUtils ]; makeDevices = ./make-devices.sh; } diff --git a/test/rescue-system.nix b/test/rescue-system.nix index b42030b659c..5e1e47a112f 100644 --- a/test/rescue-system.nix +++ b/test/rescue-system.nix @@ -6,6 +6,10 @@ rec { bootStdenv = pkgs.useDietLibC pkgs.stdenv; }; + pkgsStatic = import ./pkgs/top-level/all-packages.nix { + bootStdenv = pkgs.makeStaticBinaries pkgs.stdenv; + }; + stdenvLinuxStuff = import ./pkgs/stdenv/linux { system = pkgs.stdenv.system; allPackages = import ./pkgs/top-level/all-packages.nix; @@ -19,11 +23,24 @@ rec { }; + # Some additional utilities needed in stage 1, notably mount. We + # don't want to bring in all of util-linux, so we just copy what we + # need. + extraUtils = pkgs.stdenv.mkDerivation { + name = "extra-utils"; + builder = builtins.toFile "builder.sh" + "source $stdenv/setup; ensureDir $out/bin; cp $utillinux/bin/mount $out/bin; nuke-refs $out/bin/mount"; + buildInputs = [pkgs.nukeReferences]; + inherit (pkgsStatic) utillinux; + }; + + # The init script of boot stage 1 (loading kernel modules for # mounting the root FS). bootStage1 = import ./boot-stage-1.nix { - inherit (pkgs) genericSubstituter utillinux; + inherit (pkgs) genericSubstituter; inherit (pkgsDiet) module_init_tools; + inherit extraUtils; modules = modulesClosure; shell = stdenvLinuxStuff.bootstrapTools.bash; staticTools = stdenvLinuxStuff.staticTools;