Merge pull request #208803 from Ma27/revert-kmod-stage-1-hack

Revert "nixos/stage-1: fix `modprobe` in initial ramdisk on systems w/glibc-2.34"

Changed files
+1 -22
nixos
modules
+1 -2
nixos/modules/system/boot/stage-1-init.sh
···
mkdir -p /lib
ln -s @modulesClosure@/lib/modules /lib/modules
ln -s @modulesClosure@/lib/firmware /lib/firmware
-
# see comment in stage-1.nix for explanation
-
echo @extraUtils@/bin/modprobe-kernel > /proc/sys/kernel/modprobe
+
echo @extraUtils@/bin/modprobe > /proc/sys/kernel/modprobe
for i in @kernelModules@; do
info "loading module $(basename $i)..."
modprobe $i
-20
nixos/modules/system/boot/stage-1.nix
···
copy_bin_and_libs ${pkgs.kmod}/bin/kmod
ln -sf kmod $out/bin/modprobe
-
# Dirty hack to make sure the kernel properly loads modules
-
# such as ext4 on demand (e.g. on a `mount(2)` syscall). This is necessary
-
# because `kmod` isn't linked against `libpthread.so.0` anymore (since
-
# it was merged into `libc.so.6` since version `2.34`), but still needs
-
# to access it for some reason. This is not an issue in stage-1 itself
-
# because of the `LD_LIBRARY_PATH`-variable and anytime later because the rpath of
-
# kmod/modprobe points to glibc's `$out/lib` where `libpthread.so.6` exists.
-
# However, this is a problem when the kernel calls `modprobe` inside
-
# the initial ramdisk because it doesn't know about the
-
# `LD_LIBRARY_PATH` and the rpath was nuked.
-
#
-
# Also, we can't use `makeWrapper` here because `kmod` only does
-
# `modprobe` functionality if `argv[0] == "modprobe"`.
-
cat >$out/bin/modprobe-kernel <<EOF
-
#!$out/bin/ash
-
export LD_LIBRARY_PATH=$out/lib
-
exec $out/bin/modprobe "\$@"
-
EOF
-
chmod +x $out/bin/modprobe-kernel
-
# Copy resize2fs if any ext* filesystems are to be resized
${optionalString (any (fs: fs.autoResize && (lib.hasPrefix "ext" fs.fsType)) fileSystems) ''
# We need mke2fs in the initrd.