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