How to Manage Devices with 'udevadm' in Linux (with examples)
- Linux
- December 17, 2024
The udevadm
command in Linux is a powerful tool used for managing device nodes in the /dev
directory. It is part of the Device Manager for the Linux kernel, known as udev
. This tool helps you monitor, query, and manipulate the device events and the rules applied to them. Understanding how to use udevadm
can aid system administrators in managing peripherals and other hardware on Linux systems efficiently.
Monitor all device events
Code:
sudo udevadm monitor
Motivation: Monitoring device events in real-time is crucial for diagnosing hardware issues or understanding exactly when devices are added or removed from the system. This command is particularly useful when you want to troubleshoot problems related to USB devices, storage, or any hardware connection.
Explanation:
sudo
: This command requires elevated permissions because it accesses sensitive parts of the system.udevadm
: This is the command-line utility for interacting withudev
.monitor
: This option enables the monitoring of device events detected by the system.
Example output:
KERNEL[3193.559704] add /devices/pci0000:00/0000:00:1a.0/usb1/1-1 (usb)
UDEV [3193.563051] add /devices/pci0000:00/0000:00:1a.0/usb1/1-1 (usb)
Print uevents
sent out by the kernel
Code:
sudo udevadm monitor --kernel
Motivation: By focusing specifically on kernel events, system administrators can gain insights into the raw events being emitted directly by the kernel. This is useful when debugging issues at the kernel level or understanding the initial event stages before udev
processes them.
Explanation:
sudo
: Executes the command with administrative privileges.udevadm
: The device management command.monitor
: Starts monitoring device events.--kernel
: Ensures only kernel-emitted events are printed.
Example output:
KERNEL[3201.948113] add /devices/pci0000:00/0000:00:1a.0/usb1/1-2 (usb)
Print device events after being processed by udev
Code:
sudo udevadm monitor --udev
Motivation: Understanding how udev
processes kernel events and applies rules to them is necessary for verifying correct rule application and event processing. This command is particularly useful if you have customized udev
rules and need to test if they are being executed as expected.
Explanation:
sudo
: Grants superuser permissions.udevadm
: Calls the device management tool.monitor
: Initiates monitoring of events.--udev
: Displays only events processed throughudev
.
Example output:
UDEV [3353.964821] add /devices/pci0000:00/0000:00:1a.0/usb1/1-3 (usb)
List attributes of device /dev/sda
Code:
sudo udevadm info --attribute-walk /dev/sda
Motivation: Listing device attributes provides comprehensive details about the hardware and its configuration. This is valuable for system administrators who need to verify device parameters or when creating custom udev
rules.
Explanation:
sudo
: Necessary to access deep system-level information.udevadm
: Command to interact withudev
.info
: Displays detailed information about devices.--attribute-walk
: Recursively lists all device attributes through the device hierarchy./dev/sda
: Specifies the particular device to query, in this case, the first hard drive.
Example output:
looking at parent device '/devices/...':
KERNELS=="pci0000:00"
SUBSYSTEMS=="pci"
DRIVERS==""
ATTRS{irq}=="10"
ATTRS{local_cpus}=="00000000"
Reload all udev
rules
Code:
sudo udevadm control --reload-rules
Motivation: After updating or creating new udev
rules, it’s essential to reload them for the changes to take effect. This command allows changes to be implemented without needing a system restart, which is crucial in environments where uptime is critical.
Explanation:
sudo
: Required to modify system configurations.udevadm
: Executes the device manager command.control
: Modifiesudev
control configurations.--reload-rules
: This option tellsudev
to reload the rules files and apply them.
Example output:
There is no direct output as this command modifies system settings silently unless an error occurs.
Trigger all udev
rules to run
Code:
sudo udevadm trigger
Motivation: After reloading rules, administrators can force udev
to re-evaluate all devices against the new rule set instantly. This is useful for applying changes across all devices immediately without rebooting.
Explanation:
sudo
: Used to perform system-sensitive actions.udevadm
: Command for device management.trigger
: Executes alludev
rules against devices, triggering them as if they have just been added.
Example output:
No immediate output; however, device changes will take effect and associated actions may start executing per the updated rules.
Test an event run by simulating loading of /dev/sda
Code:
sudo udevadm test /dev/sda
Motivation: Testing a device event without physically modifying the device setup is crucial for validating udev
rules safely. This simulated approach is beneficial for ensuring rules work correctly and won’t misfire in a live environment.
Explanation:
sudo
: Grants necessary permissions for testing system changes.udevadm
: The device interaction command.test
: Simulates runningudev
for a device to verify rule correctness./dev/sda
: The target device for the test, typically a hard disk drive.
Example output:
Starting 'test' on '/dev/sda'
Conclusion:
The udevadm
command is an essential utility for managing devices on Linux systems. By understanding its various use cases, system administrators can effectively monitor, configure, and troubleshoot hardware-related issues. Each use case provides a specific insight or control mechanism over how Linux handles device events, offering both diagnostic and operational advantages.