Linux 2.6.19.7
[linux-2.6/suspend2-2.6.19.git] / Documentation / kernel-docs.txt
blobb53bccbd97270f37871964fda6ba46b0f706365a
2        Index of Documentation for People Interested in Writing and/or
3                                       
4                       Understanding the Linux Kernel.
5                                       
6                Juan-Mariano de Goyeneche <jmseyas@dit.upm.es>
7                                       
8 /*
9  * The latest version of this document may be found at:
10  *   http://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html
11  */
13    The need for a document like this one became apparent in the
14    linux-kernel mailing list as the same questions, asking for pointers
15    to information, appeared again and again.
16    
17    Fortunately, as more and more people get to GNU/Linux, more and more
18    get interested in the Kernel. But reading the sources is not always
19    enough. It is easy to understand the code, but miss the concepts, the
20    philosophy and design decisions behind this code.
21    
22    Unfortunately, not many documents are available for beginners to
23    start. And, even if they exist, there was no "well-known" place which
24    kept track of them. These lines try to cover this lack. All documents
25    available on line known by the author are listed, while some reference
26    books are also mentioned.
27    
28    PLEASE, if you know any paper not listed here or write a new document,
29    send me an e-mail, and I'll include a reference to it here. Any
30    corrections, ideas or comments are also welcomed.
31    
32    The papers that follow are listed in no particular order. All are
33    cataloged with the following fields: the document's "Title", the
34    "Author"/s, the "URL" where they can be found, some "Keywords" helpful
35    when searching for specific topics, and a brief "Description" of the
36    Document.
37    
38    Enjoy!
39    
40      ON-LINE DOCS:
41        
42      * Title: "Linux Device Drivers, Third Edition"
43        Author: Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
44        URL: http://lwn.net/Kernel/LDD3/
45        Description: A 600-page book covering the (2.6.10) driver
46        programming API and kernel hacking in general.  Available under the
47        Creative Commons Attribution-ShareAlike 2.0 license.
49      * Title: "The Linux Kernel"
50        Author: David A. Rusling.
51        URL: http://www.tldp.org/LDP/tlk/tlk.html
52        Keywords: everything!, book.
53        Description: On line, 200 pages book describing most aspects of
54        the Linux Kernel. Probably, the first reference for beginners.
55        Lots of illustrations explaining data structures use and
56        relationships in the purest Richard W. Stevens' style. Contents:
57        "1.-Hardware Basics, 2.-Software Basics, 3.-Memory Management,
58        4.-Processes, 5.-Interprocess Communication Mechanisms, 6.-PCI,
59        7.-Interrupts and Interrupt Handling, 8.-Device Drivers, 9.-The
60        File system, 10.-Networks, 11.-Kernel Mechanisms, 12.-Modules,
61        13.-The Linux Kernel Sources, A.-Linux Data Structures, B.-The
62        Alpha AXP Processor, C.-Useful Web and FTP Sites, D.-The GNU
63        General Public License, Glossary". In short: a must have.
64        
65      * Title: "The Linux Kernel Hackers' Guide"
66        Author: Michael K.Johnson and others.
67        URL: http://www.tldp.org/LDP/khg/HyperNews/get/khg.html
68        Keywords: everything!
69        Description: No more Postscript book-like version. Only HTML now.
70        Many people have contributed. The interface is similar to web
71        available mailing lists archives. You can find some articles and
72        then some mails asking questions about them and/or complementing
73        previous contributions. A little bit anarchic in this aspect, but
74        with some valuable information in some cases.
75        
76      * Title: "Conceptual Architecture of the Linux Kernel"
77        Author: Ivan T. Bowman.
78        URL: http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a1.html
79        Keywords: conceptual software arquitecture, extracted design,
80        reverse engineering, system structure.
81        Description: Conceptual software arquitecture of the Linux kernel,
82        automatically extracted from the source code. Very detailed. Good
83        figures. Gives good overall kernel understanding.
84        
85      * Title: "Concrete Architecture of the Linux Kernel"
86        Author: Ivan T. Bowman, Saheem Siddiqi, and Meyer C. Tanuan.
87        URL: http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a2.html
88        Keywords: concrete arquitecture, extracted design, reverse
89        engineering, system structure, dependencies.
90        Description: Concrete arquitecture of the Linux kernel,
91        automatically extracted from the source code. Very detailed. Good
92        figures. Gives good overall kernel understanding. This papers
93        focus on lower details than its predecessor (files, variables...).
94        
95      * Title: "Linux as a Case Study: Its Extracted Software
96        Architecture"
97        Author: Ivan T. Bowman, Richard C. Holt and Neil V. Brewster.
98        URL: http://plg.uwaterloo.ca/~itbowman/papers/linuxcase.html
99        Keywords: software architecture, architecture recovery,
100        redocumentation.
101        Description: Paper appeared at ICSE'99, Los Angeles, May 16-22,
102        1999. A mixture of the previous two documents from the same
103        author.
104        
105      * Title: "Overview of the Virtual File System"
106        Author: Richard Gooch.
107        URL: http://www.atnf.csiro.au/~rgooch/linux/vfs.txt
108        Keywords: VFS, File System, mounting filesystems, opening files,
109        dentries, dcache.
110        Description: Brief introduction to the Linux Virtual File System.
111        What is it, how it works, operations taken when opening a file or
112        mounting a file system and description of important data
113        structures explaining the purpose of each of their entries.
114        
115      * Title: "The Linux RAID-1, 4, 5 Code"
116        Author: Ingo Molnar, Gadi Oxman and Miguel de Icaza.
117        URL: http://www2.linuxjournal.com/lj-issues/issue44/2391.html
118        Keywords: RAID, MD driver.
119        Description: Linux Journal Kernel Korner article. Here is it's
120        abstract: "A description of the implementation of the RAID-1,
121        RAID-4 and RAID-5 personalities of the MD device driver in the
122        Linux kernel, providing users with high performance and reliable,
123        secondary-storage capability using software".
124        
125      * Title: "Dynamic Kernels: Modularized Device Drivers"
126        Author: Alessandro Rubini.
127        URL: http://www2.linuxjournal.com/lj-issues/issue23/1219.html
128        Keywords: device driver, module, loading/unloading modules,
129        allocating resources.
130        Description: Linux Journal Kernel Korner article. Here is it's
131        abstract: "This is the first of a series of four articles
132        co-authored by Alessandro Rubini and Georg Zezchwitz which present
133        a practical approach to writing Linux device drivers as kernel
134        loadable modules. This installment presents an introduction to the
135        topic, preparing the reader to understand next month's
136        installment".
137        
138      * Title: "Dynamic Kernels: Discovery"
139        Author: Alessandro Rubini.
140        URL: http://www2.linuxjournal.com/lj-issues/issue24/1220.html
141        Keywords: character driver, init_module, clean_up module,
142        autodetection, mayor number, minor number, file operations,
143        open(), close().
144        Description: Linux Journal Kernel Korner article. Here is it's
145        abstract: "This article, the second of four, introduces part of
146        the actual code to create custom module implementing a character
147        device driver. It describes the code for module initialization and
148        cleanup, as well as the open() and close() system calls".
149        
150      * Title: "The Devil's in the Details"
151        Author: Georg v. Zezschwitz and Alessandro Rubini.
152        URL: http://www2.linuxjournal.com/lj-issues/issue25/1221.html
153        Keywords: read(), write(), select(), ioctl(), blocking/non
154        blocking mode, interrupt handler.
155        Description: Linux Journal Kernel Korner article. Here is it's
156        abstract: "This article, the third of four on writing character
157        device drivers, introduces concepts of reading, writing, and using
158        ioctl-calls".
159        
160      * Title: "Dissecting Interrupts and Browsing DMA"
161        Author: Alessandro Rubini and Georg v. Zezschwitz.
162        URL: http://www2.linuxjournal.com/lj-issues/issue26/1222.html
163        Keywords: interrupts, irqs, DMA, bottom halves, task queues.
164        Description: Linux Journal Kernel Korner article. Here is it's
165        abstract: "This is the fourth in a series of articles about
166        writing character device drivers as loadable kernel modules. This
167        month, we further investigate the field of interrupt handling.
168        Though it is conceptually simple, practical limitations and
169        constraints make this an ``interesting'' part of device driver
170        writing, and several different facilities have been provided for
171        different situations. We also investigate the complex topic of
172        DMA".
173        
174      * Title: "Device Drivers Concluded"
175        Author: Georg v. Zezschwitz.
176        URL: http://www2.linuxjournal.com/lj-issues/issue28/1287.html
177        Keywords: address spaces, pages, pagination, page management,
178        demand loading, swapping, memory protection, memory mapping, mmap,
179        virtual memory areas (VMAs), vremap, PCI.
180        Description: Finally, the above turned out into a five articles
181        series. This latest one's introduction reads: "This is the last of
182        five articles about character device drivers. In this final
183        section, Georg deals with memory mapping devices, beginning with
184        an overall description of the Linux memory management concepts".
185        
186      * Title: "Network Buffers And Memory Management"
187        Author: Alan Cox.
188        URL: http://www2.linuxjournal.com/lj-issues/issue30/1312.html
189        Keywords: sk_buffs, network devices, protocol/link layer
190        variables, network devices flags, transmit, receive,
191        configuration, multicast.
192        Description: Linux Journal Kernel Korner. Here is the abstract:
193        "Writing a network device driver for Linux is fundamentally
194        simple---most of the complexity (other than talking to the
195        hardware) involves managing network packets in memory".
196        
197      * Title: "Writing Linux Device Drivers"
198        Author: Michael K. Johnson.
199        URL: http://users.evitech.fi/~tk/rtos/writing_linux_device_d.html
200        Keywords: files, VFS, file operations, kernel interface, character
201        vs block devices, I/O access, hardware interrupts, DMA, access to
202        user memory, memory allocation, timers.
203        Description: Introductory 50-minutes (sic) tutorial on writing
204        device drivers. 12 pages written by the same author of the "Kernel
205        Hackers' Guide" which give a very good overview of the topic.
206        
207      * Title: "The Venus kernel interface"
208        Author: Peter J. Braam.
209        URL:
210        http://www.coda.cs.cmu.edu/doc/html/kernel-venus-protocol.html
211        Keywords: coda, filesystem, venus, cache manager.
212        Description: "This document describes the communication between
213        Venus and kernel level file system code needed for the operation
214        of the Coda filesystem. This version document is meant to describe
215        the current interface (version 1.0) as well as improvements we
216        envisage".
217        
218      * Title: "Programming PCI-Devices under Linux"
219        Author: Claus Schroeter.
220        URL:
221        ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/pcip.ps
222        .gz
223        Keywords: PCI, device, busmastering.
224        Description: 6 pages tutorial on PCI programming under Linux.
225        Gives the basic concepts on the architecture of the PCI subsystem,
226        as long as basic functions and macros to read/write the devices
227        and perform busmastering.
228        
229      * Title: "Writing Character Device Driver for Linux"
230        Author: R. Baruch and C. Schroeter.
231        URL:
232        ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/drivers
233        .ps.gz
234        Keywords: character device drivers, I/O, signals, DMA, accessing
235        ports in user space, kernel environment.
236        Description: 68 pages paper on writing character drivers. A little
237        bit old (1.993, 1.994) although still useful.
238        
239      * Title: "Design and Implementation of the Second Extended
240        Filesystem"
241        Author: RĆ©my Card, Theodore Ts'o, Stephen Tweedie.
242        URL: http://web.mit.edu/tytso/www/linux/ext2intro.html
243        Keywords: ext2, linux fs history, inode, directory, link, devices,
244        VFS, physical structure, performance, benchmarks, ext2fs library,
245        ext2fs tools, e2fsck.
246        Description: Paper written by three of the top ext2 hackers.
247        Covers Linux filesystems history, ext2 motivation, ext2 features,
248        design, physical structure on disk, performance, benchmarks,
249        e2fsck's passes description... A must read!
250        Notes: This paper was first published in the Proceedings of the
251        First Dutch International Symposium on Linux, ISBN 90-367-0385-9.
252        
253      * Title: "Analysis of the Ext2fs structure"
254        Author: Louis-Dominique Dubeau.
255        URL: http://step.polymtl.ca/~ldd/ext2fs/ext2fs_toc.html
256        Keywords: ext2, filesystem, ext2fs.
257        Description: Description of ext2's blocks, directories, inodes,
258        bitmaps, invariants...
259        
260      * Title: "Journaling the Linux ext2fs Filesystem"
261        Author: Stephen C. Tweedie.
262        URL:
263        ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/journal-design.ps.gz
264        Keywords: ext3, journaling.
265        Description: Excellent 8-pages paper explaining the journaling
266        capabilities added to ext2 by the author, showing different
267        problems faced and the alternatives chosen.
268        
269      * Title: "Kernel API changes from 2.0 to 2.2"
270        Author: Richard Gooch.
271        URL:
272        http://www.atnf.csiro.au/~rgooch/linux/docs/porting-to-2.2.html
273        Keywords: 2.2, changes.
274        Description: Kernel functions/structures/variables which changed
275        from 2.0.x to 2.2.x.
276        
277      * Title: "Kernel API changes from 2.2 to 2.4"
278        Author: Richard Gooch.
279        URL:
280        http://www.atnf.csiro.au/~rgooch/linux/docs/porting-to-2.4.html
281        Keywords: 2.4, changes.
282        Description: Kernel functions/structures/variables which changed
283        from 2.2.x to 2.4.x.
284        
285      * Title: "Linux Kernel Module Programming Guide"
286        Author: Ori Pomerantz.
287        URL: http://tldp.org/LDP/lkmpg/2.6/html/index.html
288        Keywords: modules, GPL book, /proc, ioctls, system calls,
289        interrupt handlers .
290        Description: Very nice 92 pages GPL book on the topic of modules
291        programming. Lots of examples.
292        
293      * Title: "I/O Event Handling Under Linux"
294        Author: Richard Gooch.
295        URL: http://www.atnf.csiro.au/~rgooch/linux/docs/io-events.html
296        Keywords: IO, I/O, select(2), poll(2), FDs, aio_read(2), readiness
297        event queues.
298        Description: From the Introduction: "I/O Event handling is about
299        how your Operating System allows you to manage a large number of
300        open files (file descriptors in UNIX/POSIX, or FDs) in your
301        application. You want the OS to notify you when FDs become active
302        (have data ready to be read or are ready for writing). Ideally you
303        want a mechanism that is scalable. This means a large number of
304        inactive FDs cost very little in memory and CPU time to manage".
305        
306      * Title: "The Kernel Hacking HOWTO"
307        Author: Various Talented People, and Rusty.
308        Location: in kernel tree, Documentation/DocBook/kernel-hacking/
309        (must be built as "make {htmldocs | psdocs | pdfdocs})
310        Keywords: HOWTO, kernel contexts, deadlock, locking, modules,
311        symbols, return conventions.
312        Description: From the Introduction: "Please understand that I
313        never wanted to write this document, being grossly underqualified,
314        but I always wanted to read it, and this was the only way. I
315        simply explain some best practices, and give reading entry-points
316        into the kernel sources. I avoid implementation details: that's
317        what the code is for, and I ignore whole tracts of useful
318        routines. This document assumes familiarity with C, and an
319        understanding of what the kernel is, and how it is used. It was
320        originally written for the 2.3 kernels, but nearly all of it
321        applies to 2.2 too; 2.0 is slightly different".
322        
323      * Title: "Writing an ALSA Driver"
324        Author: Takashi Iwai <tiwai@suse.de>
325        URL: http://www.alsa-project.org/~iwai/writing-an-alsa-driver/index.html
326        Keywords: ALSA, sound, soundcard, driver, lowlevel, hardware.
327        Description: Advanced Linux Sound Architecture for developers,
328        both at kernel and user-level sides. ALSA is the Linux kernel
329        sound architecture in the 2.6 kernel version.
330        
331      * Title: "Programming Guide for Linux USB Device Drivers"
332        Author: Detlef Fliegl.
333        URL: http://usb.in.tum.de/usbdoc/
334        Keywords: USB, universal serial bus.
335        Description: A must-read. From the Preface: "This document should
336        give detailed information about the current state of the USB
337        subsystem and its API for USB device drivers. The first section
338        will deal with the basics of USB devices. You will learn about
339        different types of devices and their properties. Going into detail
340        you will see how USB devices communicate on the bus. The second
341        section gives an overview of the Linux USB subsystem [2] and the
342        device driver framework. Then the API and its data structures will
343        be explained step by step. The last section of this document
344        contains a reference of all API calls and their return codes".
345        Notes: Beware: the main page states: "This document may not be
346        published, printed or used in excerpts without explicit permission
347        of the author". Fortunately, it may still be read...
348        
349      * Title: "Tour Of the Linux Kernel Source"
350        Author: Vijo Cherian.
351        URL: http://www.geocities.com/vijoc/tolks/tolks.html
352        Keywords: .
353        Description: A classic of this page! Was lost for a while and is
354        back again. Thanks Vijo! TOLKS: the name says it all. A tour of
355        the sources, describing directories, files, variables, data
356        structures... It covers general stuff, device drivers,
357        filesystems, IPC and Networking Code.
358        
359      * Title: "Linux Kernel Mailing List Glossary"
360        Author: various
361        URL: http://kernelnewbies.org/glossary/
362        Keywords: glossary, terms, linux-kernel.
363        Description: From the introduction: "This glossary is intended as
364        a brief description of some of the acronyms and terms you may hear
365        during discussion of the Linux kernel".
366        
367      * Title: "Linux Kernel Locking HOWTO"
368        Author: Various Talented People, and Rusty.
369        Location: in kernel tree, Documentation/DocBook/kernel-locking/
370        (must be built as "make {htmldocs | psdocs | pdfdocs})
371        Keywords: locks, locking, spinlock, semaphore, atomic, race
372        condition, bottom halves, tasklets, softirqs.
373        Description: The title says it all: document describing the
374        locking system in the Linux Kernel either in uniprocessor or SMP
375        systems.
376        Notes: "It was originally written for the later (>2.3.47) 2.3
377        kernels, but most of it applies to 2.2 too; 2.0 is slightly
378        different". Freely redistributable under the conditions of the GNU
379        General Public License.
380        
381      * Title: "Porting Linux 2.0 Drivers To Linux 2.2: Changes and New
382        Features "
383        Author: Alan Cox.
384        URL: http://www.linux-mag.com/1999-05/gear_01.html
385        Keywords: ports, porting.
386        Description: Article from Linux Magazine on porting from 2.0 to
387        2.2 kernels.
388        
389      * Title: "Porting Device Drivers To Linux 2.2: part II"
390        Author: Alan Cox.
391        URL: http://www.linux-mag.com/1999-06/gear_01.html
392        Keywords: ports, porting.
393        Description: Second part on porting from 2.0 to 2.2 kernels.
394        
395      * Title: "How To Make Sure Your Driver Will Work On The Power
396        Macintosh"
397        Author: Paul Mackerras.
398        URL: http://www.linux-mag.com/1999-07/gear_01.html
399        Keywords: Mac, Power Macintosh, porting, drivers, compatibility.
400        Description: The title says it all.
401        
402      * Title: "An Introduction to SCSI Drivers"
403        Author: Alan Cox.
404        URL: http://www.linux-mag.com/1999-08/gear_01.html
405        Keywords: SCSI, device, driver.
406        Description: The title says it all.
407        
408      * Title: "Advanced SCSI Drivers And Other Tales"
409        Author: Alan Cox.
410        URL: http://www.linux-mag.com/1999-09/gear_01.html
411        Keywords: SCSI, device, driver, advanced.
412        Description: The title says it all.
413        
414      * Title: "Writing Linux Mouse Drivers"
415        Author: Alan Cox.
416        URL: http://www.linux-mag.com/1999-10/gear_01.html
417        Keywords: mouse, driver, gpm.
418        Description: The title says it all.
419        
420      * Title: "More on Mouse Drivers"
421        Author: Alan Cox.
422        URL: http://www.linux-mag.com/1999-11/gear_01.html
423        Keywords: mouse, driver, gpm, races, asynchronous I/O.
424        Description: The title still says it all.
425        
426      * Title: "Writing Video4linux Radio Driver"
427        Author: Alan Cox.
428        URL: http://www.linux-mag.com/1999-12/gear_01.html
429        Keywords: video4linux, driver, radio, radio devices.
430        Description: The title says it all.
431        
432      * Title: "Video4linux Drivers, Part 1: Video-Capture Device"
433        Author: Alan Cox.
434        URL: http://www.linux-mag.com/2000-01/gear_01.html
435        Keywords: video4linux, driver, video capture, capture devices,
436        camera driver.
437        Description: The title says it all.
438        
439      * Title: "Video4linux Drivers, Part 2: Video-capture Devices"
440        Author: Alan Cox.
441        URL: http://www.linux-mag.com/2000-02/gear_01.html
442        Keywords: video4linux, driver, video capture, capture devices,
443        camera driver, control, query capabilities, capability, facility.
444        Description: The title says it all.
445        
446      * Title: "PCI Management in Linux 2.2"
447        Author: Alan Cox.
448        URL: http://www.linux-mag.com/2000-03/gear_01.html
449        Keywords: PCI, bus, bus-mastering.
450        Description: The title says it all.
451        
452      * Title: "Linux 2.4 Kernel Internals"
453        Author: Tigran Aivazian and Christoph Hellwig.
454        URL: http://www.moses.uklinux.net/patches/lki.html
455        Keywords: Linux, kernel, booting, SMB boot, VFS, page cache.
456        Description: A little book used for a short training course.
457        Covers building the kernel image, booting (including SMP bootup),
458        process management, VFS and more.
459        
460      * Title: "Linux IP Networking. A Guide to the Implementation and
461        Modification of the Linux Protocol Stack."
462        Author: Glenn Herrin.
463        URL:
464        http://kernelnewbies.org/documents/ipnetworking/linuxipnetworking.
465        html
466        Keywords: network, networking, protocol, IP, UDP, TCP, connection,
467        socket, receiving, transmitting, forwarding, routing, packets,
468        modules, /proc, sk_buff, FIB, tags.
469        Description: Excellent paper devoted to the Linux IP Networking,
470        explaining anything from the kernel's to the user space
471        configuration tools' code. Very good to get a general overview of
472        the kernel networking implementation and understand all steps
473        packets follow from the time they are received at the network
474        device till they are delivered to applications. The studied kernel
475        code is from 2.2.14 version. Provides code for a working packet
476        dropper example.
477        
478      * Title: "Get those boards talking under Linux."
479        Author: Alex Ivchenko.
480        URL: http://www.edn.com/article/CA46968.html
481        Keywords: data-acquisition boards, drivers, modules, interrupts,
482        memory allocation.
483        Description: Article written for people wishing to make their data
484        acquisition boards work on their GNU/Linux machines. Gives a basic
485        overview on writing drivers, from the naming of functions to
486        interrupt handling.
487        Notes: Two-parts article. Part II is at
488        URL: http://www.edn.com/article/CA46998.html
489        
490      * Title: "Linux PCMCIA Programmer's Guide"
491        Author: David Hinds.
492        URL: http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-PROG.html
493        Keywords: PCMCIA.
494        Description: "This document describes how to write kernel device
495        drivers for the Linux PCMCIA Card Services interface. It also
496        describes how to write user-mode utilities for communicating with
497        Card Services.
498        
499      * Title: "The Linux Kernel NFSD Implementation"
500        Author: Neil Brown.
501        URL:
502        http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/nfsd.html
503        Keywords: knfsd, nfsd, NFS, RPC, lockd, mountd, statd.
504        Description: The title says it all.
505        Notes: Covers knfsd's version 1.4.7 (patch against 2.2.7 kernel).
506        
507      * Title: "A Linux vm README"
508        Author: Kanoj Sarcar.
509        URL: http://reality.sgi.com/kanoj_engr/vm229.html
510        Keywords: virtual memory, mm, pgd, vma, page, page flags, page
511        cache, swap cache, kswapd.
512        Description: Telegraphic, short descriptions and definitions
513        relating the Linux virtual memory implementation.
514        
515      * Title: "(nearly) Complete Linux Loadable Kernel Modules. The
516        definitive guide for hackers, virus coders and system
517        administrators."
518        Author: pragmatic/THC.
519        URL: http://packetstormsecurity.org/docs/hack/LKM_HACKING.html
520        Keywords: syscalls, intercept, hide, abuse, symbol table.
521        Description: Interesting paper on how to abuse the Linux kernel in
522        order to intercept and modify syscalls, make
523        files/directories/processes invisible, become root, hijack ttys,
524        write kernel modules based virus... and solutions for admins to
525        avoid all those abuses.
526        Notes: For 2.0.x kernels. Gives guidances to port it to 2.2.x
527        kernels.
528        
529      BOOKS: (Not on-line)
530    
531      * Title: "Linux Device Drivers"
532        Author: Alessandro Rubini.
533        Publisher: O'Reilly & Associates.
534        Date: 1998.
535        Pages: 439.
536        ISBN: 1-56592-292-1
537        
538      * Title: "Linux Device Drivers, 2nd Edition"
539        Author: Alessandro Rubini and Jonathan Corbet.
540        Publisher: O'Reilly & Associates.
541        Date: 2001.
542        Pages: 586.
543        ISBN: 0-59600-008-1
544        Notes: Further information in
545        http://www.oreilly.com/catalog/linuxdrive2/
547      * Title: "Linux Device Drivers, 3nd Edition"
548        Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman
549        Publisher: O'Reilly & Associates.
550        Date: 2005.
551        Pages: 636.
552        ISBN: 0-596-00590-3
553        Notes: Further information in
554        http://www.oreilly.com/catalog/linuxdrive3/
555        PDF format, URL: http://lwn.net/Kernel/LDD3/
557      * Title: "Linux Kernel Internals"
558        Author: Michael Beck.
559        Publisher: Addison-Wesley.
560        Date: 1997.
561        ISBN: 0-201-33143-8 (second edition)
562        
563      * Title: "The Design of the UNIX Operating System"
564        Author: Maurice J. Bach.
565        Publisher: Prentice Hall.
566        Date: 1986.
567        Pages: 471.
568        ISBN: 0-13-201757-1
569        
570      * Title: "The Design and Implementation of the 4.3 BSD UNIX
571        Operating System"
572        Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J.
573        Karels, John S. Quarterman.
574        Publisher: Addison-Wesley.
575        Date: 1989 (reprinted with corrections on October, 1990).
576        ISBN: 0-201-06196-1
577        
578      * Title: "The Design and Implementation of the 4.4 BSD UNIX
579        Operating System"
580        Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels,
581        John S. Quarterman.
582        Publisher: Addison-Wesley.
583        Date: 1996.
584        ISBN: 0-201-54979-4
585        
586      * Title: "Programmation Linux 2.0 API systeme et fonctionnement du
587        noyau"
588        Author: Remy Card, Eric Dumas, Franck Mevel.
589        Publisher: Eyrolles.
590        Date: 1997.
591        Pages: 520.
592        ISBN: 2-212-08932-5
593        Notes: French.
594        
595      * Title: "The Linux Kernel Book"
596        Author: Remy Card, Eric Dumas, Franck Mevel.
597        Publisher: John Wiley & Sons.
598        Date: 1998.
599        ISBN: 0-471-98141-9
600        Notes: English translation.
601        
602      * Title: "Linux 2.0"
603        Author: Remy Card, Eric Dumas, Franck Mevel.
604        Publisher: GestiĆ³n 2000.
605        Date: 1997.
606        Pages: 501.
607        ISBN: 8-480-88208-5
608        Notes: Spanish translation.
609        
610      * Title: "Unix internals -- the new frontiers"
611        Author: Uresh Vahalia.
612        Publisher: Prentice Hall.
613        Date: 1996.
614        Pages: 600.
615        ISBN: 0-13-101908-2
616        
617      * Title: "Linux Core Kernel Commentary. Guide to Insider's Knowledge
618        on the Core Kernel of the Linux Code"
619        Author: Scott Maxwell.
620        Publisher: Coriolis.
621        Date: 1999.
622        Pages: 592.
623        ISBN: 1-57610-469-9
624        Notes: CD-ROM included. Line by line commentary of the kernel
625        code.
626        
627      * Title: "Linux IP Stacks Commentary"
628        Author: Stephen Satchell and HBJ Clifford.
629        Publisher: Coriolis.
630        Date: 2000.
631        Pages: ???.
632        ISBN: 1-57610-470-2
633        Notes: Line by line source code commentary book.
634        
635      * Title: "Programming for the real world - POSIX.4"
636        Author: Bill O. Gallmeister.
637        Publisher: O'Reilly & Associates, Inc..
638        Date: 1995.
639        Pages: ???.
640        ISBN: I-56592-074-0
641        Notes: Though not being directly about Linux, Linux aims to be
642        POSIX. Good reference.
643        
644      * Title: "Understanding the Linux Kernel"
645        Author: Daniel P. Bovet and Marco Cesati.
646        Publisher: O'Reilly & Associates, Inc..
647        Date: 2000.
648        Pages: 702.
649        ISBN: 0-596-00002-2
650        Notes: Further information in
651        http://www.oreilly.com/catalog/linuxkernel/
652        
653      MISCELLANEOUS:
654    
655      * Name: linux/Documentation
656        Author: Many.
657        URL: Just look inside your kernel sources.
658        Keywords: anything, DocBook.
659        Description: Documentation that comes with the kernel sources,
660        inside the Documentation directory. Some pages from this document
661        (including this document itself) have been moved there, and might
662        be more up to date than the web version.
663        
664      * Name: "Linux Source Driver"
665        URL: http://lsd.linux.cz
666        Keywords: Browsing source code.
667        Description: "Linux Source Driver (LSD) is an application, which
668        can make browsing source codes of Linux kernel easier than you can
669        imagine. You can select between multiple versions of kernel (e.g.
670        0.01, 1.0.0, 2.0.33, 2.0.34pre13, 2.0.0, 2.1.101 etc.). With LSD
671        you can search Linux kernel (fulltext, macros, types, functions
672        and variables) and LSD can generate patches for you on the fly
673        (files, directories or kernel)".
674        
675      * Name: "Linux Kernel Source Reference"
676        Author: Thomas Graichen.
677        URL: http://innominate.org/~graichen/projects/lksr/
678        Keywords: CVS, web, cvsweb, browsing source code.
679        Description: Web interface to a CVS server with the kernel
680        sources. "Here you can have a look at any file of the Linux kernel
681        sources of any version starting from 1.0 up to the (daily updated)
682        current version available. Also you can check the differences
683        between two versions of a file".
684        
685      * Name: "Cross-Referencing Linux"
686        URL: http://lxr.linux.no/source/
687        Keywords: Browsing source code.
688        Description: Another web-based Linux kernel source code browser.
689        Lots of cross references to variables and functions. You can see
690        where they are defined and where they are used.
691        
692      * Name: "Linux Weekly News"
693        URL: http://lwn.net
694        Keywords: latest kernel news.
695        Description: The title says it all. There's a fixed kernel section
696        summarizing developers' work, bug fixes, new features and versions
697        produced during the week. Published every Thursday.
698        
699      * Name: "Kernel Traffic"
700        URL: http://www.kerneltraffic.org/kernel-traffic/
701        Keywords: linux-kernel mailing list, weekly kernel news.
702        Description: Weekly newsletter covering the most relevant
703        discussions of the linux-kernel mailing list.
704        
705      * Name: "CuTTiNG.eDGe.LiNuX"
706        URL: http://edge.kernelnotes.org
707        Keywords: changelist.
708        Description: Site which provides the changelist for every kernel
709        release. What's new, what's better, what's changed. Myrdraal reads
710        the patches and describes them. Pointers to the patches are there,
711        too.
712        
713      * Name: "New linux-kernel Mailing List FAQ"
714        URL: http://www.tux.org/lkml/
715        Keywords: linux-kernel mailing list FAQ.
716        Description: linux-kernel is a mailing list for developers to
717        communicate. This FAQ builds on the previous linux-kernel mailing
718        list FAQ maintained by Frohwalt Egerer, who no longer maintains
719        it. Read it to see how to join the mailing list. Dozens of
720        interesting questions regarding the list, Linux, developers (who
721        is ...?), terms (what is...?) are answered here too. Just read it.
722        
723      * Name: "Linux Virtual File System"
724        Author: Peter J. Braam.
725        URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs/
726        Keywords: slides, VFS, inode, superblock, dentry, dcache.
727        Description: Set of slides, presumably from a presentation on the
728        Linux VFS layer. Covers version 2.1.x, with dentries and the
729        dcache.
730        
731      * Name: "Gary's Encyclopedia - The Linux Kernel"
732        Author: Gary (I suppose...).
733        URL: http://members.aa.net/~swear/pedia/kernel.html
734        Keywords: links, not found here?.
735        Description: Gary's Encyclopedia exists to allow the rapid finding
736        of documentation and other information of interest to GNU/Linux
737        users. It has about 4000 links to external pages in 150 major
738        categories. This link is for kernel-specific links, documents,
739        sites... Look there if you could not find here what you were
740        looking for.
741        
742      * Name: "The home page of Linux-MM"
743        Author: The Linux-MM team.
744        URL: http://linux-mm.org/
745        Keywords: memory management, Linux-MM, mm patches, TODO, docs,
746        mailing list.
747        Description: Site devoted to Linux Memory Management development.
748        Memory related patches, HOWTOs, links, mm developers... Don't miss
749        it if you are interested in memory management development!
750        
751      * Name: "Kernel Newbies IRC Channel"
752        URL: http://www.kernelnewbies.org
753        Keywords: IRC, newbies, channel, asking doubts.
754        Description: #kernelnewbies on irc.openprojects.net. From the web
755        page: "#kernelnewbies is an IRC network dedicated to the 'newbie'
756        kernel hacker. The audience mostly consists of people who are
757        learning about the kernel, working on kernel projects or
758        professional kernel hackers that want to help less seasoned kernel
759        people. [...] #kernelnewbies is on the Open Projects IRC Network,
760        try irc.openprojects.net or irc.<country>.openprojects.net as your
761        server and then /join #kernelnewbies". It also hosts articles,
762        documents, FAQs...
763        
764      * Name: "linux-kernel mailing list archives and search engines"
765        URL: http://vger.kernel.org/vger-lists.html
766        URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html
767        URL: http://marc.theaimsgroup.com/?l=linux-kernel
768        URL: http://groups.google.com/group/mlist.linux.kernel
769        URL: http://www.cs.helsinki.fi/linux/linux-kernel/
770        URL: http://www.lib.uaa.alaska.edu/linux-kernel/
771        Keywords: linux-kernel, archives, search.
772        Description: Some of the linux-kernel mailing list archivers. If
773        you have a better/another one, please let me know.
774      _________________________________________________________________
775    
776    Document last updated on Sat 2005-NOV-19