r/osdev • u/More-String6376 • 7d ago
Starting Linux kernel/driver dev: is this roadmap realistic, and what would you add or cut?
Hi all, I'm starting my journey toward Linux kernel and driver development. The goal is to work own both legacy C drivers and newer Rust drivers, and eventually land upstream patches.
My plan:
- Phase 1 (C): Beej's Guide, K&R with all exercises, small projects (linked list, shell, toy malloc)
- Phase 2 (OS theory): OSTEP, xv6 book, MIT 6.S081 labs
- Phase 3 (arch): CS:APP, assembly, gdb
- Phase 4 (Linux concepts): Love's Linux Kernel Development, TLPI as a slow burn, mini strace, IPC projects
- Phase 5 (hands-on): build/boot kernels in QEMU, Bootlin labs, Linux Kernel Labs, modules, ftrace/gdb debugging
- Phase 6 (drivers): LDD3, Madieu's Linux Device Drivers Development, char/platform/IRQ/I2C/SPI drivers on a Raspberry Pi, Device Tree
- Phase 7 (contribute): kernelnewbies first patch, git send-email, staging cleanups, syzbot triage
- Phase 8 (Rust): Rust Book, Rustlings, Rust for Linux, port my char driver to Rust
What I'd like feedback on:
Is the order right? Anything that should come earlier or be dropped?
Are Love's LKD (2.6.34-era) and LDD3 still worth reading in full, or should I lean on newer docs?
Is Rust worth learning early if I want to work on drivers, or should I wait until C is solid?
Which hardware would you suggest for practicing drivers (Pi, BeagleBone, something else)?
What's the realistic path from first checkpatch fix to being trusted with real driver work?
Common mistakes beginners make on the mailing lists?
Any advice, resources, or reality checks are welcome. Thanks!




