Google
 

Monday, March 12, 2007

Here are some good resources if you are interested in kernel programming

REF:http://www.linuxhq.com/lkprogram.html#filesystem

    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.


--
Happy day, happy life!

No comments: