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