How to Install and Use the ‘dmesg’ Command in Linux

Graphic representation of a Linux terminal showing the installation process of the dmesg command for kernel messages

Are you trying to understand your system’s boot process or kernel messages but finding it a bit challenging? Just like a private detective, the ‘dmesg’ command in Linux can help you uncover these mysteries. Many Linux users, especially beginners, might find the task a bit daunting. However, ‘dmesg’, a powerful tool for viewing system messages, is worth learning to install and use. It’s even accessible on most package management systems, simplifying the installation once you understand the process.

In this guide, we will navigate the process of installing the ‘dmesg’ command on your Linux system. We are going to provide you with installation instructions for Debian, Ubuntu, CentOS, and AlmaLinux, delve into how to compile ‘dmesg’ from the source, and install a specific version. Finally, we will show you how to use the ‘dmesg’ command and ascertain that the correctly installed version is in use.

Let’s get started with the step-by-step ‘dmesg’ installation on your Linux system!

TL;DR: How Do I Install and Use the ‘dmesg’ Command in Linux?

In most Linux distributions, the 'dmesg' command comes pre-installed. You can verify its installation with, dmesg --version. If for some reason it is not installed, you can add it via the util-linux package, sudo [apt/yum] install util-linux. To use it, simply type dmesg in your terminal. For more detailed output, you can use dmesg -H for a human-readable format.

dmesg -H

# Output:
# [Expected output from command]

This command will display the kernel ring buffer in a human-readable format, making it easier to understand the system messages. But there’s so much more to the ‘dmesg’ command than just this. Continue reading for a more detailed guide on how to effectively use the ‘dmesg’ command in Linux.

Understanding and Installing the ‘dmesg’ Command in Linux

The ‘dmesg’ command is a powerful tool that displays messages from the Linux kernel. It’s used to troubleshoot and understand the system’s boot process, kernel messages, and hardware status. It’s an essential command for system administrators and users who want to diagnose and resolve system issues.

Installing ‘dmesg’ with apt

For Debian-based distributions like Ubuntu, you can use the apt package manager to install ‘dmesg’. However, in most cases, ‘dmesg’ comes pre-installed. You can verify this by typing dmesg into your terminal.

sudo apt update
sudo apt install util-linux

# Output:
# [Expected output from command]

The ‘dmesg’ command is part of the ‘util-linux’ package, so installing or updating this package will ensure you have ‘dmesg’ on your system.

Installing ‘dmesg’ with yum

For Red Hat-based distributions like CentOS or Fedora, you can use the yum package manager to install ‘dmesg’. Similar to ‘apt’, ‘dmesg’ is part of the ‘util-linux’ package.

sudo yum update
sudo yum install util-linux

# Output:
# [Expected output from command]

This command will update your system and install the ‘util-linux’ package, which includes the ‘dmesg’ command.

Installing ‘dmesg’ with pacman

If you’re using an Arch-based distribution like Manjaro, you can use the pacman package manager to install ‘dmesg’.

sudo pacman -Syu
sudo pacman -S util-linux

# Output:
# [Expected output from command]

The first command updates your system, and the second installs the ‘util-linux’ package, which includes the ‘dmesg’ command.

Installing ‘dmesg’ from Source Code

For those who prefer a more hands-on approach, you can install ‘dmesg’ directly from its source code. This method requires a bit more technical knowledge, but it gives you more control over the installation process.

Firstly, you’ll need to download the source code. The ‘dmesg’ command is part of the ‘util-linux’ package, so you’ll need to download that package.


# Output:
# [Expected output from command]

After downloading, extract the tarball and navigate to the extracted directory.

tar xf util-linux-2.36.tar.xz
cd util-linux-2.36

# Output:
# [Expected output from command]

Now, you can compile and install ‘dmesg’.

sudo make install

# Output:
# [Expected output from command]

Installing Different Versions of ‘dmesg’

Installing from Source

The process of installing different versions from source is similar to the process described above. You just need to download the tarball for the version you want to install.

Using Package Managers

Using apt

For Debian-based distributions, you can specify the version of the package you want to install with apt. However, the available versions depend on the repositories your system is using.

sudo apt install util-linux=2.36-3ubuntu2

# Output:
# [Expected output from command]

Using yum

