1.. _kernel_docs: 2 3Index of Further Kernel Documentation 4===================================== 5 6The need for a document like this one became apparent in the linux-kernel 7mailing list as the same questions, asking for pointers to information, 8appeared again and again. 9 10Fortunately, as more and more people get to GNU/Linux, more and more get 11interested in the Kernel. But reading the sources is not always enough. It 12is easy to understand the code, but miss the concepts, the philosophy and 13design decisions behind this code. 14 15Unfortunately, not many documents are available for beginners to start. 16And, even if they exist, there was no "well-known" place which kept track 17of them. These lines try to cover this lack. 18 19PLEASE, if you know any paper not listed here or write a new document, 20include a reference to it here, following the kernel's patch submission 21process. Any corrections, ideas or comments are also welcome. 22 23All documents are cataloged with the following fields: the document's 24"Title", the "Author"/s, the "URL" where they can be found, some "Keywords" 25helpful when searching for specific topics, and a brief "Description" of 26the Document. 27 28.. note:: 29 30 The documents on each section of this document are ordered by its 31 published date, from the newest to the oldest. The maintainer(s) should 32 periodically retire resources as they become obsolete or outdated; with 33 the exception of foundational books. 34 35Docs at the Linux Kernel tree 36----------------------------- 37 38The Sphinx books should be built with ``make {htmldocs | pdfdocs | epubdocs}``. 39 40 * Name: **linux/Documentation** 41 42 :Author: Many. 43 :Location: Documentation/ 44 :Keywords: text files, Sphinx. 45 :Description: Documentation that comes with the kernel sources, 46 inside the Documentation directory. Some pages from this document 47 (including this document itself) have been moved there, and might 48 be more up to date than the web version. 49 50On-line docs 51------------ 52 53 * Title: **Linux Kernel Mailing List Glossary** 54 55 :Author: various 56 :URL: https://kernelnewbies.org/KernelGlossary 57 :Date: rolling version 58 :Keywords: glossary, terms, linux-kernel. 59 :Description: From the introduction: "This glossary is intended as 60 a brief description of some of the acronyms and terms you may hear 61 during discussion of the Linux kernel". 62 63 * Title: **The Linux Kernel Module Programming Guide** 64 65 :Author: Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram, 66 Jim Huang. 67 :URL: https://sysprog21.github.io/lkmpg/ 68 :Date: 2021 69 :Keywords: modules, GPL book, /proc, ioctls, system calls, 70 interrupt handlers . 71 :Description: A very nice GPL book on the topic of modules 72 programming. Lots of examples. Currently the new version is being 73 actively maintained at https://github.com/sysprog21/lkmpg. 74 75Published books 76--------------- 77 78 * Title: **Practical Linux System Administration: A Guide to Installation, Configuration, and Management, 1st Edition** 79 80 :Author: Kenneth Hess 81 :Publisher: O'Reilly Media 82 :Date: May, 2023 83 :Pages: 246 84 :ISBN: 978-1098109035 85 :Notes: System administration 86 87 * Title: **Linux Kernel Debugging: Leverage proven tools and advanced techniques to effectively debug Linux kernels and kernel modules** 88 89 :Author: Kaiwan N Billimoria 90 :Publisher: Packt Publishing Ltd 91 :Date: August, 2022 92 :Pages: 638 93 :ISBN: 978-1801075039 94 :Notes: Debugging book 95 96 * Title: **Linux Kernel Programming: A Comprehensive Guide to Kernel Internals, Writing Kernel Modules, and Kernel Synchronization** 97 98 :Author: Kaiwan N Billimoria 99 :Publisher: Packt Publishing Ltd 100 :Date: March, 2021 (Second Edition published in 2024) 101 :Pages: 754 102 :ISBN: 978-1789953435 (Second Edition ISBN is 978-1803232225) 103 104 * Title: **Linux Kernel Programming Part 2 - Char Device Drivers and Kernel Synchronization: Create user-kernel interfaces, work with peripheral I/O, and handle hardware interrupts** 105 106 :Author: Kaiwan N Billimoria 107 :Publisher: Packt Publishing Ltd 108 :Date: March, 2021 109 :Pages: 452 110 :ISBN: 978-1801079518 111 112 * Title: **Linux System Programming: Talking Directly to the Kernel and C Library** 113 114 :Author: Robert Love 115 :Publisher: O'Reilly Media 116 :Date: June, 2013 117 :Pages: 456 118 :ISBN: 978-1449339531 119 :Notes: Foundational book 120 121 * Title: **Linux Kernel Development, 3rd Edition** 122 123 :Author: Robert Love 124 :Publisher: Addison-Wesley 125 :Date: July, 2010 126 :Pages: 440 127 :ISBN: 978-0672329463 128 :Notes: Foundational book 129 130.. _ldd3_published: 131 132 * Title: **Linux Device Drivers, 3rd Edition** 133 134 :Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman 135 :Publisher: O'Reilly & Associates 136 :Date: 2005 137 :Pages: 636 138 :ISBN: 0-596-00590-3 139 :Notes: Foundational book. Further information in 140 http://www.oreilly.com/catalog/linuxdrive3/ 141 PDF format, URL: https://lwn.net/Kernel/LDD3/ 142 143 * Title: **The Design of the UNIX Operating System** 144 145 :Author: Maurice J. Bach 146 :Publisher: Prentice Hall 147 :Date: 1986 148 :Pages: 471 149 :ISBN: 0-13-201757-1 150 :Notes: Foundational book 151 152Miscellaneous 153------------- 154 155 * Name: **Cross-Referencing Linux** 156 157 :URL: https://elixir.bootlin.com/ 158 :Keywords: Browsing source code. 159 :Description: Another web-based Linux kernel source code browser. 160 Lots of cross references to variables and functions. You can see 161 where they are defined and where they are used. 162 163 * Name: **Linux Weekly News** 164 165 :URL: https://lwn.net 166 :Keywords: latest kernel news. 167 :Description: The title says it all. There's a fixed kernel section 168 summarizing developers' work, bug fixes, new features and versions 169 produced during the week. 170 171 * Name: **The home page of Linux-MM** 172 173 :Author: The Linux-MM team. 174 :URL: https://linux-mm.org/ 175 :Keywords: memory management, Linux-MM, mm patches, TODO, docs, 176 mailing list. 177 :Description: Site devoted to Linux Memory Management development. 178 Memory related patches, HOWTOs, links, mm developers... Don't miss 179 it if you are interested in memory management development! 180 181 * Name: **Kernel Newbies IRC Channel and Website** 182 183 :URL: https://www.kernelnewbies.org 184 :Keywords: IRC, newbies, channel, asking doubts. 185 :Description: #kernelnewbies on irc.oftc.net. 186 #kernelnewbies is an IRC network dedicated to the 'newbie' 187 kernel hacker. The audience mostly consists of people who are 188 learning about the kernel, working on kernel projects or 189 professional kernel hackers that want to help less seasoned kernel 190 people. 191 #kernelnewbies is on the OFTC IRC Network. 192 Try irc.oftc.net as your server and then /join #kernelnewbies. 193 The kernelnewbies website also hosts articles, documents, FAQs... 194 195 * Name: **linux-kernel mailing list archives and search engines** 196 197 :URL: https://subspace.kernel.org 198 :URL: https://lore.kernel.org 199 :Keywords: linux-kernel, archives, search. 200 :Description: Some of the linux-kernel mailing list archivers. If 201 you have a better/another one, please let me know. 202 203 * Name: **The Linux Foundation YouTube channel** 204 205 :URL: https://www.youtube.com/user/thelinuxfoundation 206 :Keywords: linux, videos, linux-foundation, youtube. 207 :Description: The Linux Foundation uploads video recordings of their 208 collaborative events, Linux conferences including LinuxCon, and 209 other original research and content related to Linux and software 210 development. 211 212Rust 213---- 214 215 * Title: **Rust for Linux** 216 217 :Author: various 218 :URL: https://rust-for-linux.com/ 219 :Date: rolling version 220 :Keywords: glossary, terms, linux-kernel, rust. 221 :Description: From the website: "Rust for Linux is the project adding 222 support for the Rust language to the Linux kernel. This website is 223 intended as a hub of links, documentation and resources related to 224 the project". 225 226 * Title: **Learn Rust the Dangerous Way** 227 228 :Author: Cliff L. Biffle 229 :URL: https://cliffle.com/p/dangerust/ 230 :Date: Accessed Sep 11 2024 231 :Keywords: rust, blog. 232 :Description: From the website: "LRtDW is a series of articles 233 putting Rust features in context for low-level C programmers who 234 maybe don’t have a formal CS background — the sort of people who 235 work on firmware, game engines, OS kernels, and the like. 236 Basically, people like me.". It illustrates line-by-line 237 conversions from C to Rust. 238 239 * Title: **The Rust Book** 240 241 :Author: Steve Klabnik and Carol Nichols, with contributions from the 242 Rust community 243 :URL: https://doc.rust-lang.org/book/ 244 :Date: Accessed Sep 11 2024 245 :Keywords: rust, book. 246 :Description: From the website: "This book fully embraces the 247 potential of Rust to empower its users. It’s a friendly and 248 approachable text intended to help you level up not just your 249 knowledge of Rust, but also your reach and confidence as a 250 programmer in general. So dive in, get ready to learn—and welcome 251 to the Rust community!". 252 253 * Title: **Rust for the Polyglot Programmer** 254 255 :Author: Ian Jackson 256 :URL: https://www.chiark.greenend.org.uk/~ianmdlvl/rust-polyglot/index.html 257 :Date: December 2022 258 :Keywords: rust, blog, tooling. 259 :Description: From the website: "There are many guides and 260 introductions to Rust. This one is something different: it is 261 intended for the experienced programmer who already knows many 262 other programming languages. I try to be comprehensive enough to be 263 a starting point for any area of Rust, but to avoid going into too 264 much detail except where things are not as you might expect. Also 265 this guide is not entirely free of opinion, including 266 recommendations of libraries (crates), tooling, etc.". 267 268 * Title: **Fasterthanli.me** 269 270 :Author: Amos Wenger 271 :URL: https://fasterthanli.me/ 272 :Date: Accessed Sep 11 2024 273 :Keywords: rust, blog, news. 274 :Description: From the website: "I make articles and videos about how 275 computers work. My content is long-form, didactic and exploratory 276 — and often an excuse to teach Rust!". 277 278 * Title: **Comprehensive Rust** 279 280 :Author: Android team at Google 281 :URL: https://google.github.io/comprehensive-rust/ 282 :Date: Accessed Sep 13 2024 283 :Keywords: rust, blog. 284 :Description: From the website: "The course covers the full spectrum 285 of Rust, from basic syntax to advanced topics like generics and 286 error handling". 287 288 * Title: **The Embedded Rust Book** 289 290 :Author: Multiple contributors, mostly Jorge Aparicio 291 :URL: https://docs.rust-embedded.org/book/ 292 :Date: Accessed Sep 13 2024 293 :Keywords: rust, blog. 294 :Description: From the website: "An introductory book about using 295 the Rust Programming Language on "Bare Metal" embedded systems, 296 such as Microcontrollers". 297 298 * Title: **Experiment: Improving the Rust Book** 299 300 :Author: Cognitive Engineering Lab at Brown University 301 :URL: https://rust-book.cs.brown.edu/ 302 :Date: Accessed Sep 22 2024 303 :Keywords: rust, blog. 304 :Description: From the website: "The goal of this experiment is to 305 evaluate and improve the content of the Rust Book to help people 306 learn Rust more effectively.". 307 308 * Title: **New Rustacean** (podcast) 309 310 :Author: Chris Krycho 311 :URL: https://newrustacean.com/ 312 :Date: Accessed Sep 22 2024 313 :Keywords: rust, podcast. 314 :Description: From the website: "This is a podcast about learning 315 the programming language Rust—from scratch! Apart from this spiffy 316 landing page, all the site content is built with Rust's own 317 documentation tools.". 318 319 * Title: **Opsem-team** (repository) 320 321 :Author: Operational semantics team 322 :URL: https://github.com/rust-lang/opsem-team/tree/main 323 :Date: Accessed Sep 22 2024 324 :Keywords: rust, repository. 325 :Description: From the README: "The opsem team is the successor of 326 the unsafe-code-guidelines working group and responsible for 327 answering many of the difficult questions about the semantics of 328 unsafe Rust". 329 330 * Title: **You Can't Spell Trust Without Rust** 331 332 :Author: Alexis Beingessner 333 :URL: https://repository.library.carleton.ca/downloads/1j92g820w?locale=en 334 :Date: 2015 335 :Keywords: rust, master, thesis. 336 :Description: This thesis focuses on Rust's ownership system, which 337 ensures memory safety by controlling data manipulation and 338 lifetime, while also highlighting its limitations and comparing it 339 to similar systems in Cyclone and C++. 340 341 * Name: **Linux Plumbers (LPC) 2024 Rust presentations** 342 343 :Title: Rust microconference 344 :URL: https://lpc.events/event/18/sessions/186/#20240918 345 :Title: Rust for Linux 346 :URL: https://lpc.events/event/18/contributions/1912/ 347 :Title: Journey of a C kernel engineer starting a Rust driver project 348 :URL: https://lpc.events/event/18/contributions/1911/ 349 :Title: Crafting a Linux kernel scheduler that runs in user-space 350 using Rust 351 :URL: https://lpc.events/event/18/contributions/1723/ 352 :Title: openHCL: A Linux and Rust based paravisor 353 :URL: https://lpc.events/event/18/contributions/1956/ 354 :Keywords: rust, lpc, presentations. 355 :Description: A number of LPC talks related to Rust. 356 357 * Name: **The Rustacean Station Podcast** 358 359 :URL: https://rustacean-station.org/ 360 :Keywords: rust, podcasts. 361 :Description: A community project for creating podcast content for 362 the Rust programming language. 363 364------- 365 366This document was originally based on: 367 368 https://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html 369 370and written by Juan-Mariano de Goyeneche 371