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