As Linux becomes more mature, it is much less challenging to just use Linux, which used to be remembering tricky commands and finding rare apps to do probably common things. The new distros of Linux feel more and more like a convenient Window or Mac OS, containing all tools one might need to use on daily basis — Surfing, blogging, word processing, chatting, Remote Desktop, etc. Now maybe it's time to get start on a bit more challenging stuff — write some kernel extensions or modules to do something new or cool.
Thanks to the new updates in Linux Kernel 2.6, now the Linux system is both good for small embedded systems, and large servers. It features the well-known O(1) scheduling algorithm, the preemptive kernel, optimized virtual memory management, and more powerful file systems and hardware support.
These advances got me interested in Kernel programming, and thus I will collect some information which I think very useful here.
I can't claim that I am a kernel expert yet, but I think I did find it quite easy to pick it up. Here is some resources I found useful, and can quickly de-mystisfy the somehow scary world.
Practical tour to Linux Kernel
I made a separate page documenting the tours I made in exploring the Kernel.
Click -= HERE =- to open.
Example programs from Linux Device Drivers (updated for Linux Kernel 2.6.17)
Source tarball: ldd-examples-kernel-2.6.17.tar.gz
Individual examples: View
Websites
Linux Journal: http://www.linuxjournal.com/
KernelTrap (Linux news): http://kerneltrap.org/
Linux Gazette (Linux made more fun): http://linuxgazette.net
Linux Headquarters (Source/Docs): http://www.linuxhq.com/
Android Kernel Group: http://groups.google.com/group/android-kernel
References
Overview
- The Wonderful World of Linux 2.6: http://www.kniggit.net/wwol26.html
Kernel internals
- http://tldp.org/LDP/lki/lki.html (Booting, Process & interrupts, VFS, page cache, IPC)
- Linux Anatomy Articles by M. Tim Jones
- Linux Kernel - Scheduling: http://oreilly.com/catalog/linuxkernel/chapter/ch10.html#85347
- Understanding the Linux 2.6.8.1 CPU Scheduler http://joshaas.net/linux/linux_cpu_scheduler.pdf
Devices drivers
- The Linux Kernel Module Programming Guide: http://tldp.org/LDP/lkmpg/2.6/html/lkmpg.html
- Linux Device Drivers (2nd edition): http://www.xml.com/ldd/chapter/book/ (example code)
- Linux Device Drivers (3rd edition): http://lwn.net/Kernel/LDD3/
- Kernel 2.6 API changes: http://lwn.net/Articles/2.6-kernel-api/ (a must-read for the above LDD book)





