GNU/Linux
Hardware & Drivers
GNU/Linux systems can usually detect hardware automatically during boot and load the required hardware drivers without manual user intervention.
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.
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.
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/
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.
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.
Useful Hardware Commands
Hardware & Modules
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
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
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/.
journalctl -k -b | grep -i firmware
Debian Packages
Common firmware package names:
firmware-iwlwififirmware-amd-graphicsfirmware-realtekfirmware-misc-nonfreeintel-microcode/amd64-microcode
Ubuntu Proprietary Drivers
Check and install recommended proprietary drivers:
ubuntu-drivers devices
# Auto-install recommended drivers:
sudo ubuntu-drivers install
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.
Provides the core hardware driver model and essential open-source communication layers.
Provide the complete operating system environment, package managers, and user tools.
Provide the low-level device binary code required by specific modern hardware components.