blob: cb89fb3b61efd2862e399271ee0ee6d3f0cf8759 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001
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: "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.
48
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://people.redhat.com/johnsonm/devices.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://www.tldp.org/LDP/lkmpg/mpg.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: "Device File System (devfs) Overview"
294 Author: Richard Gooch.
295 URL: http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.txt
296 Keywords: filesystem, /dev, devfs, dynamic devices, major/minor
297 allocation, device management.
298 Description: Document describing Richard Gooch's controversial
299 devfs, which allows for dynamic devices, only shows present
300 devices in /dev, gets rid of major/minor numbers allocation
301 problems, and allows for hundreds of identical devices (which some
302 USB systems might demand soon).
303
304 * Title: "I/O Event Handling Under Linux"
305 Author: Richard Gooch.
306 URL: http://www.atnf.csiro.au/~rgooch/linux/docs/io-events.html
307 Keywords: IO, I/O, select(2), poll(2), FDs, aio_read(2), readiness
308 event queues.
309 Description: From the Introduction: "I/O Event handling is about
310 how your Operating System allows you to manage a large number of
311 open files (file descriptors in UNIX/POSIX, or FDs) in your
312 application. You want the OS to notify you when FDs become active
313 (have data ready to be read or are ready for writing). Ideally you
314 want a mechanism that is scalable. This means a large number of
315 inactive FDs cost very little in memory and CPU time to manage".
316
317 * Title: "The Kernel Hacking HOWTO"
318 Author: Various Talented People, and Rusty.
319 URL:
320 http://www.lisoleg.net/doc/Kernel-Hacking-HOWTO/kernel-hacking-HOW
321 TO.html
322 Keywords: HOWTO, kernel contexts, deadlock, locking, modules,
323 symbols, return conventions.
324 Description: From the Introduction: "Please understand that I
325 never wanted to write this document, being grossly underqualified,
326 but I always wanted to read it, and this was the only way. I
327 simply explain some best practices, and give reading entry-points
328 into the kernel sources. I avoid implementation details: that's
329 what the code is for, and I ignore whole tracts of useful
330 routines. This document assumes familiarity with C, and an
331 understanding of what the kernel is, and how it is used. It was
332 originally written for the 2.3 kernels, but nearly all of it
333 applies to 2.2 too; 2.0 is slightly different".
334
335 * Title: "ALSA 0.5.0 Developer documentation"
336 Author: Stephan 'Jumpy' Bartels .
337 URL: http://www.math.TU-Berlin.de/~sbartels/alsa/
338 Keywords: ALSA, sound, soundcard, driver, lowlevel, hardware.
339 Description: Advanced Linux Sound Architecture for developers,
340 both at kernel and user-level sides. Work in progress. ALSA is
341 supposed to be Linux's next generation sound architecture.
342
343 * Title: "Programming Guide for Linux USB Device Drivers"
344 Author: Detlef Fliegl.
345 URL: http://usb.in.tum.de/usbdoc/
346 Keywords: USB, universal serial bus.
347 Description: A must-read. From the Preface: "This document should
348 give detailed information about the current state of the USB
349 subsystem and its API for USB device drivers. The first section
350 will deal with the basics of USB devices. You will learn about
351 different types of devices and their properties. Going into detail
352 you will see how USB devices communicate on the bus. The second
353 section gives an overview of the Linux USB subsystem [2] and the
354 device driver framework. Then the API and its data structures will
355 be explained step by step. The last section of this document
356 contains a reference of all API calls and their return codes".
357 Notes: Beware: the main page states: "This document may not be
358 published, printed or used in excerpts without explicit permission
359 of the author". Fortunately, it may still be read...
360
361 * Title: "Tour Of the Linux Kernel Source"
362 Author: Vijo Cherian.
363 URL: http://www.geocities.com/vijoc/tolks/tolks.html
364 Keywords: .
365 Description: A classic of this page! Was lost for a while and is
366 back again. Thanks Vijo! TOLKS: the name says it all. A tour of
367 the sources, describing directories, files, variables, data
368 structures... It covers general stuff, device drivers,
369 filesystems, IPC and Networking Code.
370
371 * Title: "Linux Kernel Mailing List Glossary"
372 Author: John Levon.
373 URL: http://www.movement.uklinux.net/glossary.html
374 Keywords: glossary, terms, linux-kernel.
375 Description: From the introduction: "This glossary is intended as
376 a brief description of some of the acronyms and terms you may hear
377 during discussion of the Linux kernel".
378
379 * Title: "Linux Kernel Locking HOWTO"
380 Author: Various Talented People, and Rusty.
381 URL:
382 http://netfilter.kernelnotes.org/unreliable-guides/kernel-locking-
383 HOWTO.html
384 Keywords: locks, locking, spinlock, semaphore, atomic, race
385 condition, bottom halves, tasklets, softirqs.
386 Description: The title says it all: document describing the
387 locking system in the Linux Kernel either in uniprocessor or SMP
388 systems.
389 Notes: "It was originally written for the later (>2.3.47) 2.3
390 kernels, but most of it applies to 2.2 too; 2.0 is slightly
391 different". Freely redistributable under the conditions of the GNU
392 General Public License.
393
394 * Title: "Porting Linux 2.0 Drivers To Linux 2.2: Changes and New
395 Features "
396 Author: Alan Cox.
397 URL: http://www.linux-mag.com/1999-05/gear_01.html
398 Keywords: ports, porting.
399 Description: Article from Linux Magazine on porting from 2.0 to
400 2.2 kernels.
401
402 * Title: "Porting Device Drivers To Linux 2.2: part II"
403 Author: Alan Cox.
404 URL: http://www.linux-mag.com/1999-06/gear_01.html
405 Keywords: ports, porting.
406 Description: Second part on porting from 2.0 to 2.2 kernels.
407
408 * Title: "How To Make Sure Your Driver Will Work On The Power
409 Macintosh"
410 Author: Paul Mackerras.
411 URL: http://www.linux-mag.com/1999-07/gear_01.html
412 Keywords: Mac, Power Macintosh, porting, drivers, compatibility.
413 Description: The title says it all.
414
415 * Title: "An Introduction to SCSI Drivers"
416 Author: Alan Cox.
417 URL: http://www.linux-mag.com/1999-08/gear_01.html
418 Keywords: SCSI, device, driver.
419 Description: The title says it all.
420
421 * Title: "Advanced SCSI Drivers And Other Tales"
422 Author: Alan Cox.
423 URL: http://www.linux-mag.com/1999-09/gear_01.html
424 Keywords: SCSI, device, driver, advanced.
425 Description: The title says it all.
426
427 * Title: "Writing Linux Mouse Drivers"
428 Author: Alan Cox.
429 URL: http://www.linux-mag.com/1999-10/gear_01.html
430 Keywords: mouse, driver, gpm.
431 Description: The title says it all.
432
433 * Title: "More on Mouse Drivers"
434 Author: Alan Cox.
435 URL: http://www.linux-mag.com/1999-11/gear_01.html
436 Keywords: mouse, driver, gpm, races, asynchronous I/O.
437 Description: The title still says it all.
438
439 * Title: "Writing Video4linux Radio Driver"
440 Author: Alan Cox.
441 URL: http://www.linux-mag.com/1999-12/gear_01.html
442 Keywords: video4linux, driver, radio, radio devices.
443 Description: The title says it all.
444
445 * Title: "Video4linux Drivers, Part 1: Video-Capture Device"
446 Author: Alan Cox.
447 URL: http://www.linux-mag.com/2000-01/gear_01.html
448 Keywords: video4linux, driver, video capture, capture devices,
449 camera driver.
450 Description: The title says it all.
451
452 * Title: "Video4linux Drivers, Part 2: Video-capture Devices"
453 Author: Alan Cox.
454 URL: http://www.linux-mag.com/2000-02/gear_01.html
455 Keywords: video4linux, driver, video capture, capture devices,
456 camera driver, control, query capabilities, capability, facility.
457 Description: The title says it all.
458
459 * Title: "PCI Management in Linux 2.2"
460 Author: Alan Cox.
461 URL: http://www.linux-mag.com/2000-03/gear_01.html
462 Keywords: PCI, bus, bus-mastering.
463 Description: The title says it all.
464
465 * Title: "Linux 2.4 Kernel Internals"
466 Author: Tigran Aivazian and Christoph Hellwig.
467 URL: http://www.moses.uklinux.net/patches/lki.html
468 Keywords: Linux, kernel, booting, SMB boot, VFS, page cache.
469 Description: A little book used for a short training course.
470 Covers building the kernel image, booting (including SMP bootup),
471 process management, VFS and more.
472
473 * Title: "Linux IP Networking. A Guide to the Implementation and
474 Modification of the Linux Protocol Stack."
475 Author: Glenn Herrin.
476 URL:
477 http://kernelnewbies.org/documents/ipnetworking/linuxipnetworking.
478 html
479 Keywords: network, networking, protocol, IP, UDP, TCP, connection,
480 socket, receiving, transmitting, forwarding, routing, packets,
481 modules, /proc, sk_buff, FIB, tags.
482 Description: Excellent paper devoted to the Linux IP Networking,
483 explaining anything from the kernel's to the user space
484 configuration tools' code. Very good to get a general overview of
485 the kernel networking implementation and understand all steps
486 packets follow from the time they are received at the network
487 device till they are delivered to applications. The studied kernel
488 code is from 2.2.14 version. Provides code for a working packet
489 dropper example.
490
491 * Title: "Get those boards talking under Linux."
492 Author: Alex Ivchenko.
493 URL: http://www.ednmag.com/ednmag/reg/2000/06222000/13df2.htm
494 Keywords: data-acquisition boards, drivers, modules, interrupts,
495 memory allocation.
496 Description: Article written for people wishing to make their data
497 acquisition boards work on their GNU/Linux machines. Gives a basic
498 overview on writing drivers, from the naming of functions to
499 interrupt handling.
500 Notes: Two-parts article. Part II is at
501 http://www.ednmag.com/ednmag/reg/2000/07062000/14df.htm
502
503 * Title: "Linux PCMCIA Programmer's Guide"
504 Author: David Hinds.
505 URL: http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-PROG.html
506 Keywords: PCMCIA.
507 Description: "This document describes how to write kernel device
508 drivers for the Linux PCMCIA Card Services interface. It also
509 describes how to write user-mode utilities for communicating with
510 Card Services.
511
512 * Title: "The Linux Kernel NFSD Implementation"
513 Author: Neil Brown.
514 URL:
515 http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/nfsd.html
516 Keywords: knfsd, nfsd, NFS, RPC, lockd, mountd, statd.
517 Description: The title says it all.
518 Notes: Covers knfsd's version 1.4.7 (patch against 2.2.7 kernel).
519
520 * Title: "A Linux vm README"
521 Author: Kanoj Sarcar.
522 URL: http://reality.sgi.com/kanoj_engr/vm229.html
523 Keywords: virtual memory, mm, pgd, vma, page, page flags, page
524 cache, swap cache, kswapd.
525 Description: Telegraphic, short descriptions and definitions
526 relating the Linux virtual memory implementation.
527
528 * Title: "(nearly) Complete Linux Loadable Kernel Modules. The
529 definitive guide for hackers, virus coders and system
530 administrators."
531 Author: pragmatic/THC.
532 URL: http://packetstorm.securify.com/groups/thc/LKM_HACKING.html
533 Keywords: syscalls, intercept, hide, abuse, symbol table.
534 Description: Interesting paper on how to abuse the Linux kernel in
535 order to intercept and modify syscalls, make
536 files/directories/processes invisible, become root, hijack ttys,
537 write kernel modules based virus... and solutions for admins to
538 avoid all those abuses.
539 Notes: For 2.0.x kernels. Gives guidances to port it to 2.2.x
540 kernels. Also available in txt format at
541 http://www.blacknemesis.org/hacking/txt/cllkm.txt
542
543 BOOKS: (Not on-line)
544
545 * Title: "Linux Device Drivers"
546 Author: Alessandro Rubini.
547 Publisher: O'Reilly & Associates.
548 Date: 1998.
549 Pages: 439.
550 ISBN: 1-56592-292-1
551
552 * Title: "Linux Device Drivers, 2nd Edition"
553 Author: Alessandro Rubini and Jonathan Corbet.
554 Publisher: O'Reilly & Associates.
555 Date: 2001.
556 Pages: 586.
557 ISBN: 0-59600-008-1
558 Notes: Further information in
559 http://www.oreilly.com/catalog/linuxdrive2/
560
561 * Title: "Linux Kernel Internals"
562 Author: Michael Beck.
563 Publisher: Addison-Wesley.
564 Date: 1997.
565 ISBN: 0-201-33143-8 (second edition)
566
567 * Title: "The Design of the UNIX Operating System"
568 Author: Maurice J. Bach.
569 Publisher: Prentice Hall.
570 Date: 1986.
571 Pages: 471.
572 ISBN: 0-13-201757-1
573
574 * Title: "The Design and Implementation of the 4.3 BSD UNIX
575 Operating System"
576 Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J.
577 Karels, John S. Quarterman.
578 Publisher: Addison-Wesley.
579 Date: 1989 (reprinted with corrections on October, 1990).
580 ISBN: 0-201-06196-1
581
582 * Title: "The Design and Implementation of the 4.4 BSD UNIX
583 Operating System"
584 Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels,
585 John S. Quarterman.
586 Publisher: Addison-Wesley.
587 Date: 1996.
588 ISBN: 0-201-54979-4
589
590 * Title: "Programmation Linux 2.0 API systeme et fonctionnement du
591 noyau"
592 Author: Remy Card, Eric Dumas, Franck Mevel.
593 Publisher: Eyrolles.
594 Date: 1997.
595 Pages: 520.
596 ISBN: 2-212-08932-5
597 Notes: French.
598
599 * Title: "The Linux Kernel Book"
600 Author: Remy Card, Eric Dumas, Franck Mevel.
601 Publisher: John Wiley & Sons.
602 Date: 1998.
603 ISBN: 0-471-98141-9
604 Notes: English translation.
605
606 * Title: "Linux 2.0"
607 Author: Remy Card, Eric Dumas, Franck Mevel.
608 Publisher: GestiĆ³n 2000.
609 Date: 1997.
610 Pages: 501.
611 ISBN: 8-480-88208-5
612 Notes: Spanish translation.
613
614 * Title: "Unix internals -- the new frontiers"
615 Author: Uresh Vahalia.
616 Publisher: Prentice Hall.
617 Date: 1996.
618 Pages: 600.
619 ISBN: 0-13-101908-2
620
621 * Title: "Linux Core Kernel Commentary. Guide to Insider's Knowledge
622 on the Core Kernel of the Linux Code"
623 Author: Scott Maxwell.
624 Publisher: Coriolis.
625 Date: 1999.
626 Pages: 592.
627 ISBN: 1-57610-469-9
628 Notes: CD-ROM included. Line by line commentary of the kernel
629 code.
630
631 * Title: "Linux IP Stacks Commentary"
632 Author: Stephen Satchell and HBJ Clifford.
633 Publisher: Coriolis.
634 Date: 2000.
635 Pages: ???.
636 ISBN: 1-57610-470-2
637 Notes: Line by line source code commentary book.
638
639 * Title: "Programming for the real world - POSIX.4"
640 Author: Bill O. Gallmeister.
641 Publisher: O'Reilly & Associates, Inc..
642 Date: 1995.
643 Pages: ???.
644 ISBN: I-56592-074-0
645 Notes: Though not being directly about Linux, Linux aims to be
646 POSIX. Good reference.
647
648 * Title: "Understanding the Linux Kernel"
649 Author: Daniel P. Bovet and Marco Cesati.
650 Publisher: O'Reilly & Associates, Inc..
651 Date: 2000.
652 Pages: 702.
653 ISBN: 0-596-00002-2
654 Notes: Further information in
655 http://www.oreilly.com/catalog/linuxkernel/
656
657 MISCELLANEOUS:
658
659 * Name: linux/Documentation
660 Author: Many.
661 URL: Just look inside your kernel sources.
662 Keywords: anything, DocBook.
663 Description: Documentation that comes with the kernel sources,
664 inside the Documentation directory. Some pages from this document
665 (including this document itself) have been moved there, and might
666 be more up to date than the web version.
667
668 * Name: "Linux Source Driver"
669 URL: http://lsd.linux.cz
670 Keywords: Browsing source code.
671 Description: "Linux Source Driver (LSD) is an application, which
672 can make browsing source codes of Linux kernel easier than you can
673 imagine. You can select between multiple versions of kernel (e.g.
674 0.01, 1.0.0, 2.0.33, 2.0.34pre13, 2.0.0, 2.1.101 etc.). With LSD
675 you can search Linux kernel (fulltext, macros, types, functions
676 and variables) and LSD can generate patches for you on the fly
677 (files, directories or kernel)".
678
679 * Name: "Linux Kernel Source Reference"
680 Author: Thomas Graichen.
681 URL: http://innominate.org/~graichen/projects/lksr/
682 Keywords: CVS, web, cvsweb, browsing source code.
683 Description: Web interface to a CVS server with the kernel
684 sources. "Here you can have a look at any file of the Linux kernel
685 sources of any version starting from 1.0 up to the (daily updated)
686 current version available. Also you can check the differences
687 between two versions of a file".
688
689 * Name: "Cross-Referencing Linux"
690 URL: http://lxr.linux.no/source/
691 Keywords: Browsing source code.
692 Description: Another web-based Linux kernel source code browser.
693 Lots of cross references to variables and functions. You can see
694 where they are defined and where they are used.
695
696 * Name: "Linux Weekly News"
697 URL: http://lwn.net
698 Keywords: latest kernel news.
699 Description: The title says it all. There's a fixed kernel section
700 summarizing developers' work, bug fixes, new features and versions
701 produced during the week. Published every Thursday.
702
703 * Name: "Kernel Traffic"
704 URL: http://www.kerneltraffic.org/kernel-traffic/
705 Keywords: linux-kernel mailing list, weekly kernel news.
706 Description: Weekly newsletter covering the most relevant
707 discussions of the linux-kernel mailing list.
708
709 * Name: "CuTTiNG.eDGe.LiNuX"
710 URL: http://edge.kernelnotes.org
711 Keywords: changelist.
712 Description: Site which provides the changelist for every kernel
713 release. What's new, what's better, what's changed. Myrdraal reads
714 the patches and describes them. Pointers to the patches are there,
715 too.
716
717 * Name: "New linux-kernel Mailing List FAQ"
718 URL: http://www.tux.org/lkml/
719 Keywords: linux-kernel mailing list FAQ.
720 Description: linux-kernel is a mailing list for developers to
721 communicate. This FAQ builds on the previous linux-kernel mailing
722 list FAQ maintained by Frohwalt Egerer, who no longer maintains
723 it. Read it to see how to join the mailing list. Dozens of
724 interesting questions regarding the list, Linux, developers (who
725 is ...?), terms (what is...?) are answered here too. Just read it.
726
727 * Name: "Linux Virtual File System"
728 Author: Peter J. Braam.
729 URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs/
730 Keywords: slides, VFS, inode, superblock, dentry, dcache.
731 Description: Set of slides, presumably from a presentation on the
732 Linux VFS layer. Covers version 2.1.x, with dentries and the
733 dcache.
734
735 * Name: "Gary's Encyclopedia - The Linux Kernel"
736 Author: Gary (I suppose...).
737 URL: http://members.aa.net/~swear/pedia/kernel.html
738 Keywords: links, not found here?.
739 Description: Gary's Encyclopedia exists to allow the rapid finding
740 of documentation and other information of interest to GNU/Linux
741 users. It has about 4000 links to external pages in 150 major
742 categories. This link is for kernel-specific links, documents,
743 sites... Look there if you could not find here what you were
744 looking for.
745
746 * Name: "The home page of Linux-MM"
747 Author: The Linux-MM team.
748 URL: http://linux-mm.org/
749 Keywords: memory management, Linux-MM, mm patches, TODO, docs,
750 mailing list.
751 Description: Site devoted to Linux Memory Management development.
752 Memory related patches, HOWTOs, links, mm developers... Don't miss
753 it if you are interested in memory management development!
754
755 * Name: "Kernel Newbies IRC Channel"
756 URL: http://www.kernelnewbies.org
757 Keywords: IRC, newbies, channel, asking doubts.
758 Description: #kernelnewbies on irc.openprojects.net. From the web
759 page: "#kernelnewbies is an IRC network dedicated to the 'newbie'
760 kernel hacker. The audience mostly consists of people who are
761 learning about the kernel, working on kernel projects or
762 professional kernel hackers that want to help less seasoned kernel
763 people. [...] #kernelnewbies is on the Open Projects IRC Network,
764 try irc.openprojects.net or irc.<country>.openprojects.net as your
765 server and then /join #kernelnewbies". It also hosts articles,
766 documents, FAQs...
767
768 * Name: "linux-kernel mailing list archives and search engines"
769 URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html
770 URL: http://www.kernelnotes.org/lnxlists/linux-kernel/
771 URL: http://www.geocrawler.com
772 Keywords: linux-kernel, archives, search.
773 Description: Some of the linux-kernel mailing list archivers. If
774 you have a better/another one, please let me know.
775 _________________________________________________________________
776
777 Document last updated on Thu Jun 28 15:09:39 CEST 2001