For Red Hat-based distributions, you can also specify the version with yum. You can list the available versions with the following command:

yum --showduplicates list util-linux

# Output:
# [Expected output from command]

Then, you can install the version you want with the following command:

sudo yum install util-linux-2.36-3.el7

# Output:
# [Expected output from command]

Key Changes and Version Comparison

Different versions of ‘dmesg’ might have different features or bug fixes. Here’s a brief comparison of some versions:

VersionKey Changes
2.35Added support for timestamp output
2.34Fixed buffer size issue
2.33Improved performance

Using and Verifying ‘dmesg’

Basic Usage

Once ‘dmesg’ is installed, you can use it to view the kernel ring buffer. The most basic usage is to just type dmesg into your terminal.


# Output:
# [Expected output from command]

This will display a lot of messages. If you want to see the most recent messages, you can use the -T option to display timestamps, and the tail command to only display the last few lines.

dmesg -T | tail

# Output:
# [Expected output from command]

Verifying Installation

To verify that ‘dmesg’ is installed correctly, you can use the --version option.

dmesg --version

# Output:
# [Expected output from command]

This will display the version of ‘dmesg’ you have installed, which confirms that the installation was successful.

Exploring Alternative Methods for System Messages

While ‘dmesg’ is a powerful tool for viewing system messages, there are other methods that you can use. One such method is the ‘journalctl’ command, which is part of the systemd suite.

The ‘journalctl’ Command

The ‘journalctl’ command allows you to query and display messages from the systemd journal. Unlike ‘dmesg’, ‘journalctl’ can show messages from the current boot, previous boots, specific time ranges, specific units, and more.

Here’s a basic usage example:


# Output:
# [Expected output from command]

This command displays the entire systemd journal. To display messages from the current boot only, you can use the -b option.

journalctl -b

# Output:
# [Expected output from command]

Comparison of ‘dmesg’ and ‘journalctl’

While both ‘dmesg’ and ‘journalctl’ can display system messages, they have different features and use cases.

Display messages from current bootYesYes
Display messages from previous bootsNoYes
Filter messages by time rangeNoYes
Filter messages by unitNoYes

As you can see, ‘journalctl’ provides more advanced filtering options, which can be very useful for troubleshooting complex issues. However, ‘dmesg’ is simpler to use and is available on all Linux systems, even those that don’t use systemd.


If you’re just starting out with Linux, ‘dmesg’ is a great tool for viewing system messages. It’s simple to use and provides a lot of useful information. However, if you need more advanced features like filtering by time range or unit, ‘journalctl’ might be a better choice. In any case, it’s a good idea to familiarize yourself with both tools, as they can both be very useful for troubleshooting system issues.

Solving Common ‘dmesg’ Command Issues

While ‘dmesg’ is a powerful tool, you may encounter some issues when using it. Here are some common problems and their solutions.

‘dmesg: command not found’

This error occurs when the ‘dmesg’ command is not installed or not in your PATH. You can confirm if ‘dmesg’ is installed by using the which command.

which dmesg

# Output:
# /usr/bin/dmesg

If ‘dmesg’ is installed, this command will return its location. If it’s not, you’ll need to install it using the instructions provided earlier in this guide.

‘dmesg: read kernel buffer failed: Operation not permitted’

This error occurs when you try to run ‘dmesg’ as a non-root user, and the kernel restricts access to its logs. You can solve this problem by running ‘dmesg’ with ‘sudo’.

sudo dmesg

# Output:
# [Expected output from command]

This command runs ‘dmesg’ with root privileges, allowing it to read the kernel buffer.

‘dmesg: klogctl failed: Function not implemented’

This error occurs when the kernel does not support the ‘syslog’ system call, which ‘dmesg’ uses to read the kernel buffer. This issue is more common on older or minimal Linux distributions. In this case, you might need to use an alternative tool like ‘journalctl’.

Tips for Using ‘dmesg’

  • Use the -H option for human-readable output.
  • Use the -T option to display timestamps.
  • Use the -w option to watch for new messages.
  • Use the | less or | more commands to paginate the output.
  • Use the | grep command to search the output.

Remember, the ‘dmesg’ command is a powerful tool for understanding your system’s boot process and diagnosing issues. With these troubleshooting tips and considerations in mind, you’ll be well-equipped to use ‘dmesg’ effectively.

