Start with the Documentation in /usr/src/linux*/Documentation.
Then perhaps, focus on a single sub-system, or driver. What you focus on somewhat depends upon your interest areas: low-level hardware initialization, fault and interrupt code, networking, file systems, virtual memory and memory management, etc. The kernel is too big to handle all at once, so you have to pick an area. The closer you are to the hardware, the more you have to learn about various hardware architectures. And a focus on networking would require a solid understanding of TCP/IP overall.
There are several good books about the kernel and device drivers.
Hope this helps a little.
|