Kernel
The kernel is the part of the operating system that actually controls the hardware. Apps never touch the processor, memory, or disks directly. They ask the kernel, and the kernel decides who gets what and when. If the operating system is a building, the kernel is the engine room: you rarely see it, but nothing works without it.
The kernel is the first program loaded after the bootloader and the only code that runs in the CPU’s most privileged mode (ring 0 on x86, EL1 on ARM). Everything else runs in userspace and reaches the kernel through system calls.
What the kernel does:
- Scheduling: decides which process runs on which core, and for how long
- Memory management: maps virtual memory to physical RAM, handles paging and swap
- Device drivers: talks to storage controllers, NICs, GPUs, and USB devices
- Filesystems: implements ext4, XFS, Btrfs, vfat, and the virtual filesystems
/procand/sys - Networking: the TCP/IP stack, routing, and packet filtering (netfilter)
- Security: user IDs, capabilities, namespaces, cgroups, and LSMs such as AppArmor
Linux is a monolithic kernel with loadable modules. Core services run in kernel space, but drivers can be loaded and unloaded at runtime (modprobe, lsmod) without a reboot.
Version format: 7.0.0-15-generic means upstream version 7.0.0, Ubuntu package revision 15, and the generic flavor. Distributions ship patched builds of upstream kernels from kernel.org.
Boot handoff: the bootloader loads the kernel image (/boot/vmlinuz-*) and an initramfs, passes kernel parameters (root=, quiet, splash), and the kernel then starts PID 1 (systemd on Ubuntu).
Source: The Linux Kernel documentation
Inspecting the running kernel
# Running kernel version
$ uname -r
7.0.0-15-generic
# Parameters the bootloader passed in
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-7.0.0-15-generic root=UUID=3f1c... ro quiet splash
# Kernel messages from this boot
$ sudo dmesg --level=err,warn | tail
# Loaded driver modules
$ lsmod | head -5
# Installed kernels (keep at least one older one as a fallback)
$ ls /boot/vmlinuz-* You meet the kernel when something goes wrong low in the stack: a driver that will not load, a disk that throws I/O errors, or a server that panics on boot. dmesg and journalctl -k are where those problems show up first. Kernel updates also matter for security, since many serious Linux CVEs live in the kernel and require a reboot to fix. Ubuntu keeps older kernels installed and lists them in the GRUB “Advanced options” menu, so a bad kernel update is usually one reboot away from being rolled back.