Here are some good resources if you are interested in kernel
programming.
[Various]
[Filesystems]
[Module Programming]
[Device Programming]
[Networking]
[Security]
[Memory Management]
|
| Various |
Kernel Analysis HOWTO
This document tries to explain some things about the Linux Kernel,
such as the most important components, how they work, and so on. This
HOWTO should help prevent the reader from needing to browse all the
kernel source files searching for the "right function", declaration,
and definition, and then linking each to the other.
|
The Linux Kernel
This book is for Linux enthusiasts who want to know how the Linux
kernel works. It is not an internals manual. Rather it describes the
principles and mechanisms that Linux uses; how and why the Linux
kernel works the way that it does.
|
Kernel Newbies
A good place to start if you are new to kernel programming. They also
run the IRC channel #kernelnewbies which you can reach at irc.kernelnewbies.org.
|
Kernel Traffic
Kernel Traffic is a weekly summary of what is going on in the
linux-kernel mailing-list. Very nice if you want to see where development is
going, but dont wish to subscribe to that mailing-list (which is very high-traffic)
|
Official Linux Kernel-Docs
Various documents on kernel programming
|
Unreliable Guide To Hacking The Linux Kernel
This document describes the common routines and general requirements
for kernel code: its goal is to serve as a primer for Linux kernel
development for experienced C programmers.
|
Linux 2.4.x Initialization for IA-32
This document is a description of the Linux 2.4 kernel initialization
sequence on IA-32 processors.
|
Linux Kernel 2.4 Internals
Introduction to the Linux 2.4 kernel.
|
Cross-Referencing Linux
Easy browsing of the linux kernel code
|
User-mode Linux
User-Mode Linux is a safe, secure way of running Linux versions and
Linux processes. Run buggy software, experiment with new Linux kernels
or distributions, and poke around in the internals of Linux, all
without risking your main Linux setup.
|
Yet Another HOWTO Add a Syscall to Linux
This is a short, quick example of how to add a system call to
Linux for x86. This example is specific to Linux version
2.4.18 but it should be easy to modify the patch to work with
other kernel versions.
|
Linux System Call Table
This page lists the system calls for the Linux 2.2
kernel. It could also be thought of as an API for the interface
between user space and kernel space.
|
| Filesystems |
The Second Extended Filesystem
Covers Linux filesystems history, ext2 features, design, physical
structure on disk etc. It is written by three of the top ext2 hackers,
and is a must read!
|
Overview of the Virtual File System
Brief introduction to the Linux Virtual File System. What is it, how it works, operations
taken when opening a file or mounting a file system and description of
important data structures explaining the purpose of each of their
entries.
|
A Dual-Disk File System: ext4
This paper presents the design and implementation of a Unix-compatible
file system, ext4, which uses two disk partitions to store its
data. One partition is used exclusively for directory-related
information, and one partition for ordinary files.
|
|
| Module programming |
Linux Kernel Module Programming
A bit dated, but an excellent guide for anyone wishing to get started
on kernel module programming.
|
(nearly) Complete Linux Loadable Kernel Modules
Another guide on kernel module programming, with focus on security
|
| Devices |
Linux Device Drivers, 2nd Edition
Online version of an excellent book by Alessandro Rubini & Jonathan
Corbet on how to write device drivers.
|
Writing a Linux device driver
Quick primer on device driver programming.
|
Linux SCSI Generic (sg) HOWTO
This HOWTO describes the SCSI Generic driver (sg) found in the Linux
2.4 production series of kernels.
|
Programming Guide for Linux USB Device Drivers
This document should give detailed information about the current state
of the USB subsystem and its API for USB device drivers. You will learn about
different types of devices and their properties. Going into detail you
will see how USB devices communicate on the bus. There is an overview
of the Linux USB subsystem and the device driver framework. Then the
API and its data structures will be explained step by step.
|
| Networking |
Linux netfilter Hacking HOWTO
This document describes the netfilter architecture for Linux, how to
hack it, and some of the major systems which sit on top of it, such as
packet filtering, connection tracking and Network Address
Translation.
|
The journey of a packet through the linux 2.4 network stack
This document describes the journey of a network packet inside the
linux kernel 2.4.x. This has changed drastically since 2.2 because the
globally serialized bottom half was abandoned in favor of the new
softirq system.
|
Netfilter connection tracking and nat helper modules
This document gives a brief description how to write netfilter
connection tracking helper and nat helper modules. Netfilter is the
packet filtering / NAT infrastructure provided by the Linux 2.4.x
kernel.
|
skb - Linux network buffers
Short description about the linux network buffers (skb's)
|
Building into the Linux Network Layer
Phrack article that points out interesting things that can be done
using Kernel Modules in the Network Layer. Like most Phrack articles
it is very interesting reading, especially if you are interested in
security.
|
|
| Security |
Weakening the Linux Kernel
Yet another excellent Phrack article. This one is about modifying
system calls, Kernel Module hiding etc. Interesting security issue, if
your kernel allows module usage. Mainly focus on the 2.0.x kernel series
|
Hardening the Linux Kernel
This article covers a few areas of potential insecurity in the Linux OS
and attempts to improve upon them. It contains several security related
kernel patches for the 2.0.x kernels.
|
Writing Linux Kernel Keylogger
This article begin by describing how the linux keyboard driver work, and discusses
methods that can be used to create a kernel based keylogger. It then
presents a smart, kernel-based linux keylogger.
|
|
| Memory Management |
Linux MM
This site is supposed to provide full documentation on the Linux MM
subsystem and to give a good overview of what's happening in the Linux
MM community.
|
Rik van Riel lectures
Very good texts on various aspects of memory management
|
Linux 2.4 Virtual Memory Overview
On this page you can find some studies of Linux 2.4 VM
system. This page was created to help us out to visualize VM system
better.
|
Outline of the Linux Memory Management System
These pages contain notes on the Linux memory-management system.
|