The Linux kernel accepts a list of parameters on its command line, supplied by the bootloader before the kernel starts. These parameters tune low-level behaviour — from which device to use as the root filesystem to how many CPUs to bring online — without requiring a kernel recompile. This page covers the most important parameters, how to pass them at boot, and how to persist them permanently.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/deelerdev/linux/llms.txt
Use this file to discover all available pages before exploring further.
How parameters are passed
The bootloader (typically GRUB) constructs the kernel command line and hands it to the kernel during the boot handoff. Once the kernel is running you can inspect the exact line it received:key=value pairs or bare flags. Hyphens and underscores are interchangeable in parameter names, so log_buf_len and log-buf-len are identical. Double-quotes protect values that contain spaces:
modulename.param=value syntax, and they are also exposed at runtime under /sys/module/<modulename>/parameters/. You can inspect what parameters a loadable module accepts with:
Essential parameters
console=
Directs kernel console output to a specific device. You can specify multipleconsole= options; the last one becomes the primary console but all receive output.
For early boot output before the full serial driver is ready, add an
earlycon parameter alongside console=.root=
Specifies the root filesystem device. The kernel mounts this device as/ after the initial RAM disk (initrd/initramfs) stage completes.
ro and rw
Control whether the root filesystem is mounted read-only or read-write during early boot.ro and then remount read-write via an init script once filesystem checks pass.
quiet
Suppresses most kernel log messages from appearing on the console during boot. The messages are still recorded in the kernel ring buffer and accessible viadmesg.
quiet temporarily to see all boot-time messages, which is useful when diagnosing failures.
loglevel=
Sets the console log level. Messages with a severity numerically lower than this value are printed to the console. The levels are:| Value | Name | Meaning |
|---|---|---|
| 0 | KERN_EMERG | System is unusable |
| 1 | KERN_ALERT | Action must be taken immediately |
| 2 | KERN_CRIT | Critical conditions |
| 3 | KERN_ERR | Error conditions |
| 4 | KERN_WARNING | Warning conditions |
| 5 | KERN_NOTICE | Normal but significant |
| 6 | KERN_INFO | Informational |
| 7 | KERN_DEBUG | Debug-level messages |
panic=
Controls what the kernel does after a panic.mem=
Limits the amount of memory the kernel will use. Useful for testing, kdump kernels, or working around firmware bugs.maxcpus=
Limits the number of CPUs brought online during boot on SMP kernels. After boot you can bring additional CPUs online manually.nomodeset
Prevents DRM and framebuffer drivers from loading if they would displace the firmware-initialised display. The system falls back to the firmware’s framebuffer only.CPU list format
Several parameters accept a list of CPU numbers. The supported formats are:Setting parameters permanently in GRUB
Edit the GRUB defaults file
Open
/etc/default/grub in a text editor and append your parameters to the GRUB_CMDLINE_LINUX_DEFAULT line.Runtime parameters with sysctl
Many kernel knobs can be changed at runtime through thesysctl interface without rebooting. These are distinct from boot parameters — they take effect immediately on a running kernel.
Documentation/admin-guide/sysctl/ in the kernel source tree.