Manual: Kernel configuration
This commit is contained in:
parent
735ad3f466
commit
a3eaf81986
@ -74,7 +74,7 @@ different channels that you might have.)</para>
|
|||||||
<command>nixos-rebuild switch</command>.</para>
|
<command>nixos-rebuild switch</command>.</para>
|
||||||
|
|
||||||
|
|
||||||
<section><title>Customising packages</title>
|
<section xml:id="sec-customising-packages"><title>Customising packages</title>
|
||||||
|
|
||||||
<para>Some packages in Nixpkgs have options to enable or disable
|
<para>Some packages in Nixpkgs have options to enable or disable
|
||||||
optional functionality or change other aspects of the package. For
|
optional functionality or change other aspects of the package. For
|
||||||
@ -738,6 +738,72 @@ networking.localCommands =
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<!--===============================================================-->
|
||||||
|
|
||||||
|
<section><title>Linux kernel</title>
|
||||||
|
|
||||||
|
<para>You can override the Linux kernel and associated packages using
|
||||||
|
the option <option>boot.kernelPackages</option>. For instance, this
|
||||||
|
selects the Linux 3.10 kernel:
|
||||||
|
<programlisting>
|
||||||
|
boot.kernelPackages = pkgs.kernelPackages_3_10;
|
||||||
|
</programlisting>
|
||||||
|
Note that this not only replaces the kernel, but also packages that
|
||||||
|
are specific to the kernel version, such as the NVIDIA video drivers.
|
||||||
|
This ensures that driver packages are consistent with the
|
||||||
|
kernel.</para>
|
||||||
|
|
||||||
|
<para>The default Linux kernel configuration should be fine for most
|
||||||
|
users. You can see the configuration of your current kernel in
|
||||||
|
<filename>/run/booted-system/kernel-modules/config</filename>. If you
|
||||||
|
want to change the kernel configuration, you can use the
|
||||||
|
<option>packageOverrides</option> feature (see <xref
|
||||||
|
linkend="sec-customising-packages" />). For instance, to enable
|
||||||
|
support for the kernel debugger KGDB:
|
||||||
|
|
||||||
|
<programlisting>
|
||||||
|
nixpkgs.config.packageOverrides = pkgs:
|
||||||
|
{ linux_3_4 = pkgs.linux_3_4.override {
|
||||||
|
extraConfig =
|
||||||
|
''
|
||||||
|
KGDB y
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
</programlisting>
|
||||||
|
|
||||||
|
<varname>extraConfig</varname> takes a list of Linux kernel
|
||||||
|
configuration options, one per line. The name of the option should
|
||||||
|
not include the prefix <literal>CONFIG_</literal>. The option value
|
||||||
|
is typically <literal>y</literal>, <literal>n</literal> or
|
||||||
|
<literal>m</literal> (to build something as a kernel module).</para>
|
||||||
|
|
||||||
|
<para>Kernel modules for hardware devices are generally loaded
|
||||||
|
automatically by <command>udev</command>. You can force a module to
|
||||||
|
be loaded via <option>boot.kernelModules</option>, e.g.
|
||||||
|
<programlisting>
|
||||||
|
boot.kernelModules = [ "fuse" "kvm-intel" "coretemp" ];
|
||||||
|
</programlisting>
|
||||||
|
If the module is required early during the boot (e.g. to mount the
|
||||||
|
root file system), you can use
|
||||||
|
<option>boot.initrd.extraKernelModules</option>:
|
||||||
|
<programlisting>
|
||||||
|
boot.initrd.extraKernelModules = [ "cifs" ];
|
||||||
|
</programlisting>
|
||||||
|
This causes the specified modules and their dependencies to be added
|
||||||
|
to the initial ramdark.</para>
|
||||||
|
|
||||||
|
<para>Kernel runtime parameters can be set through
|
||||||
|
<option>boot.kernel.sysctl</option>, e.g.
|
||||||
|
<programlisting>
|
||||||
|
boot.kernel.sysctl."net.ipv4.tcp_keepalive_time" = 120;
|
||||||
|
</programlisting>
|
||||||
|
sets the kernel’s TCP keepalive time to 120 seconds. To see the
|
||||||
|
available parameters, run <command>sysctl -a</command>.</para>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<!-- Apache; libvirtd virtualisation -->
|
<!-- Apache; libvirtd virtualisation -->
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user