Skip to content

Latest commit

 

History

History
529 lines (385 loc) · 46.9 KB

Further_Reading.md

File metadata and controls

529 lines (385 loc) · 46.9 KB

Further Reading

For the book "Linux Kernel Programming", Kaiwan N Billimoria, Packt (Mar 2021).

Book GitHub repo: https://github.com/PacktPublishing/Linux-Kernel-Programming

Here, we present, in a chapter-wise format, additional online as well as book references. We feel that these will help you, the reader, in digging deeper into topics, or gaining additional views/information, or both. We definitely recommend you browse through the provided references. Also, you will find that some resources are repeated across chapters; we leave it this way so that you can gain all required resources in one place (and chapter-wise). (Obviously, these reference articles/blogs/etc are provided "as-is"; we cannot vouch for their correctness or validity).

For your convenience, below are chapter-wise links to the Further Reading notes:

Don't forget: The companion book 'Linux Kernel Programming (Part 2): Writing character device drivers: Learn to work with user-kernel interfaces, handle peripheral I/O & hardware interrupts' is available as well! (Hey, the ebook is free!) - It's opensource GitHub repo is here.


Besides the Further Reading resource specified chapter-wise, be sure to refer to the "special" section below entitled Generic online and book resources : miscellaneous, very useful! These links and books are considered to be useful throughout your journey through this book and after.

Generic online and book resources : miscellaneous, very useful

A few excellent books that come to mind (specific books on the Linux kernel and writing Linux device drivers are mentioned in the appropriate chapter's Further reading section):

  • The Mythical Man Month, Frederick P Brooks

  • The Art of Unix Programming, Eric S Raymond (AW)

  • Programming Pearls, Jon Bentley

  • The Practice of Programming, Brian Kernighan and Rob Pike

  • The Pragmatic Programmer: From Journeyman to Master, Hunt and Thomas

  • The Joy of Linux, Hall and Proffitt

  • Hands-On System Programming with Linux, Kaiwan N Billimoria

  • Unix Network Programming, W. Richard Stevens

  • Unix Systems Programming: Communication, Concurrency and Threads, Robbins and Robbins

  • Secure Programming for Linux and Unix HOWTO, David Wheeler

  • In general an excellent in-depth technical article: SO YOU WANT TO BUILD AN EMBEDDED LINUX SYSTEM?, Jay Carlson, Oct 2020 ; it covers an introduction to the whys and why-nots of using Linux on an embedded system, hardware and software design workflow, as well as a pretty detailed rundown on 10 CPUs/boards that run embedded Linux (with benchmarks)

  • Julia Evans' blog and zines:

  • Lowlevel programming University, gurugio

  • Tip (reprodcued from Chapter 5): "Is there a really practical hands-on tip, an almost guaranteed way to become a kernel hacker? Of course, keep reading this book! Ha ha, yes, besides, do partake in the simply awesome Eudyptula Challenge. Hang on, it's - very unfortuantely, and as of this writing - closed down. Fear not, here's a site with all the challenges posted (and the solutions, don't cheat!); do check it out and try the challenges."


Chapter 1, Kernel Development Workspace Setup - Further Reading

Resources on setting up a Linux guest using VirtualBox on a Windows host:

Good resources on toolchains:

Some useful tooling, drivers, and so on, created by myself:

  • The procmap utility - view any process's virtual address space fully (both user+kernel VAS): procmap
  • Scripts, tools, utils, code : usefulsnips
  • SEALS : Simple Embedded Arm Linux System
  • device-memory-readwrite : Read/write pretty much any memory location (RAM or hardware IO memory) on a device or PC

Emulating a Raspberry Pi: - Emulating a Raspberry Pi on Linux

Code browsers - Ctags Tutorial - The Vim/Cscope tutorial


Chapter 2, Building the Linux Kernel From Source - Further Reading


Chapter 3, Building the Linux Kernel From Source - Further Reading


Chapter 4, Writing your first Kernel Module-LKMs Part 1 - Further Reading


Chapter 5, Writing your first Kernel Module-LKMs Part 2 - Further Reading


Chapter 6, Kernel Internals Essentials - Processes and Threads - Further Reading


Chapter 7, Memory Management Internals Essentials - Further Reading


Chapter 8, Kernel Memory Allocation for Module Authors, Part 1 - Further Reading


Chapter 9, Kernel Memory Allocation for Module Authors, Part 2 - Further Reading


Chapter 10, The CPU Scheduler, Part 1 - Further Reading


Chapter 11, The CPU Scheduler, Part 2 - Further Reading


Chapter 12, Kernel Synchronization, Part 1 - Further Reading


Chapter 13, Kernel Synchronization, Part 2 - Further Reading

[Top]

[End Doc]