How kernel parameters work
The kernel reads its command line from the bootloader and processes parameters from left to right, stopping at--. Anything after -- is passed as arguments to init.
All kernel parameters are case-sensitive. The total command line length is architecture-dependent: between 256 and 4096 characters, defined in
include/uapi/asm-generic/setup.h as COMMAND_LINE_SIZE.Hyphens and underscores
Hyphens and underscores are interchangeable in parameter names:Metric suffixes
Many size parameters accept the suffixesK, M, G, T, P, and E, representing binary multipliers (2^10 through 2^60).
CPU lists
Some parameters accept a list of CPU numbers:N refers to the highest-numbered CPU on the system.
Module parameters
Loadable module parameters can be set on the kernel command line using themodule.param=value syntax, or passed to modprobe directly:
/sys/module/<name>/parameters/:
Key parameter categories
Console & logging
console=, loglevel=, quiet, debug, printk.devkmsg=Memory
mem=, hugepages=, transparent_hugepage=, movablecore=CPU & scheduling
maxcpus=, nr_cpus=, isolcpus=, nohz_full=, nosmpSecurity
selinux=, apparmor=, security=, module.sig_enforce=Debugging
panic=, oops=, kgdboc=, initcall_debug, ftrace=IOMMU
intel_iommu=, amd_iommu=, iommu=Common parameters reference
Console and logging
Console and logging
console= [KNL]Sets the console device and options. Multiple console= arguments can be used to direct output to several devices simultaneously. The last console= entry becomes the /dev/console device.quietSuppresses most kernel log messages during boot. Equivalent to loglevel=4.loglevel= [KNL]Sets the console log level (0–7). Messages with priority higher than this value are not printed to the console. Default is 7 (all messages).| Level | Meaning |
|---|---|
| 0 | EMERG |
| 1 | ALERT |
| 2 | CRIT |
| 3 | ERR |
| 4 | WARNING |
| 5 | NOTICE |
| 6 | INFO |
| 7 | DEBUG |
debugSets the kernel log level to the maximum (8). Equivalent to loglevel=8.initcall_debugTraces all initcall functions during boot. Useful for diagnosing slow or failing boot sequences.Boot and init
Boot and init
init= [KNL]Overrides the path to the init process. The kernel tries this path before the default /sbin/init and /init.ro / rwMounts the root filesystem read-only (ro) or read-write (rw) at boot. Most distributions boot ro and remount rw after filesystem checks.root= [KNL]Specifies the root filesystem device.rootdelay=Waits the specified number of seconds before attempting to mount the root filesystem. Useful when storage controllers initialize slowly.nomodesetPrevents the kernel from switching video modes. Disables kernel mode-setting (KMS), which forces the system to use the VESA/BIOS framebuffer. Commonly used to work around GPU driver issues.Memory management
Memory management
mem= [KNL,BOOT]Limits the amount of memory the kernel uses. Memory above the specified limit is ignored.hugepages= [HW]Allocates a fixed number of huge pages at boot time. Huge pages are 2 MiB on x86-64 by default.transparent_hugepage= [KNL]Controls Transparent Huge Pages (THP).movablecore= [KNL,X86,IA-64,PPC]Specifies the amount of memory reserved for hotpluggable (movable) pages.CPU and SMP
CPU and SMP
maxcpus= [SMP]Limits the number of CPUs that will be brought online at boot. Additional CPUs can be onlined later via /sys/devices/system/cpu/cpuN/online.nr_cpus= [SMP]Sets the maximum number of CPUs the kernel will support. Unlike maxcpus=, this is a hard limit that cannot be increased without rebooting.nosmp [SMP]Disables SMP support completely. Equivalent to maxcpus=0.isolcpus= [KNL,SMP]Isolates specified CPUs from the general kernel scheduler. Isolated CPUs will not run tasks from the scheduler’s global runqueue; processes must be explicitly pinned to them with taskset or cgroup cpuset.nohz_full= [KNL,SMP]Extends dynticks (tickless) operation to the specified CPUs. Reduces timer interrupts on isolated CPUs to minimize latency jitter for real-time workloads.Panic and crash behavior
Panic and crash behavior
panic= [KNL]Sets the timeout in seconds before automatic reboot after a kernel panic. Zero means do not reboot. A negative value means reboot immediately.oops= [KNL]Controls behavior when a non-fatal kernel oops occurs.nmi_watchdog= [KNL,BUGS=X86]Configures the NMI watchdog, which detects hard lockups.IOMMU and virtualization
IOMMU and virtualization
intel_iommu= [DMAR]Controls Intel VT-d IOMMU behavior.amd_iommu= [HW,X86-64]Controls AMD-Vi IOMMU behavior.iommu= [X86]General IOMMU option.Security
Security
selinux= [SELINUX]Enable or disable SELinux at boot.apparmor= [APPARMOR]Enable or disable AppArmor at boot.security= [SECURITY]Chooses the primary Linux Security Module when multiple are compiled in.module.sig_enforce=When set to 1, the kernel refuses to load any module that is not validly signed. This overrides CONFIG_MODULE_SIG_FORCE.lockdown= [SECURITY]Enables kernel lockdown mode, restricting root’s ability to modify the running kernel.Networking
Networking
netdev_max_backlog=Sets the maximum number of packets queued on the input side when the interface receives packets faster than the kernel can process them.lpj= [KNL]Manually sets loops-per-jiffy, skipping the calibration delay during boot. Speeds up boot time at the cost of potentially inaccurate delay loops.Filesystem and storage
Filesystem and storage
acpi= [HW,ACPI]Controls ACPI (Advanced Configuration and Power Interface) behavior.pci= [PCI]Controls PCI bus behavior.Making parameters permanent
- GRUB 2
- systemd-boot
- GRUB on ARM64
Edit Then regenerate the GRUB configuration:
/etc/default/grub and add parameters to GRUB_CMDLINE_LINUX: