Knowledge of the data structures used in the Linux kernel is a prerequisite to play around with the kernel source code. To know more about the various data structures used in the Linux kernel try the following links –
Tag: operating systems
udev: Modern Linux Device Management
There has been a change in the way devices are managed on Linux since kernel 2.6. Instead of having static device nodes, devices are managed dynamically in the userspace since the introduction of udev. It also provides persistent device naming irrespective of the order in which devices are connected to the system. A good article on various aspects, characteristics and advantages of udev.
JamesM's kernel development tutorials
An awesome tutorial to learn the kernel from James M
here (link down). Brief and to the point with excellent explanation and examples.
Another good resource on the Linux Kernel: Linux Kernel
If you are looking for a starting point: How To Get Started In Linux Development
Linux boot and other notes
Some good notes on Linux boot process, ARM development etc. Translated using Google translate:
Linux boot
Other articles:
Writing Linux daemon processes
A daemon is a program on Unix-like operating systems that runs continuously in the background (though not necessarily consuming heavy memory and CPU all the time), rather than under the direct control of a user, waiting to be activated by the occurrence of a specific event or condition. Examples of daemons are the pulseaudio sound server or X11 display server. Writing daemons on Linux is quite easy. Find some good tutorials those explain how to write daemons below:
Operating Systems and related topics
Lot of information on Operating Systems as well as in-depth coverage of many aspects related to them including hardware, filesystems –
- Motherboard Chipsets and the Memory Map
- Operating Systems
- Write Your Own Operating System
- Writing a simple operating system
More here.
gcc hacks in the Linux kernel
GCC (GNU Compiler Collection is a powerful collection of compilation related tools that supports various programming languages. Here are some features of GCC (C specific) used in the Linux kernel:
GCC hacks in the Linux kernel
A basic kernel
The post is moved here.
Write Linux device drivers
Some good tutorials on how to write Linux device drivers (some are old but good for concept-building nonetheless):
- Device Drivers @tldp.org
- Write a Linux Hardware Device Driver
- Introduction to Linux Device Drivers
- Writing a Linux Kernel Driver for an Unknown USB Device
- Writing a Linux device driver module for kernels 3.0 or 2.6 with udev
- Linux Kernel Driver Tutorial
- How to Write a Linux USB Device Driver
- Linux Loadable Kernel Module HOWTO
- Linux Device Drivers, 3rd Edition (PDF)
- Writing device drivers in Linux: A brief tutorial
- A Simple Block Driver for Linux Kernel 2.6.31
- Enhanced char driver
- The Linux Kernel Module Programming Guide
- Free Electrons Docs
- LFY Linux Device Driver Series
- Write your first Linux kernel module
The Free Electrons LXR (Linux Cross Reference) for referring the kernel source. However, I prefer ctags and cscope for lengthy source-code browsing sessions.