GNU/Linux – hardware drivers and firmware

System Architecture

GNU/Linux
Hardware & Drivers

GNU/Linux systems can usually detect hardware automatically during boot and load the required hardware drivers without manual user intervention.

Kernel
Drivers
Firmware
Terminal

Core Concepts

Driver vs. Firmware

In Linux, many hardware drivers are part of the Linux kernel or are loaded as kernel modules. These modules allow the operating system to communicate with devices such as network cards, graphics adapters, audio interfaces, storage controllers, and USB devices. It is important to understand the difference between a driver and firmware.

OS

The Driver

A driver is software running as part of the operating system, usually inside the Linux kernel or as a kernel module. It allows the operating system to control and communicate with the hardware.

HW

The Firmware

Firmware is low-level code or binary data used by the hardware device itself. Some devices need firmware to be loaded before they can work correctly. Stored under: /lib/firmware/

During boot or device initialization, a Linux driver may request the required firmware file and load it into the device.

Repositories

Open-Source & Proprietary

A large part of Linux hardware support is open-source and included directly in the Linux kernel. This is one of the reasons why many devices work automatically after installation. However, some hardware still requires proprietary or non-free firmware (e.g., Wi-Fi adapters, GPUs, Bluetooth devices).

Debian Approach

Debian keeps the base system strictly free and separates non-free firmware into a dedicated repository component called non-free-firmware.

Ubuntu Approach

Ubuntu separates packages into components such as main, universe, restricted, and multiverse. The restricted repo often contains proprietary drivers.

Ecosystem

Distributions & Flexibility

GNU/Linux is highly modular. The kernel, drivers, firmware packages, desktop environment, package manager and applications can vary between distributions. This gives the user a high level of control to choose exactly what fits their workflow.

Desktop Distributions

  • Ubuntu
  • Linux Mint
  • Debian
  • Fedora
  • openSUSE
  • Arch Linux / Manjaro / EndeavourOS

Server Distributions

  • Debian
  • Ubuntu Server
  • Rocky Linux / AlmaLinux
  • Fedora Server
  • openSUSE Leap

Unlike proprietary operating systems where many decisions are fixed by the vendor, GNU/Linux usually gives the user more control over the installed software, updates, and hardware support model. Note: Not every GNU/Linux distribution is 100% free software. Many practical desktop distributions offer proprietary firmware or drivers when required by the hardware.

Terminal

Useful Hardware Commands

Hardware & Modules

# Show PCI devices:
lspci

# Show USB devices:
lsusb

# Show hardware information:
sudo lshw

# Show loaded kernel modules:
lsmod

# Info about a specific module:
modinfo module_name

# Manually load a kernel module:
sudo modprobe module_name

# Remove a kernel module:
sudo modprobe -r module_name

Diagnostics & Logs

# Show kernel messages (diagnostics):
dmesg

# Filter for firmware-related info:
dmesg | grep -i firmware

# Filter for driver-related errors:
dmesg | grep -i error

# Show boot logs from systemd journal:
journalctl -b

# Show kernel messages from current boot:
journalctl -k -b

Troubleshooting

Checking Missing Firmware

If a device does not work after installation, check whether firmware is missing. Typical messages may mention that a firmware file could not be found under /lib/firmware/.

dmesg | grep -i firmware
journalctl -k -b | grep -i firmware

Debian Packages

Common firmware package names:

  • firmware-iwlwifi
  • firmware-amd-graphics
  • firmware-realtek
  • firmware-misc-nonfree
  • intel-microcode / amd64-microcode

Ubuntu Proprietary Drivers

Check and install recommended proprietary drivers:

# Check available drivers:
ubuntu-drivers devices

# Auto-install recommended drivers:
sudo ubuntu-drivers install

Conclusion

Practical Summary

GNU/Linux usually detects hardware automatically and loads the required drivers during boot. The strength of GNU/Linux is flexibility. The user can choose the distribution, desktop environment, package sources, kernel variant, installed services and applications according to the intended use.

Linux Kernel
Provides the core hardware driver model and essential open-source communication layers.
GNU/Linux Distros
Provide the complete operating system environment, package managers, and user tools.
Firmware Packages
Provide the low-level device binary code required by specific modern hardware components.

Komentáře jsou uzavřeny.