Understanding the system's journey from the power button to the shell: UEFI firmware, GRUB2, the kernel, and initramfs, plus kernel version management with grubby, runtime parameter tuning via sysctl, and kernel module management with modprobe and lsmod.

In the previous episode, Episode 9, we set up networking and the firewall. Now we touch the most fundamental — and for many admins, the most intimidating — part of the system: the kernel and boot process. When a system fails to boot, all your other skills become useless — and the ability to understand and fix boot issues is what separates an ordinary sysadmin from a senior one.
This episode breaks down the system's journey from the power button to the login shell, then covers kernel management: choosing versions, tuning parameters, and managing modules.
Linux booting isn't a single leap — it's a chain of components calling each other:
Firmware (UEFI/BIOS)
-> GRUB2 bootloader
-> Kernel + initramfs (dracut)
-> systemd (PID 1)
-> targets & servicesLet's examine each step.
When you press the power button, the firmware (UEFI on modern machines, or BIOS on older ones) runs a self-test and looks for the bootloader. In episode 3 we covered Secure Boot — the boot component signature verification that's a flagship UEFI firmware feature.
GRUB2 is AlmaLinux's default bootloader. It reads its configuration from /boot/grub2/grub.cfg, shows a menu (if more than one kernel exists), then loads the selected kernel. This menu is your lifesaver when a new kernel misbehaves — you can boot into the old kernel.
sudo grubby --info=ALL | grep -E "^kernel|^index"grubby --info=ALL shows all kernel entries GRUB knows about, complete with their index and boot parameters.
The kernel is the heart of the system — managing processes, memory, hardware, and networking. But the kernel needs help to boot: the initramfs (initial RAM filesystem) is a small archive loaded into memory, containing the drivers and tools the kernel needs to access the root disk. The initramfs is built by dracut:
sudo dracut -fThis command rebuilds the initramfs for the active kernel — useful after changing modules needed at boot.
Once the kernel is ready, systemd runs as PID 1 and takes over: bringing up targets, starting services, and mounting filesystems. Everything we covered in episode 7 happens at this stage.
When a system fails to boot, two rescue paths are available:
| Mode | Function |
|---|---|
| rescue.target | Minimal multi-user; main filesystems mounted, networking optional |
| emergency.target | Minimal root shell; filesystems not mounted |
Both can be reached from the GRUB menu by adding a boot parameter, or through the following command while the system is running:
sudo systemctl isolate rescue.targetWarning
Rescue and emergency modes are last-resort tools — not working modes. Use them to fix a broken fstab, reset a password, or move files, then reboot back into normal mode.
The kernel on AlmaLinux is managed as a package — and several versions can coexist. installonly_limit=3 in dnf5.conf (episode 4) ensures old versions remain available as a fallback.
sudo dnf5 upgrade kernelAfter installation, GRUB automatically makes the newest kernel the default:
sudo grubby --default-kernelSometimes you want to boot a specific kernel, not the newest one. grubby handles this:
sudo grubby --set-default=/boot/vmlinuz-6.7.0grubby --default-kernel shows the kernel that will be loaded on the next boot; --set-default selects it explicitly. This is very useful if the newest kernel has issues and you want to lock in a stable version.
Runtime kernel parameters can be changed without rebooting via sysctl. Parameters are written in /proc/sys/ and configured persistently in /etc/sysctl.d/.
sysctl -a | head
sysctl net.ipv4.ip_forwardnet.ipv4.ip_forward = 1
net.core.somaxconn = 1024
vm.swappiness = 10To apply new configuration:
sudo sysctl --system
sysctl net.ipv4.ip_forwardvm.swappiness = 10 reduces the system's tendency to move data into swap — a common tuning for servers that want to preserve application performance. Convention: numbered files in /etc/sysctl.d/ are applied in order, so the 99- name wins over default files.
The kernel supports modules — components loaded as needed, such as drivers for new hardware:
lsmod | headsudo modprobe vfio-pci
sudo modprobe -r vfio-pcilsmod shows active modules; modprobe loads or unloads modules along with their dependencies.
To have a module load automatically at boot, register it in /etc/modules-load.d/. To exclude or blacklist modules, use /etc/modprobe.d/:
blacklist nouveau
install nouveau /bin/trueThis kind of blacklist is commonly used to prevent specific drivers from loading — for example disabling the open NVIDIA driver so it doesn't conflict with proprietary drivers.
Info
Module management becomes crucial when installing GPUs for virtualization passthrough (vfio-pci) or when a problematic module locks up the system. The combination of lsmod for inspection and /etc/modprobe.d/ for policy is the standard toolkit.
installonly_limit=3 is a good reason.grubby when choosing a kernel. The default boot follows the newest kernel; lock in a stable version with grubby --set-default./proc/sys/ directly without sysctl.d. Direct changes are lost on reboot — write to /etc/sysctl.d/.dracut -f without a reason. It's usually only needed after boot module or driver changes.insmod. Use modprobe, which handles dependencies automatically.In this episode 10 you've understood the kernel and boot process: the firmware → GRUB2 → kernel + initramfs → systemd chain, the rescue and emergency recovery modes, kernel version management with grubby, runtime tuning with sysctl, and kernel module management with modprobe and lsmod.
Key takeaways:
grubby --set-default to choose a version./etc/sysctl.d/ with sysctl --system — not by editing /proc/sys/ directly.modprobe and lsmod; policy persists in /etc/modprobe.d/.A well-managed kernel is the foundation of a healthy system. In the next episode, Episode 11, we'll cover Cockpit, Monitoring & Web Management — the web dashboard that lets you manage your system from a browser, plus basic monitoring commands like top, free, df, vmstat, and iostat. See you there!