* Move the implementation of boot.kernelModules to udev's postStart.

It needs udevd to be running because the modules may require
  firmware.  Thanks to Mathijs and Arie for pointing this out.

svn path=/nixos/trunk/; revision=33234
This commit is contained in:
Eelco Dolstra 2012-03-18 14:03:42 +00:00
parent b78ac9e108
commit 2cc8d0363e
3 changed files with 12 additions and 16 deletions

View File

@ -23,17 +23,7 @@ with pkgs.lib;
config = mkIf config.hardware.cpu.intel.updateMicrocode {
hardware.firmware = [ pkgs.microcodeIntel ];
# This cannot be done using boot.kernelModules
# discussion at http://lists.science.uu.nl/pipermail/nix-dev/2012-February/007959.html
jobs.microcode = {
name = "microcode";
description = "load microcode";
startOn = "started udev";
exec = "modprobe microcode";
path = [config.system.sbin.modprobe];
task = true;
};
boot.kernelModules = [ "microcode" ];
};
}

View File

@ -236,6 +236,17 @@ in
daemonType = "fork";
exec = "udevd --daemon";
postStart =
''
# Do the loading of additional stage 2 kernel modules.
# This needs to be done while udevd is running, because
# the modules may call upon udev's firmware loading rule.
for i in ${toString config.boot.kernelModules}; do
echo "loading kernel module $i..."
${config.system.sbin.modprobe}/sbin/modprobe $i || true
done
'';
};
jobs.udevtrigger =

View File

@ -100,11 +100,6 @@ with pkgs.lib;
# We need this when the kernel (or some module) auto-loads a
# module.
echo ${config.system.sbin.modprobe}/sbin/modprobe > /proc/sys/kernel/modprobe
# Do the loading of additional stage 2 kernel modules.
for i in ${toString config.boot.kernelModules}; do
${config.system.sbin.modprobe}/sbin/modprobe $i || true
done
'';
};