Linux Kernel Programming

Linux Kernel Programming Tutorial

Welcome to Linux Kernel Programming Tutorial , learninglinuxkernel.

learninglinuxkernel is a place for learning linux kernel development . This tutorial is primarily aimed towards beginners and intermediate developers. It is just a starting point towards learning linux kernel programming. Every chapter is written in an easy to understand language and supplied by proper examples. The examples are not worked out yet , I apologize for that. Very soon I will build and run the modules and then update the tutorial.

Chapter 1    Introduction to Linux Kernel

Introduction to different kernel components, basic concepts and linux kernel sources directory structure.

1.1    Linux Kernel Components
1.2    Linux Kernel Integration Design
1.3    Kernel Mode and Contexts
1.4    Linux Kernel Version Numbering
1.5    Linux Kernel Sources

 Chapter 2    Building Linux Kernel

Complete procedure of building kernel sources and installing the build image on your machine. 

2.1    Linux Kernel Configuration
2.2    Linux Kernel Compilation
2.3    Linux Kernel Installation
2.4    Linux Kernel Packaging
2.5    Linux Kernel Build and Install – An Example

Chapter 3         Linux Boot Process

Understanding all the steps involved in booting linux kernel.                          

3.1   Basic Input Output System or BIOS
3.2   Linux Kernel Boot Loader
3.3   BootStrap Tutorial
3.4   Kernel in Boot Process
3.5   Init Process

Chapter 4         Linux Kernel Module Programming

Writing , Building and Running  your first linux kernel module. Understanding kernel symbol table, module stacking and module parameters.

4.1    Writing First Module – Hello World !!
4.2    Building and Loading Kernel Module
4.3    Kernel Symbol Table and Exporting Symbols
4.4    Module Stacking and Writing Dependent Modules
4.5    Linux Kernel Module Parameters

Chapter 5        Your First Driver : Basic Char Driver

Basics of device drivers and writing your first linux device driver, a basic char deriver.

5.1    Major Categories
5.2    File System Interface
5.3    Writing a Character Driver
5.4    Exercise
5.5    Putting it all together, a basic char driver
5.6    Major Number and Minor Number
5.7    Writing Char Driver for Linux Kernel 2.6

Chapter 6    Debugging Techniques


Appendix 1.1    Linux Commands