Curated References

Essential resources for Linux driver development, organized by topic.

Official Kernel Documentation

Core References

By Subsystem

Subsystem Documentation
Device Model Driver Model
Device Tree Devicetree
Block Layer Block
Network Networking
USB USB API
PCI PCI
I2C I2C
SPI SPI
GPIO GPIO
IIO Industrial I/O
RTC RTC
Regulator Regulator
Clock Clock Framework
PWM PWM
Watchdog Watchdog
HWMON Hardware Monitoring
LED LED
Power Management Power

Memory and DMA

Synchronization

Debugging and Testing

Development Process

Books

Title Notes
Linux Device Drivers, 3rd Edition Classic reference (covers 2.6, concepts still relevant). Free online
Linux Kernel Development (Robert Love) Excellent kernel internals overview
Essential Linux Device Drivers (Sreekrishnan Venkateswaran) Good subsystem coverage

Advanced Topics

Title Notes
Understanding the Linux Kernel (Bovet & Cesati) Deep kernel internals
Professional Linux Kernel Architecture (Mauerer) Comprehensive reference
Linux Kernel Networking (Rami Rosen) Network stack deep dive

Online Resources

Source Code Browsing

Mailing Lists and News

Tutorials and Guides

Tools

Development

| Tool | Purpose | |——|———| | checkpatch.pl | Code style checker | | sparse | Static analysis | | coccinelle | Semantic patching | | scripts/get_maintainer.pl | Find patch reviewers |

Testing

| Tool | Purpose | |——|———| | QEMU | Hardware emulation | | KUnit | Unit testing | | kselftest | Integration tests | | syzkaller | Fuzzing |

Debugging

| Tool | Purpose | |——|———| | dmesg | Kernel log viewer | | ftrace | Function/event tracing | | perf | Performance analysis | | crash | Crash dump analysis |

Specifications

Hardware Protocols

Device Tree

Kernel Versions

This guide targets Linux 6.6 LTS. Check kernel changelogs for API changes:

Getting Help

  1. Search first: Use Elixir to find existing drivers similar to yours
  2. Read the docs: Check docs.kernel.org for your subsystem
  3. Ask on IRC: #kernelnewbies on OFTC
  4. Mailing lists: Use get_maintainer.pl to find the right list
  5. Stack Exchange: Unix & Linux Stack Exchange for general questions

Back to top

Linux Driver Development Guide is a community resource for learning kernel driver development. Not affiliated with the Linux Foundation. Content provided for educational purposes.

This site uses Just the Docs, a documentation theme for Jekyll.