How To Find Kernel Version In Linux

How To Find Kernel Version In Linux

Reading time1 min
#Linux#Kernel#Sysadmin#KernelVersion#LinuxCommands#SystemAdministration

Mastering Kernel Version Detection in Linux: Beyond uname Commands

When it comes to managing Linux systems, knowing the exact kernel version running underneath your distribution is key. Whether you're verifying system compatibility, checking if critical security patches are applied, or troubleshooting hardware and software issues, the kernel version tells you a lot about your environment. Most users default to the familiar uname -r command for this information — but experts go further, leveraging multiple tools and methods to extract deeper insights, especially across varied Linux distributions and customized setups.

In this post, we'll explore practical ways to detect the Linux kernel version, going beyond just uname. You’ll learn handy commands and file locations that can provide more context and accuracy for your system diagnostics.


Why Knowing the Kernel Version Matters

  • System Compatibility: Many software packages or drivers require specific kernel versions.
  • Security: Kernel patches fix vulnerabilities. Identifying your current kernel helps ensure you're up-to-date.
  • Troubleshooting: Hardware support or kernel modules depend heavily on the kernel version and configuration.
  • Audit & Inventory: Effective system administration demands precise knowledge of underlying platforms.

The Classic Way: uname -r

Most Linux users know this one:

uname -r

This outputs the kernel release, for example:

5.15.0-60-generic

You can also get more detailed info with:

uname -a

Sample output:

Linux mymachine 5.15.0-60-generic #66-Ubuntu SMP Wed Sep 14 13:17:12 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

Here you get the kernel release (5.15.0-60-generic), build number (#66-Ubuntu SMP), build date, architecture etc.

While helpful and widely compatible, uname relies on information the running kernel provides at runtime — in some embedded systems or customized kernels, it might not tell the full story.


Delving Deeper: Check /proc/version

The /proc/version file contains stringified kernel version info including the compiler used:

cat /proc/version

Example output:

Linux version 5.15.0-60-generic (buildd@lcy02-amd64-014) (gcc (Ubuntu 11.3.0-1ubuntu1) 11.3.0) #66-Ubuntu SMP Wed Sep 14 13:17:12 UTC 2023

This is helpful when you want to verify not just the version but compiler info or custom build tags.


Distribution-Specific Helpers

Many distributions include their own utilities that augment kernel version details.

Debian/Ubuntu: dpkg -l | grep linux-image

List installed kernel images and headers:

dpkg -l | grep linux-image

Sample output might look like:

ii  linux-image-5.15.0-60-generic    5.15.0-60.66                          amd64        Signed kernel image generic
ii  linux-image-generic              5.15.0.60.62                         amd64        Generic Linux kernel image

This shows you kernels installed on disk even if not active—a handy way to check available versions for booting.


Extract Kernel Version From Bootloader Configuration

Sometimes multiple kernels are installed; verifying which one boots by default can avoid surprises.

For GRUB2 systems (common on Debian/Ubuntu/Fedora):

Inspect /boot/grub/grub.cfg or run:

grep menuentry /boot/grub/grub.cfg | cut -d "'" -f2 | grep -i linux

You might see something like:

Ubuntu, with Linux 5.15.0-58-generic
Ubuntu, with Linux 5.15.0-60-generic (recovery mode)
Ubuntu, with Linux 5.13.0-40-generic (recovery mode)

These entries list kernels available to boot from your GRUB menu.


Use the hostnamectl Command for System Version Details

On systemd-based distros, hostnamectl outputs useful info including "Kernel" details:

hostnamectl | grep Kernel

Example output:

Kernel: Linux 5.15.0-60-generic

It's a clean way to get concise system metadata.


Advanced Inspection: Use rpm on RPM-based Systems

If you’re on CentOS/Fedora/RHEL variants that use RPM packaging, list installed kernels with:

rpm -qa | grep kernel-core

Example output:

kernel-core-5.14.0-281.el9.x86_64
kernel-core-5.10.129-1.el7.x86_64

This shows all installed cores—compare them against running uname -r.


Checking Kernel Version Programmatically via /lib/modules/

Kernel modules folders correspond exactly to installed kernels:

ls /lib/modules/

You’ll see directories named by full versions such as:

5.15.0-60-generic/
5.13.0-46-generic/
4.18.0-240.el8.x86_64/

These reflect all kernels with modules installed—the currently active one matches the output of uname -r.


Wrapping Up

By combining these commands and methods, you get a comprehensive picture of not just what kernel is running now, but what kernels are available on disk and how they were built or packaged — vital for robust Linux system maintenance.

Quick reference summary:

PurposeCommand/example
Show running kernel releaseuname -r
Detailed runtime infouname -a
Compiler/build infocat /proc/version
Installed kernels (Debian/Ubuntu)`dpkg -l
Installed kernels (RHEL/CentOS/Fedora)`rpm -qa
Bootloader entries/kernelsgrep menuentry /boot/grub/grub.cfg
System metadata including Kernelhostnamectl
Installed module directoriesls /lib/modules/

Feel free to bookmark this guide for your next Linux troubleshooting session — mastering kernel detection is a simple but powerful step toward better server administration!


Happy sysadmining!
If you found this useful, share it or drop a comment if you want me to cover related topics like detecting distro versions or managing kernel updates.