// learn Β· linux Β· rhcsa Β· 9 min

Kernel parameters & tuned.

'Kernel parameter' means two different things: boot-time arguments GRUB hands the kernel, and runtime sysctl knobs you can twist while it's running. Learn both, how to make each persist, and how tuned bundles dozens of them into one named profile.

Kernel parameters and tuned animated tutorial. Boot-time kernel command line via GRUB and grubby, runtime sysctl tunables, persistent sysctl in /etc/sysctl.d, and tuned profiles with tuned-adm. RHCSA EX200 ready.
// kernel parameters & tuned

Two things wear the name "kernel parameter": boot-time arguments from GRUB, and runtime sysctl knobs. Tell them apart, make each persist, and let tuned bundle the lot.

// before you start
you should know
  • Β·The boot-process lesson (where GRUB and the kernel cmdline fit)
  • Β·Comfortable editing files and running commands as root
  • Β·Helpful: NAT-and-routing (ip_forward is the running example)
by the end you'll

Distinguish boot-time cmdline from runtime sysctl, persist each correctly, and switch tuned profiles for the machine's role.

pace: 9 minutes

kernel tuning β€” step 1 / 6 Β· two kinds
β‘  boot-time β€” kernel cmdline
set by: GRUB
read: once, as kernel starts
see: cat /proc/cmdline
one boot: GRUB 'e' edit
persist: grubby --args
e.g. quiet rd.break selinux=0
β‘‘ runtime β€” sysctl
set by: sysctl / /proc/sys
read: any time, live
see: sysctl -a
now: sysctl -w (runtime only)
persist: /etc/sysctl.d/*.conf
e.g. net.ipv4.ip_forward=1

Two different things called 'kernel parameter'

The phrase is overloaded. (1) BOOT-TIME parameters are arguments GRUB passes to the kernel on the command line β€” set once, read as the kernel starts (e.g. quiet, rd.break, selinux=0). (2) RUNTIME parameters are sysctl tunables you can read and change while the system runs (e.g. net.ipv4.ip_forward). Different mechanisms, different persistence β€” don't confuse them.

// key insight

Persistence is the recurring trap. A GRUB 'e' edit lasts one boot; grubby makes it permanent. A sysctl -w lasts until reboot; a file in /etc/sysctl.d makes it permanent. tuned, by contrast, IS persistent β€” its daemon re-applies the chosen profile every boot.

// exam-ready Β· cmdline, sysctl, tuned
$cat /proc/cmdline
$grubby --info=ALL
$grubby --update-kernel=ALL --args="X"
$grubby --update-kernel=ALL --remove-args="X"
$/etc/default/grub
$grub2-mkconfig -o /boot/grub2/grub.cfg
$sysctl -a
$sysctl NAME
$sysctl -w NAME=VAL
$/etc/sysctl.d/99-x.conf
$sysctl --system
$tuned-adm active
$tuned-adm list
$tuned-adm profile NAME
$tuned-adm recommend
$systemctl enable --now tuned
// check yourself
4 quick questions
Q1

You ran `sysctl -w net.ipv4.ip_forward=1` and routing started working. After a reboot it stopped. How do you make it permanent?

Q2

You need to add a kernel boot argument permanently across all installed kernels. Best command?

Q3

What's the relationship between a sysctl name like net.ipv4.ip_forward and the filesystem?

Q4

What does a tuned profile like 'throughput-performance' actually do?

These aren't graded β€” they're just for active recall, which is what actually makes the lesson stick.

⚑
// where the cmdline comes from

Linux boot process

GRUB is where the kernel command line is assembled and where the 'e' one-boot edit (rd.break, init=/bin/bash) lives. See the full chain from firmware to systemd.

open β†’
// more in linux

keep going β€” these pair well with what you just learned.

see all linux β†’
the boot processall lessons