vmTools: Fix BusyBox runtime error in initrd
With the recent update of BusyBox to version 1.29.0 in
d6aa506e3b
there is now a new dependency
on libresolv.
This now throws a runtime error when executing ash, eg. whenever we do
something like this:
nix-build -E 'with import ./. {}; vmTools.runInLinuxVM hello'
The resulting error will be:
.../ash: error while loading shared libraries: libresolv.so.2: cannot
open shared object file: No such file or directory
I tried to override BusyBox with enableStatic, but that still requires
parts of glibc:
Static linking against glibc, can't use --gc-sections
Trying libraries: crypt m resolv
Library crypt is not needed, excluding it
Library m is needed, can't exclude it (yet)
Library resolv is needed, can't exclude it (yet)
Library m is needed, can't exclude it (yet)
Library resolv is needed, can't exclude it (yet)
Final link with: m resolv
In the long term maybe switching to a more minimal C library such as
musl would make more sense, but for now I just added libresolv.so to the
initrd which fixes the runtime error.
Signed-off-by: aszlig <aszlig@nix.build>
Cc: @edolstra, @rbvermaa
Signed-off-by: aszlig <aszlig@nix.build>
This commit is contained in:
parent
e8e96e4b72
commit
caccc40ad0
@ -22,7 +22,6 @@ rec {
|
||||
|
||||
hd = "vda"; # either "sda" or "vda"
|
||||
|
||||
|
||||
initrdUtils = runCommand "initrd-utils"
|
||||
{ buildInputs = [ nukeReferences ];
|
||||
allowedReferences = [ "out" modulesClosure ]; # prevent accidents like glibc being included in the initrd
|
||||
@ -35,6 +34,7 @@ rec {
|
||||
cp -p ${pkgs.stdenv.glibc.out}/lib/ld-linux*.so.? $out/lib
|
||||
cp -p ${pkgs.stdenv.glibc.out}/lib/libc.so.* $out/lib
|
||||
cp -p ${pkgs.stdenv.glibc.out}/lib/libm.so.* $out/lib
|
||||
cp -p ${pkgs.stdenv.glibc.out}/lib/libresolv.so.* $out/lib
|
||||
|
||||
# Copy BusyBox.
|
||||
cp -pd ${pkgs.busybox}/bin/* $out/bin
|
||||
|
Loading…
Reference in New Issue
Block a user