From 1aa35c8267d1a6319bef51ce969f8863b7928558 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 3 Nov 2006 13:35:02 +0000 Subject: [PATCH] * Instead of adding all of util-linux to the initd, add just mount (and nuke its references so that we don't get glibc etc.). The initrd is now 3.2 MB (and that includes the entire staticTools from the stdenv bootstrap, most of which we don't actually need). svn path=/nixu/trunk/; revision=6942 --- test/boot-stage-1.nix | 4 ++-- test/rescue-system.nix | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) 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;