* 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:
parent
b78ac9e108
commit
2cc8d0363e
@ -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" ];
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -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 =
|
||||
|
@ -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
|
||||
'';
|
||||
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user