Hacker News new | ask | show | jobs
by phendrenad2 1810 days ago
Kernel development is mostly 3 things: Adding & improving drivers (which require knowledge of how pieces of hardware work), adding & improving architecture support (which requires knowledge of CPU features), and adding & improving core kernel data structures & algorithms (eBPF being a recent example).

What all of these have in common is the C language (for now), the kernel coding style, the kernel data structures and algorithms (things like lists and locks, which serve as primitive building blocks for doing more advanced features), and the general layout of the kernel modules and subsystems within the codebase.

Personally I would recommend splitting your time between something you are trying to accomplish (perhaps adding a new syscall, or new hardware support), and general understanding of kernel development. So pick a goal and read about how to accomplish it (or read through code that was added that does that thing), and also read as much general information as you can (lWN, kernelnewbies, the LKML, etc.)

Picking a goal to accomplish doesn't have to be achievable, but doing the research will give you an anchor point for further context later.