mirror of https://github.com/torvalds/linux.git
136 lines
5.1 KiB
ReStructuredText
136 lines
5.1 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0
|
|
|
|
.. _kernelparameters:
|
|
|
|
The kernel's command-line parameters
|
|
====================================
|
|
|
|
The following is a consolidated list of the kernel parameters as implemented
|
|
by the __setup(), early_param(), core_param() and module_param() macros
|
|
and sorted into English Dictionary order (defined as ignoring all
|
|
punctuation and sorting digits before letters in a case insensitive
|
|
manner), and with descriptions where known.
|
|
|
|
The kernel parses parameters from the kernel command line up to "``--``";
|
|
if it doesn't recognize a parameter and it doesn't contain a '.', the
|
|
parameter gets passed to init: parameters with '=' go into init's
|
|
environment, others are passed as command line arguments to init.
|
|
Everything after "``--``" is passed as an argument to init.
|
|
|
|
Module parameters can be specified in two ways: via the kernel command
|
|
line with a module name prefix, or via modprobe, e.g.::
|
|
|
|
(kernel command line) usbcore.blinkenlights=1
|
|
(modprobe command line) modprobe usbcore blinkenlights=1
|
|
|
|
Parameters for modules which are built into the kernel need to be
|
|
specified on the kernel command line. modprobe looks through the
|
|
kernel command line (/proc/cmdline) and collects module parameters
|
|
when it loads a module, so the kernel command line can be used for
|
|
loadable modules too.
|
|
|
|
This document may not be entirely up to date and comprehensive. The command
|
|
"modinfo -p ${modulename}" shows a current list of all parameters of a loadable
|
|
module. Loadable modules, after being loaded into the running kernel, also
|
|
reveal their parameters in /sys/module/${modulename}/parameters/. Some of these
|
|
parameters may be changed at runtime by the command
|
|
``echo -n ${value} > /sys/module/${modulename}/parameters/${parm}``.
|
|
|
|
Special handling
|
|
----------------
|
|
|
|
Hyphens (dashes) and underscores are equivalent in parameter names, so::
|
|
|
|
log_buf_len=1M print-fatal-signals=1
|
|
|
|
can also be entered as::
|
|
|
|
log-buf-len=1M print_fatal_signals=1
|
|
|
|
Double-quotes can be used to protect spaces in values, e.g.::
|
|
|
|
param="spaces in here"
|
|
|
|
cpu lists
|
|
~~~~~~~~~
|
|
|
|
Some kernel parameters take a list of CPUs as a value, e.g. isolcpus,
|
|
nohz_full, irqaffinity, rcu_nocbs. The format of this list is:
|
|
|
|
<cpu number>,...,<cpu number>
|
|
|
|
or
|
|
|
|
<cpu number>-<cpu number>
|
|
(must be a positive range in ascending order)
|
|
|
|
or a mixture
|
|
|
|
<cpu number>,...,<cpu number>-<cpu number>
|
|
|
|
Note that for the special case of a range one can split the range into equal
|
|
sized groups and for each group use some amount from the beginning of that
|
|
group:
|
|
|
|
<cpu number>-<cpu number>:<used size>/<group size>
|
|
|
|
For example one can add to the command line following parameter:
|
|
|
|
isolcpus=1,2,10-20,100-2000:2/25
|
|
|
|
where the final item represents CPUs 100,101,125,126,150,151,...
|
|
|
|
The value "N" can be used to represent the numerically last CPU on the system,
|
|
i.e "foo_cpus=16-N" would be equivalent to "16-31" on a 32 core system.
|
|
|
|
Keep in mind that "N" is dynamic, so if system changes cause the bitmap width
|
|
to change, such as less cores in the CPU list, then N and any ranges using N
|
|
will also change. Use the same on a small 4 core system, and "16-N" becomes
|
|
"16-3" and now the same boot input will be flagged as invalid (start > end).
|
|
|
|
The special case-tolerant group name "all" has a meaning of selecting all CPUs,
|
|
so that "nohz_full=all" is the equivalent of "nohz_full=0-N".
|
|
|
|
The semantics of "N" and "all" is supported on a level of bitmaps and holds for
|
|
all users of bitmap_parselist().
|
|
|
|
Metric suffixes
|
|
~~~~~~~~~~~~~~~
|
|
|
|
The [KMG] suffix is commonly described after a number of kernel
|
|
parameter values. 'K', 'M', 'G', 'T', 'P', and 'E' suffixes are allowed.
|
|
These letters represent the _binary_ multipliers 'Kilo', 'Mega', 'Giga',
|
|
'Tera', 'Peta', and 'Exa', equaling 2^10, 2^20, 2^30, 2^40, 2^50, and
|
|
2^60 bytes respectively. Such letter suffixes can also be entirely omitted.
|
|
|
|
Kernel Build Options
|
|
--------------------
|
|
|
|
The parameters listed below are only valid if certain kernel build options
|
|
were enabled and if respective hardware is present. This list should be kept
|
|
in alphabetical order. The text in square brackets at the beginning
|
|
of each description states the restrictions within which a parameter
|
|
is applicable.
|
|
|
|
Parameters denoted with BOOT are actually interpreted by the boot
|
|
loader, and have no meaning to the kernel directly.
|
|
Do not modify the syntax of boot loader parameters without extreme
|
|
need or coordination with <Documentation/arch/x86/boot.rst>.
|
|
|
|
There are also arch-specific kernel-parameters not documented here.
|
|
|
|
Note that ALL kernel parameters listed below are CASE SENSITIVE, and that
|
|
a trailing = on the name of any parameter states that the parameter will
|
|
be entered as an environment variable, whereas its absence indicates that
|
|
it will appear as a kernel argument readable via /proc/cmdline by programs
|
|
running once the system is up.
|
|
|
|
The number of kernel parameters is not limited, but the length of the
|
|
complete command line (parameters including spaces etc.) is limited to
|
|
a fixed number of characters. This limit depends on the architecture
|
|
and is between 256 and 4096 characters. It is defined in the file
|
|
./include/uapi/asm-generic/setup.h as COMMAND_LINE_SIZE.
|
|
|
|
.. include:: kernel-parameters.txt
|
|
:literal:
|