How to query your Linux Kernel

How to query your Linux Kernel


What can your Linux system tell you about the Linux kernel it's using? Let's do a little probing and see.
How much can your Linux system tell you about the kernel it's running and what commands are available to help you ask? Let's run through some of them. uname
The simplest and most straight-forward command for providing information on your kernel is the uname -r command. It provides a succinct answer to your question but in a format that also includes a number of fields each which provides a particular piece of information.

$ uname -r
4.15.0-30-generic
^ ^ ^ ^ ^
| | | | |
| | | | |
| | | | +-- the distribution-specific string
| | | +------- the latest bug fix
| | +---------- the minor revision
| +------------ the major revision
+--------------- the kernel version

Add an "s" and your output will include the kernel's name:
$ uname -sr
Linux 4.15.0-30-generic

In the first display above, you can see that each field has been annotated. If you use, the uname -a command instead, you will get quite a bit more information. In the display below, each of the fields is explained. Notice that the third field shows the same information we see above. The output is wrapped around below to make it easy to label the fields.
OK, so the kernel in this case is "4.15.0-30-generic," and each portion of the name provides some detail on the kernel's identity. To add the the kernel's name, add the "s" switch:

$ uname -a
Linux vswHostway 4.15.0-30-generic #32-Ubuntu SMP Thu Jul 26 17:42:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
----- --------- ----------------- -------------------------------------------
| | | |
| | +- kernel version +---- compilation stats
| +-- hostname +-- kernel name
x86_64 x86_64 x86_64 GNU/Linux
| | | |
| | | +-- operating system
| | +---------- OS architecture
| +----------------- processor architecture
+------------------------ machine architecture

The compilation stats shown on the right in the top line of the output above also tells you some interesting things.

#32-Ubuntu SMP –- the number of times this version of the kernel was compiled Thu Jul 26 17:42:43 UTC 2018 –- the last time the kernel was compiled (timestamp) x86_64 –- the machine architecture x86_64 –- the processor architecture x86_64 –- the OS architecture
GNU/Linux –- the operating system (distribution name not included)

/proc/version


In the following command, we see the Linux distribution name along with the kernel name. We also see some of the other information that the uname command provided.
$ cat /proc/version
Linux version 4.15.0-30-generic (buildd@lgw01-amd64-060) (gcc version 7.3.0 (Ubuntu 7.3.0-
16ubuntu3)) #32-Ubuntu SMP Thu Jul 26 17:42:43 UTC 2018 rpm
On some systems, you can use the rpm command as shown below to provide information on your kernel.
$ rpm -q kernel
kernel-2.6.32-696.30.1.el6.x86_64 kernel-2.6.32-754.el6.x86_64 kernel-2.6.32-754.2.1.el6.x86_64

dmesg


You can also extract kernel information from your dmesg output:
$ dmesg | grep Linux
[ 0.000000] Linux version 4.15.0-30-generic (buildd@lgw01-amd64-060) (gcc version 7.3.0 (Ubuntu
7.3.0-16ubuntu3)) #32-Ubuntu SMP Thu Jul 26 17:42:43 UTC 2018 (Ubuntu 4.15.0-30.32-generic
4.15.18)
[ 0.041077] ACPI: Added _OSI(Linux-Dell-Video)
[ 0.047675] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[ 1.089363] Linux agpgart interface v0.103
[ 1.428063] usb usb1: Manufacturer: Linux 4.15.0-30-generic ehci_hcd
[ 1.448133] usb usb2: Manufacturer: Linux 4.15.0-30-generic ehci_hcd
[ 5.877861] media: Linux media interface: v0.10 [ 5.887061] Linux video capture interface: v2.00

dpkg

The dpkg command can also be used to identify the kernel version. Notice that in the output shown below, we see both the current and prior kernel versions.
$ sudo dpkg -l | grep linux-headers | grep ii | awk '{print $3}' | tail -1
4.15.0.30.32
$ sudo dpkg -l | grep linux-headers | grep ii | awk '{print $3}'
4.15.0-29.31
4.15.0-29.31
4.15.0-30.32
4.15.0-30.32
4.15.0.30.32

Wrap-up

There are many commands on Linux to help you get information on the kernel that your system is using. I hope this post adds some insight into what all those numbers and designations represent.