blob: b53bccbd97270f37871964fda6ba46b0f706365a [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.
Randy Dunlap98766fb2005-11-21 21:32:31 -0800199 URL: http://users.evitech.fi/~tk/rtos/writing_linux_device_d.html
Linus Torvalds1da177e2005-04-16 15:20:36 -0700200 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.
Randy Dunlap98766fb2005-11-21 21:32:31 -0800287 URL: http://tldp.org/LDP/lkmpg/2.6/html/index.html
Linus Torvalds1da177e2005-04-16 15:20:36 -0700288 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
Linus Torvalds1da177e2005-04-16 15:20:36 -0700293 * 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.
Randy Dunlap98766fb2005-11-21 21:32:31 -0800308 Location: in kernel tree, Documentation/DocBook/kernel-hacking/
309 (must be built as "make {htmldocs | psdocs | pdfdocs})
Linus Torvalds1da177e2005-04-16 15:20:36 -0700310 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
Randy Dunlap98766fb2005-11-21 21:32:31 -0800323 * 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
Linus Torvalds1da177e2005-04-16 15:20:36 -0700326 Keywords: ALSA, sound, soundcard, driver, lowlevel, hardware.
327 Description: Advanced Linux Sound Architecture for developers,
Randy Dunlap98766fb2005-11-21 21:32:31 -0800328 both at kernel and user-level sides. ALSA is the Linux kernel
329 sound architecture in the 2.6 kernel version.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700330
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"
Randy Dunlap98766fb2005-11-21 21:32:31 -0800360 Author: various
361 URL: http://kernelnewbies.org/glossary/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700362 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.
Randy Dunlap98766fb2005-11-21 21:32:31 -0800369 Location: in kernel tree, Documentation/DocBook/kernel-locking/
370 (must be built as "make {htmldocs | psdocs | pdfdocs})
Linus Torvalds1da177e2005-04-16 15:20:36 -0700371 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.
Randy Dunlap98766fb2005-11-21 21:32:31 -0800480 URL: http://www.edn.com/article/CA46968.html
Linus Torvalds1da177e2005-04-16 15:20:36 -0700481 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
Randy Dunlap98766fb2005-11-21 21:32:31 -0800488 URL: http://www.edn.com/article/CA46998.html
Linus Torvalds1da177e2005-04-16 15:20:36 -0700489
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.
Randy Dunlap98766fb2005-11-21 21:32:31 -0800519 URL: http://packetstormsecurity.org/docs/hack/LKM_HACKING.html
Linus Torvalds1da177e2005-04-16 15:20:36 -0700520 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
Randy Dunlap98766fb2005-11-21 21:32:31 -0800527 kernels.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700528
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/
Randy Dunlap98766fb2005-11-21 21:32:31 -0800546
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/
556
Linus Torvalds1da177e2005-04-16 15:20:36 -0700557 * 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"
Randy Dunlap98766fb2005-11-21 21:32:31 -0800765 URL: http://vger.kernel.org/vger-lists.html
Linus Torvalds1da177e2005-04-16 15:20:36 -0700766 URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html
Randy Dunlap98766fb2005-11-21 21:32:31 -0800767 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/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700771 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
Randy Dunlap98766fb2005-11-21 21:32:31 -0800776 Document last updated on Sat 2005-NOV-19