2025-08-19 13:35:51 +02:00
|
|
|
.. SPDX-License-Identifier: GPL-2.0
|
|
|
|
|
|
2017-04-20 14:04:15 +01:00
|
|
|
.. _kernelparameters:
|
|
|
|
|
|
2016-10-26 16:14:52 -06:00
|
|
|
The kernel's command-line parameters
|
|
|
|
|
====================================
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2020-12-26 09:44:33 -08:00
|
|
|
The following is a consolidated list of the kernel parameters as implemented
|
|
|
|
|
by the __setup(), early_param(), core_param() and module_param() macros
|
2014-05-14 10:33:45 +09:30
|
|
|
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.
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2019-06-27 15:59:38 +02:00
|
|
|
The kernel parses parameters from the kernel command line up to "``--``";
|
2014-05-14 10:33:45 +09:30
|
|
|
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.
|
2019-06-27 15:59:38 +02:00
|
|
|
Everything after "``--``" is passed as an argument to init.
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-05-14 10:33:45 +09:30
|
|
|
Module parameters can be specified in two ways: via the kernel command
|
2016-09-21 09:48:55 -03:00
|
|
|
line with a module name prefix, or via modprobe, e.g.::
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-05-14 10:33:45 +09:30
|
|
|
(kernel command line) usbcore.blinkenlights=1
|
|
|
|
|
(modprobe command line) modprobe usbcore blinkenlights=1
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2014-05-14 10:33:45 +09:30
|
|
|
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.
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2024-10-29 11:03:20 -07:00
|
|
|
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
|
|
|
|
|
----------------
|
|
|
|
|
|
2016-09-21 09:48:55 -03:00
|
|
|
Hyphens (dashes) and underscores are equivalent in parameter names, so::
|
|
|
|
|
|
2009-05-06 16:02:58 -07:00
|
|
|
log_buf_len=1M print-fatal-signals=1
|
2016-09-21 09:48:55 -03:00
|
|
|
|
|
|
|
|
can also be entered as::
|
|
|
|
|
|
2009-05-06 16:02:58 -07:00
|
|
|
log-buf-len=1M print_fatal_signals=1
|
|
|
|
|
|
2016-09-21 09:48:55 -03:00
|
|
|
Double-quotes can be used to protect spaces in values, e.g.::
|
|
|
|
|
|
2014-05-14 10:33:45 +09:30
|
|
|
param="spaces in here"
|
2009-05-06 16:02:58 -07:00
|
|
|
|
2024-10-29 11:03:20 -07:00
|
|
|
cpu lists
|
|
|
|
|
~~~~~~~~~
|
2016-10-11 13:51:35 -07:00
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
2021-01-27 11:43:43 +01:00
|
|
|
<cpu number>-<cpu number>:<used size>/<group size>
|
2016-10-11 13:51:35 -07:00
|
|
|
|
|
|
|
|
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,...
|
|
|
|
|
|
2021-02-21 03:08:25 -05:00
|
|
|
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).
|
2016-10-11 13:51:35 -07:00
|
|
|
|
2021-04-20 20:13:25 -07:00
|
|
|
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
|
2023-08-17 17:04:32 +03:00
|
|
|
all users of bitmap_parselist().
|
2016-10-11 13:51:35 -07:00
|
|
|
|
2024-10-29 11:03:20 -07:00
|
|
|
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
|
|
|
|
|
--------------------
|
2006-04-01 01:43:18 +02:00
|
|
|
|
2023-07-25 10:42:47 -07:00
|
|
|
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
|
2025-11-12 12:46:41 +01:00
|
|
|
is applicable.
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
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
|
2023-03-14 17:06:44 -06:00
|
|
|
need or coordination with <Documentation/arch/x86/boot.rst>.
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2007-02-13 13:26:21 +01:00
|
|
|
There are also arch-specific kernel-parameters not documented here.
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
Note that ALL kernel parameters listed below are CASE SENSITIVE, and that
|
2025-08-19 13:35:51 +02:00
|
|
|
a trailing = on the name of any parameter states that the parameter will
|
2005-04-16 15:20:36 -07:00
|
|
|
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.
|
|
|
|
|
|
2006-09-29 02:00:27 -07:00
|
|
|
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
|
2022-04-02 22:48:21 -07:00
|
|
|
./include/uapi/asm-generic/setup.h as COMMAND_LINE_SIZE.
|
2006-09-29 02:00:27 -07:00
|
|
|
|
2016-11-03 12:10:10 +02:00
|
|
|
.. include:: kernel-parameters.txt
|
|
|
|
|
:literal:
|