| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- .. 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:
|