Kernel developement links
On this page I'll collect links relevant for kernel development. But note that the kernel is extremely fast moving target so that the information that was relevant for one kernel release might not be of some newer one. This is especially confusing with the new kernel versioning that, at first sight, might indicate that there are no deep changes in the code while there actually are. In particular, 2.6.x kernel series is very different between "minor" releases.
General sites
There are several sites that have lots of information about Linux kernel and I certainly recommend you to watch them regularly:
-
This is great site! You'll find there many pages describing different aspects of Linux kernel. Not only does it cover topics that are already in the kernel, but also development stuff that is still out of the tree.
This site is financed by subscription, and I recommend you to pay for it. Note that the subscription functions in such a way that new content is available only to subscribers for a first week, and then it's generally available. So, basically, you don't have to pay to use this site. But, as I said, and I'll repeat it, this is great site that is financed through the subscription, so pay it .
-
Site aimed for the information sharing between experienced kernel developers and kernel newbies. This site has information that helps new developers learn kernel programming. Two subprojects are specially interesting. Those are Kernel Janitors that lists simple janitorial projects. Those are simple projects suited for a new and inexperienced developers, e.g. cleaning and reformatting the code and a like. Then, there is Kernel Mentors whose purpose is to connect new developers and experienced. Finally, there is Kernel projects that lists simple and not so simple kernel projects that need menpower.
-
Primarily news oriented site.
LXR -- the Linux Cross Reference
This is a cross reference of the Linux kernel code. Believe me that, if you plan to do any development in the kernel, this will be the site you'll use very frequently.
Security
References by subsystem
The linux kernel is logically (and physically) divided into different subsystems. This is mandatory because there is no person in the world that could now every aspect of the Linux kernel. Thus, subsystems allow one to concentrate on a single aspect while abstracting away all the other details.
Kernel standard library
By kernel standard library I mean base functions and data structures used throughout the kernel. It is something like glibc for user applications. But since glibc can not be used in kernel, kernel has to provide it's own implementation.
Something about container_of macro used for processing structures linked in a lists or some other, similar, structures:
Networking
File systems
It might seem on the first sight that the file system development is a solved area and that there is nothing to be done. But, this is totally wrong perception of the current state of this subject. There are two main stream developments that make this very attractive development area. The first one is the fact that disk space is becoming cheaper and cheaper and that the file systems of the order of Tera byte, and even Peta byte, are not uncommon any more. The second development is the SSD, or solid state disks, that function on totally different basis than the current mechanical disks. The current file systems are not designed with this premises on mind which brings many problems. One, particularly painful, fact is that Sun released ZFS file system with it's Solaris 10 that is regarded by many as the most advanced file system currently in use.
btrfs (Hottopic)
As indicated, this is absolutely hot topic in the kernel development, and in particular, file system development. This file system is planned as the Linux's main file system in a near future and a direct answer to the Sun's ZFS. BTW, the development of this FS was started and was initially funded by Oracle.
Processes and scheduler
Anatomy of Linux process management
Memory management
Drivers
Performance
This is not subsystem in the Linux kernel, but it's certainly very interesting part of it. Again, Sun made breakthrough with it's DTrace framework which was, after initial introduction in Solaris 10, included in many other operating systems, e.g. MacOS X has it. But the Linux can not use this code because licences that OpenSolaris uses (CDDL) and Linux (GPL2) are mutually incompatible. It could be said that the lack of something similar in the Linux kernel is it's Achille's heel. There are several proposed substitutes for the Linux but none as good as the DTrace. BTW, for DTrace there are plenty of pages on the Internet, e.g. this one on OpenSolaris Web site. Also, one of the DTrace authors had a presentation in the Google which is video taped and available on the Internet.
User/kernel interface
This is not strictly speaking subsystem, but nevertheless I treat it separately for now.
Kernel Space - User Space Interfaces
Mailing lists
The mailing list, a.k.a. kernel mailing list
This is the primary, and extremely high volume, kernel development list. If you are a new kernel developer I would not recommend to subscribe to it because it will overwhelm you with the quantity of the mails and the information. You'll see this list referenced as LKLM in different discussions.