The Linux Kernel and Its Messaging System

The Linux kernel, the core part of any Linux system, is responsible for managing the system’s resources and providing services to other software. It communicates with the rest of the system through system messages.

System messages are logs that record events happening within the system. These could be routine operations, warnings, or error messages. The kernel uses these messages to communicate with system administrators, providing valuable information for troubleshooting and understanding the system’s behavior.

Understanding System Messages with ‘dmesg’

The ‘dmesg’ command is a tool that displays these system messages. It reads them from the kernel ring buffer, a special kind of data structure that stores the most recent messages.

When you run the ‘dmesg’ command, it displays the contents of this buffer. This is useful for diagnosing issues and understanding what’s happening in your system.

For example, let’s say you’ve just plugged in a USB device and want to check if the system has recognized it. You can use the ‘dmesg’ command to do this.

dmesg | tail

# Output:
# [Expected output showing that a USB device has been recognized]

The | tail part of the command limits the output to the last few lines, which are likely to contain the messages related to the USB device.

The Importance of System Messages in Linux

System messages are a vital part of Linux system administration. They provide insights into the system’s operations, helping administrators diagnose issues, understand system behavior, and even optimize performance.

By learning to use tools like ‘dmesg’, you can tap into this wealth of information and become a more effective Linux user or administrator.

The Relevance of System Messages in System Administration and Troubleshooting

System messages are integral to Linux system administration and troubleshooting. They provide real-time updates on the state of the system, allowing administrators to pinpoint issues, understand system behavior, and optimize performance. Tools like ‘dmesg’ are essential for accessing and interpreting these messages.

For instance, suppose you’re experiencing system slowdowns. By using the ‘dmesg’ command, you can view the system messages and potentially identify the cause of the slowdown, such as a failing hardware component or a resource-hungry process.

dmesg | grep -i 'error'

# Output:
# [Expected output showing any error messages]

This command filters the ‘dmesg’ output to only show messages containing ‘error’, helping you quickly identify any problems.

Exploring Related Concepts: Syslog and Kernel Logging

Beyond ‘dmesg’, there are other tools and concepts related to system messages that are worth exploring. Two of these are ‘syslog’ and kernel logging.

‘Syslog’ is a standard for message logging, allowing applications to generate and store messages. It’s more flexible than ‘dmesg’, supporting remote logging and custom log formats.

Kernel logging, on the other hand, is a mechanism used by the Linux kernel to generate system messages. These messages are stored in the kernel ring buffer and can be accessed using ‘dmesg’.

Understanding these related concepts can provide a more comprehensive view of system messaging in Linux, enhancing your ability to manage and troubleshoot your system.

Further Resources for Mastering Linux System Messages

  1. The Linux System Logging Guide: A comprehensive guide to system logging in Linux, including ‘dmesg’, ‘syslog’, and more.

  2. The Linux Kernel Documentation: The official documentation for the Linux kernel, providing in-depth information about kernel logging and other topics.

  3. The Art of Command Line: A GitHub repository with practical tips for using the command line effectively, including how to use ‘dmesg’ and other tools.

Wrapping Up: Installing the ‘dmesg’ Command in Linux

In this comprehensive guide, we’ve explored the ins and outs of the ‘dmesg’ command in Linux, a powerful tool for viewing system messages and understanding your system’s boot process and kernel messages.

We began with the basics, learning how to install ‘dmesg’ on various Linux distributions and from the source code. We then delved into more advanced topics, such as installing different versions of ‘dmesg’ and understanding the output it produces. Along the way, we tackled common issues you might encounter when using ‘dmesg’, providing solutions to ensure you can effectively use this tool.

We also explored alternative approaches for viewing system messages, such as the ‘journalctl’ command, giving you a broader understanding of system message tools in Linux. Here’s a quick comparison of these methods:

dmesgSimple, available on all Linux systemsLimited filtering options
journalctlAdvanced filtering options, can view messages from previous bootsOnly available on systems with systemd

Whether you’re just starting out with Linux or you’re an experienced system administrator, we hope this guide has helped you master the ‘dmesg’ command and its alternatives.

Understanding system messages is a crucial part of Linux system administration, and with the knowledge you’ve gained from this guide, you’re well-equipped to use these messages to diagnose and resolve system issues. Happy troubleshooting!